美文网首页
SQLite 学习笔记(一)

SQLite 学习笔记(一)

作者: 笨coco | 来源:发表于2017-03-10 11:09 被阅读8次

    一、优点

    1.不需要单独的服务器进程或操作的系统;2.不需要配置安装;3.轻量级,无外部依赖;

    二、命令 create,insert,select,update,alter,delete,drop

    CREATE:创建一个新的表,一个表的视图,或者数据库中的其他对象。

    ALTER:修改数据库中的某个已有的数据库对象,比如一个表。

    DROP:删除整个表,或者表的视图,或者数据库中的其他对象。

    INSERT:创建一条记录。

    UPDATE:修改记录。

    DELETE:删除记录。

    SELECT:从一个或多个表中检索某些记录。

    三、命令eg

    1.创建一个表,ID 作为主键,NOT NULL 表示在表中创建纪录时这些字段不能为 NULL:

    create table tablename(ID int integer primary key NOT NULL,name TEXT,past TEXT);

    2.插入部分数据到表

    insert into tablename (column1, column2, column3,...columnN) values(value1, value2, value3,...valueN);

    3.如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。SQLite 的 INSERT INTO 语法如下:

    insert into tablename values(value1, value2, value3,...valueN);

    4.用一个表来填充另一个表

    insert into tablename (column1, column2, column3,...columnN)

    select column1, column2, ...columnN

    from destablename [WHERE condition];

    5.UPDATE 查询用于修改表中已有的记录

    eg:修改表内ID=6的地址(address)

    UPDATE tablename SET address="new add" where ID=6

    四、逻辑运算符

    1. EXISTS:用于在满足一定条件的表中搜索行的存在

    2. IN:IN 运算符用于把某个值与一系列指定列表的值进行比较。

    eg:下面的 SELECT 语句列出了 AGE 的值为 25 或 27 的所有记录:

    SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );

    3. NOT IN:IN 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。

    eg:下面的 SELECT 语句列出了 AGE 的值既不是 25 也不是 27 的所有记录:

    SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );

    4. LIKE: LIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较。

    eg: NAME 以 'Ki' 开始的所有记录,'Ki' 之后的字符不做限制:

    select * from tablename where NAME like "ki%"

    LIKE通常与两个运算符一起使用(%,_),百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。

    WHERE SALARY LIKE '200%'       查找以 200 开头的任意值

    WHERE SALARY LIKE '%200%'     查找任意位置包含 200 的任意值

    WHERE SALARY LIKE '_00%'        查找第二位和第三位为 00 的任意值

    WHERE SALARY LIKE '2_%_%'     查找以 2 开头,且长度至少为 3 个字符的任意值

    WHERE SALARY LIKE '%2'            查找以 2 结尾的任意值

    WHERE SALARY LIKE '_2%3'        查找第二位为 2,且以 3 结尾的任意值

    WHERE SALARY LIKE '2___3'       查找长度为 5 位数,且以 2 开头以 3 结尾的任意值

    5. GLOB:把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。结合运算符星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。

    WHERE SALARY GLOB '200*'      查找以 200 开头的任意值    

    WHERE SALARY GLOB '*200*'     查找任意位置包含 200 的任意值

    WHERE SALARY GLOB '?00*'      查找第二位和第三位为 00 的任意值

    WHERE SALARY GLOB '2??'        查找以 2 开头,且长度至少为 3 个字符的任意值

    WHERE SALARY GLOB '*2'           查找以 2 结尾的任意值

    WHERE SALARY GLOB '?2*3'       查找第二位为 2,且以 3 结尾的任意值

    WHERE SALARY GLOB '2???3'     查找长度为 5 位数,且以 2 开头以 3 结尾的任意值

    eg:下面的 SELECT 语句列出了 NAME 以 'Ki' 开始的所有记录,'Ki' 之后的字符不做限制:

    SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';

    6. NOT:NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。

    7. IS NULL:NULL 运算符用于把某个值与 NULL 值进行比较。

    8. IS:IS 运算符与 = 相似。

    9:IS NOT:IS NOT 运算符与 != 相似。

    eg:SELECT 语句列出了 AGE 不为 NULL 的所有记录,结果显示所有的记录:

    slecet from tablename where AGE IS NOT NULL

    10.UNIQUE:UNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复)。

    11. LIMIT 子句用于限制由 SELECT 语句返回的数据数量。

    SELECT * FROM COMPANY LIMIT 6   取6行

    SELECT * FROM COMPANY LIMIT 3 OFFSET 2;  从第三位开始提取 3 个记录

    12. ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据。

    SELECT * FROM COMPANY ORDER BY SALARY ASC; 结果按 SALARY 升序排序

    SELECT * FROM COMPANY ORDER BY NAME DESC; NAME 降序排序
      13. GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。

    在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。

    14.HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。

    WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。

    eg:显示名称计数小于 2 的所有记录:

    SELECT * FROM COMPANY GROUP BY name HAVING count(name) < 2;

    15. DISTINCT 与 SELECT 一起使用,来消除所有重复的记录,并只获取唯一一次记录。

    SELECT DISTINCT name FROM COMPANY;

    相关文章

      网友评论

          本文标题:SQLite 学习笔记(一)

          本文链接:https://www.haomeiwen.com/subject/dvnwgttx.html