zoukankan      html  css  js  c++  java
  • SQlite数据库相关语法知识

     SQL语句的特点:不区分大小写(比如数据库认为user和UsEr是一样的)

                            每条语句都必须以分号 ; 结尾

    SQL中的常用关键字有:select、insert、update、delete、from、create、where、desc、order、by、group、table、  

                            alter、view、index等等

    数据库中不可以使用关键字来命名表、字段

    1、SQLite3是一款开源的嵌入式关系型数据库,可移植性好、易使用、内存开销比较小
         SQLite3是无类型的,意味着你可以保存任何类型的数据到任意表的任意字段中
    2、 SQLite3常用的5种数据类型:text(文本)、integer(整型)、real(浮点值)、blob(二进制)
    3、 在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件
    4、 创建或打开数据库

          // path为:~/Documents/person.db

             sqlite3 *db;

             int  result = sqlite3_open([path UTF8String], &db);

       代码解析:sqlite3_open()将根据文件路径打开数据库,如果不存在,则会创建一个新的数据库。如果result等于常量SQLITE_OK,则表示成功打开数据库。数据库文件的路径必须以C字符串(而非NSString)传入

          关闭数据库:sqlite3_close(db);
    5、执行创表语句

        char *errorMsg;  // 用来存储错误信息 

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

        int result = sqlite3_exec(db, sql, NULL, NULL, &errorMsg);

        代码解析:sqlite3_exec()可以执行任何SQL语句,比如创表、更新、插入和删除操作。但是一般不用它执行查询语句,因为它不会返回查询到的数据

         sqlite3_exec()还可以执行的语句:
                  ①开启事务:begin transaction;
                  ②回滚事务:rollback;
                  ③提交事务:commit;
     
    6、基本操作
         ①创建表:
            (1) table if not exists 表名 (字段名1 字段类型1, 字段名2 字段类型2, …) ;
            (2)create table 表名 (字段名1 字段类型1, 字段名2 字段类型2, …) ;
             特别说明:(1)就算声明为integer类型,还是能存储字符串文本(主键除外)
                           (2)建表时声明啥类型或者不声明类型都可以,也就意味着创表语句可 以这么写:create table t_student(name, age);(为了保持良好的编程规范、方便程序员之间的交流,编写建表语句的时候最好加上每个字段的具体类型)
         ②删除表:
             (1)drop table 表名 ;
             (2)drop table if exists 表名 ;
         ③插入数据:
               insert into 表名 (字段1, 字段2, …) values (字段1的值, 字段2的值, …) ;
               注意:数据库中的字符串内容应该用单引号 ’ 括住
         ④更新数据:
               update 表名 set 字段1 = 字段1的值, 字段2 = 字段2的值, … ;
         ⑤删除数据:
                  delete from 表名 ;
           ⑥条件语句的常见格式:
                where 字段 = 某个值 ;   // 不能用两个 =
                where 字段 is 某个值 ;   // is 相当于 =
                where 字段 != 某个值 ;
                where 字段 is not 某个值 ;   // is not 相当于 !=
                where 字段 > 某个值 ;
                where 字段1 = 某个值 and 字段2 > 某个值 ;  // and相当于C语言中的 &&
                where 字段1 = 某个值 or 字段2 = 某个值 ;  //  or 相当于C语言中的 ||
           ⑦查询语句:
                select 字段1, 字段2, … from 表名 ;
                select * from 表名;   //  查询所有的字段
           ⑧起别名:格式(字段和表都可以起别名)
                select 字段1 别名 , 字段2 别名 , … from 表名 别名 ;
                select 字段1 别名, 字段2 as 别名, … from 表名 as 别名 ;
                select 别名.字段1, 别名.字段2, … from 表名 别名 ;

          ⑨计算记录的数量:格式

                select count (字段) from 表名 ;
                select count ( * ) from 表名 ;
            ⑩排序:
                查询出来的结果可以用order by进行排序
                select * from t_student order by 字段 ;
                select * from t_student order by age ;
                默认是按照升序排序(由小到大),也可以变为降序(由大到小)
                select * from t_student order by age desc ;  //降序
                select * from t_student order by age asc ;   // 升序(默认)
                也可以用多个字段进行排序
                select * from t_student order by age asc, height desc ;
               先按照年龄排序(升序),年龄相等就按
    7、limit:使用limit可以精确地控制查询结果的数量,比如每次只查询10条数据
        格式:select * from 表名 limit 数值1, 数值2 ;
        示例:select * from t_student limit 4, 8 ;(可以理解为:跳过最前面4条语句,然后取8条记录)
    8、建表的约束:
         建表时可以给特定的字段设置一些约束条件,常见的约束有
         not null :规定字段的值不能为null
         unique :规定字段的值必须唯一
         default :指定字段的默认值(建议:尽量给字段设定严格的约束,以保证数据的规范性)
     
     
  • 相关阅读:
    tail命令语法
    正则表达式示例
    HTTP状态码对照表 HTTP response codes
    linux 源的配置更新
    shell基本语法
    谁偷走了程序员的时间??
    Spring Data JPA 简单查询-接口方法
    GET和POST两种基本请求方法的区别
    您是怎样度过人生的低潮期的
    树莓派中Docker部署.Net Core 3.1 (一)
  • 原文地址:https://www.cnblogs.com/angongIT/p/3797820.html
Copyright © 2011-2022 走看看