数据库(SQLite)


    // 数据库中组织(存储)数据是按照一定的数据格式(/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 条数据!

    }

}

在OC代码中的集成

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







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值