SQL使用总结
#pragma mark 一. 数据定义语句 //类型: integer整型 text文本 blob二进制 real浮点 //创建表, 如果没有就创建 1. create table if not exists 表名 (字段名1 字段类型1, 字段名2 字段类型2, …) ; //如果表格存在就删除表格 2. drop table if exists 表名 ; #pragma mark 二. 数据操作语句 //将Values后面跟的值插入到前面表中对应的字段 3. insert into 表名 (字段1, 字段2, …) values (字段1的值, 字段2的值, …) ; //更新对应字段的值 4. update 表名 set 字段1 = 字段1的值, 字段2 = 字段2的值, … ; //删除表中记录 5. delete from 表名 ; #pragma mark 三. 条件语句 //当 2个条件同时成立 where 字段1 = 某个值 and 字段2 > 某个值 ; //当 2个条件有1个成立 where 字段1 = 某个值 or 字段2 = 某个值 ; #pragma mark 四. 查询语句 // 查询指定表的某写字段名的值 6. select 字段1, 字段2, … from 表名 ; // 查询一张表中所有的记录 * --> 代表所有字段 7. select * from 表名; // 查询表中记录的个数 8. select count ( * ) from 表名 ; // 查询表中所有的记录, 并按照某个字段排序 默认升序, 如果要降序, 添加DESC 9. select * from t_student order by 字段; // 用于分页查询 参数1:索引 参数2:取值的个数 // 查询记录, 根据指定的索引开始查询, 查询N个 10. select * from 表名 limit 数值1, 数值2 ; #pragma mark 五. 约束 //一般来说, not null, primary key 简单约束: not null, unique, default 主键约束: primary key 外键约束: constraint "外键名称" foreign key ("当前表要添加外键约束的字段") references "另一张表名" ("另一张表的要添加约束的字段") // 创建一个student表, 要求id字段整型, id是主键; name文本类型不能为空并且不能重复;age是整型不能为空, 默认为1 // classID整型不能为空, 给classID增加了外键约束, 外键的名称是"fk_t_student_classID_t_class_classID" // foreign key (classId)指定了当前表的某个字段要添加外键约束 // references t_class (classID)): 连接的另一张表的要添加约束的字段 11. create table t_student (id integer primary key, name text not null unique, age integer not null default 1, classID integer not null , constraint fk_t_student_classID_t_class_classID foreign key (classId) references t_class (classID)) ; #pragma mark 六. 表连接查询(多表查询)(起别名) // 查询学生表中名字和年龄, 来自学生表(别名s) 班级表(别名=c) 绑定学生表中class_id和班级表中id关联 并且班级表中的name为"hsl" 12. select s.name,s.age from t_student s, t_class c where s.class_id = c.id and c.name = ‘hl’;
//创建数据库
+ (void)initialize
{
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"data.sqlite"];
NSLog(@"%@",path);
_db = [FMDatabase databaseWithPath:path];
_db.traceExecution = YES;//追踪我们生成的sql语句
BOOL resultDB = [_db open];
if (!resultDB) {
return;
}
BOOL result_table = [_db executeUpdateWithFormat:@"CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY,name text NOT NULL ,age INTEGER NOT NULL);"];
if (result_table) {
NSLog(@"创建表成功");
}
}
//*插入数据*/
- (void)insertData:(DS_SqlModel *) dataModel;
{
BOOL insertSucc = [_db executeUpdateWithFormat:@"INSERT INTO t_student (name,age) VALUES (%@,%@);",dataModel.name,dataModel.age];
if (insertSucc) {
NSLog(@"插入成功");
}
}
//*删除数据*/
- (void)deleteData:(DS_SqlModel *) dataModel;
{
BOOL deleteSucc = [_db executeUpdateWithFormat:@"DELETE FROM t_student WHERE name = '李雷';"];
if (deleteSucc) {
NSLog(@"删除成功");
}
}
//*修改数据*/
- (void)updateData:(DS_SqlModel *) dataModel;
{
BOOL updateSucc = [_db executeUpdateWithFormat:@"UPDATE t_student SET age = 20 WHERE name ='李雷';"];
if (updateSucc) {
NSLog(@"修改成功");
}
}
//*查找数据*/
- (NSArray *)selectData;
{
NSMutableArray *mutArr = [NSMutableArray array];
FMResultSet *set = [_db executeQuery:@"SELECT * FROM t_student;"];
while (set.next) {
NSString *name = [set stringForColumn:@"name"];
int age = [set intForColumn:@"age"];
DS_SqlModel *model = [[DS_SqlModel alloc] init];
model.name = name;
model.age =@(age);
[mutArr addObject:model];
}
return mutArr.copy;
}