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;

}

原文地址:https://www.cnblogs.com/deng37s/p/5155696.html