• IOS-sqlite3


    一.数据库基本知识

     1.表-table  

       字段-属性-列-column

       纪录-行-row

     2.基本类型

       integer:整型

       real:浮点型

       text:文本字符串

       blob:二进制数据

       sqlite可以设定为无类型参数。

     3.SQL数据库不分大小写

    二.SQL语句

       结构化查询语言,是对关系型数据库的数据进行定义和操作的语言(增删改查,CRUD)。

        1.数据库定义语句:DDL(Data Definition Language)

            包括createdrop等操作(创建和删除)

        CREAT TABLE IF NOT EXISTS  表名(字段1 字段类型,字段名称2 字段类型,...);

               例如:CREAT TABLE IF NOT EXISTS t_student(name text,age integer);

        DROP TABLE IF EXISTS 表名

        例如:DROP TABLE IF ESISTS t_student    

        2.数据库操作语句:DML(Data Manipulation Language)

            包括insertupdate,delete等操作(添加,修改,删除)

         INSERT INTO 表名(字段1,字段2,...)values(字段1的值,字段2的值,...);

        例如:INSERT INTO t_shop(name,price,left_count)VALUES('one',100.1,500);

         UPDATA 表名 SET 字段1 = 字段1的值,字段2 = 字段2的值,...;

        例如:UPDATA t_student SET name = 'bob',age =25;//这里会把全部都改了

         DELETE FROM 表名;

        例如:DELETE FROM t_student;WHERE ...

        3.数据库查询语句:DQL(Data Query Language)

            可用于查询获得表中的数据,关键字select

            其他常用关键字有where,order by,group byhaving

        排序: SELECT * FROM t_student ORDER BY age ASC/DESC(升序/降序);

        limit:select * from 表名 limit 数值1,数值2;//跳过前面的数值1条,查找后面的数值2条

      4.约束

       主键(primary key):用来唯一表示某一条记录,可以是多个

          creat table if not exists t_student (id integer primary key , name text, age integer);//可以自增长

         外键约束:利用外键可以建立表与表的关系,外键一般加在多的表。

        create table t_student(id interger primary key autoincrement,name text,age integer, class_id interger,constraint    "fk_student_rel_class" FOREIGN KEY("class") REFERENCE "t_class"("id"))

       其他约束:

        字段 not null   ,不能为空

        字段 uinque   ,不能重复

        字段 default   ,默认为

        CREAT TABLE IF NOT EXISTS  表名(字段1 字段类型 not null uinque,字段名称2 字段类型,...);

     三.sqlite3具体应用

      1.创建数据库和表

      @property(nonatomic, assign) sqlite3 *db;

      //打开数据库 

      NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]stringByAppendingPathComponent:@"mydb.db"];

      

      int tem =  sqlite3_open(filename.UTF8String, &_db);

      if(tem == SQLITE_OK)

      {

         //创建表格

        const char *sql = "create table if not exists t_student (id integer primary key,name text not null ,age integer)";

        char *errmsg = NULL;

        //第二个参数是数据库操作语句

        sqlite3_exec(self.db, sql, NULL, NULL, &errmsg)

        if(errmsg){NSLog(@"创表失败%s",errmsg);}

      }else{

        NSLog(@"打开失败");

      }

      2.插入数据

       NSString *sql = "INSERT INTO t_student(name,age)VALES('bob',25)";

         sqlite3_exec(self.db,sql.UTF8String,NULL,NULL,NULL);

      3.查询数据

       NSString *sql = "select * from t_student";

        //取出查询结果

         sqlite3_stmt *stmt = NULL;

         int tem = sqlite3_prepare_v2(self.db,sql.UTF8String,-1,&stmt,NULL);

       if(tem == SQLITE_OK)

         {

         where(sqlite3_setp(stmt) == SQLITE_ROW){//成功取出一条数据

           const unsigned char *name = sqlite3_column_text(stmt,0);//取出第0数据

           NSLog(@"%@",[NSString stringWithUTF8String:name]);     

         }

       }

      关闭数据库

      sqlite3_close()

      

       

        

  • 相关阅读:
    LFYZ-OJ ID: 1008 求A/B高精度值
    高精度运算
    【2018国庆雅礼集训】部分题解
    【模板】倍增求LCA
    Luogu1516 青蛙的约会
    loj #10043. 「一本通 2.2 例 1」剪花布条
    我太菜了
    Luogu1280 尼克的任务
    Luogu1091 合唱队形
    Luogu1006 传纸条
  • 原文地址:https://www.cnblogs.com/zhouwenbo/p/4450997.html
Copyright © 2020-2023  润新知