数据库(SQLite)
来源:互联网 发布:网页源代码加密js 编辑:程序博客网 时间:2024/06/03 13:17
// 数据库中组织(存储)数据是按照一定的数据格式(树/B树)来存储的!树形结构的数据可以很方便/快捷的查询到数据!
// iOS(移动端)数据库和服务器端数据库有没有关系!
// 如果 app 本地需要缓存大量的数据,那么就在本地(磁盘/沙盒)中使用数据库来缓存数据!
// 移动端数据库 比较轻量级!
// SQLite :是使用在移动端(iOS/安卓/WP/黑莓)的数据库
//应用场景: 购物车(离线查看!)
数据库工作过程
{
1.数据如何存入数据库!
{
1.创建一张表.(根据存储的数据特点,创建对应的表!)
2.将数据存储在"表"中
}
2.数据库使用
{
1. database(DB) File:数据库文件路径! 数据库中的所有数据都保存在这个文件中!
数据库(SQL)语句是不区分大小写的!如果是系统的关键字大写!自己的就用小写!
2. "表名"规范:以 t_/T_ 开头,后面跟表名!
3.插入数据!
}
DDL语句 : "建表"和 "删表"
{
"建表" :CREATE TABLE IF NOT EXISTS t_class (id integer, numbers text);
//如果表不存在,才会创建!表存在,不报错!
"删表" :"DROP TABLE IF EXISTS t_class;"
//如果表存在,才会删除!表不存在,不会报错!
注意:
"主键" :主键用来标记数据库表中唯一的一条数据!一般在定义主键的时候,主键值由系统自动生成!
主键的类型 integter 类型,自动增长!
"建表"的最终语句:
"CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT , name text , score integer ,age integer);"
PRIMARY KEY :指定主键.默认主键约束不能为空.
AUTOINCREMENT :自动增长.
}
数据库操作: CRUD 操作! "增删改查"! ---- 操作的都是"表"
DML语句 : "增" "删" "改"
{
"增":往表中插入数据:
"INSERT INTO t_student (name,score,age) VALUES ('jsak',80,21);"
//打印: 会影响一行数据!
"删":从表中删除数据:
DELETE FROM t_student;
//默认会删除表中的所有数据, 不会删除表;
//条件删除:
"DELETE FROM t_student WHERE score > 90;"
DELETE FROM t_student WHERE name = 'jsak';
"改" :更新数据!
"UPDATE t_student SET age = 18 WHERE age < 18;"
//将年龄小于 18 岁的 age 统统改为 18;
}
DQL 语句 :"查询"语句 :查询到的结果会以表的形式返回/会查询到一个结果集.
{
SELECT * FROM t_student;
//从表t_student 中取出所有数据!
SELECT name,score FROM t_student;
//从表t_student 中取出字段为 name 和 score 的所有数据!
SELECT name,score FROM t_student LIMIT 5 ,5;
// LIMIT 5 ,5 :取出数据的限制条件,隔过前5条数据,取后面的5条!
// LIMIT :限制单次取出数据的数据量!
SELECT name,score FROM t_student WHERE score > 81 LIMIT 2;
//附带条件语句的查询语句!
"SELECT name,score FROM t_student WHERE score > 81 ORDER BY score DESC LIMIT 10;"
//将分数 > 81 的数据取出来,并且降序排序!单次查询做多取出 10 条数据!
}
}
NSString *filePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;
//拼接数据库路径
filePath = [filePath stringByAppendingString:@"/student.sqlite"];
//打开数据库!
// 1.创建数据库实例.
FMDatabase *db = [FMDatabase databaseWithPath:filePath];
// 2.打开数据库
BOOL is_yes = [db open];
if (is_yes) {
NSLog(@"数据库打开成功!");
//查询数据!
// 1.查询数据的 sql语句.
NSString *sql = @"SELECT * FROM t_student WHERE score > 60 ORDER BY score DESC LIMIT 10;";
// 2.查询数据
FMResultSet *result = [db executeQuery:sql];
//遍历结果!
while ([result next]) { //能够查询到一条数据!
//利用 FMDB 来查询数据的时候,可以通过"字段名"或者字段所在的"列数"来获取内容!
//展示数据.
int myID = [result intForColumn:@"id"];
NSString *myName = [result stringForColumn:@"name"];
int myScore = [result intForColumn:@"score"];
int myAge = [result intForColumnIndex:3];
NSLog(@"myID:%zd myName:%@ myScore:%zd myAge:%zd \n",myID,myName,myScore,myAge);
}
}
// 1.建表的 sql语句!
NSString *sql = @"CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT , name text , score integer ,age integer);";
//查询语句
NSString *sql = @"SELECT * FROM t_student WHERE score > 60 ORDER BY score DESC LIMIT 10;";
// 1. sql语句
// 删除语句
NSString *sql = @"DELETE FROM t_student;";
// 插入语句
NSString *sql = [NSString stringWithFormat:@"INSERT INTO t_student (name,score,age) VALUES ('%@',%zd,%zd);",name,score,age];
- SQLite---SQLite数据库简介
- Sqlite 数据库
- SQLite数据库
- SQlite 数据库
- SQLite数据库
- SQLite数据库
- SQLite数据库
- SQLite数据库
- SQLite数据库
- SQlite数据库
- sqlite数据库
- SQLite 数据库
- SQLite数据库
- SQLite数据库
- SQLite数据库
- SQLITE数据库
- SQLite数据库
- sqlite数据库
- 【深入理解JVM】:解析与分派
- Java之------JUnit(二)
- PaperReading:Object Co-Segmentation Based on Shortest Path Algorithm and Saliency Model
- CentOS6.5服务器端口捆绑
- POJ3177 Redundant Paths
- 数据库(SQLite)
- Hadoop之多行读取数据
- RxJava使用(二)filter 操作符
- NYOJ 三点顺序--68
- HDU1050 贪心
- IE7-span折行问题
- 多线程与线程池总结
- Android客户端多文件上传
- 策略模式:把会变化的部分取出并封装起来