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;
}

浙公网安备 33010602011771号