zoukankan      html  css  js  c++  java
  • SQLite3笔记

    SQLite3笔记 

    一:数据库的数据结构 

     
     

        存储类 描述 

        NULL    值是一个 NULL 值。 

        INTEGER 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中 

        REAL    值是一个浮点值,存储为 8 字节的 IEEE 浮点数字 

        TEXT    值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。 

        BLOB    值是一个 blob 数据,完全根据它的输入存储 

        SQLite 的存储类稍微比数据类型更普遍。INTEGER 存储类,例如,包含 6 种不同的不同长度的整数数据类型 

     
     

    Date 与 Time 数据类型 

        存储类 日期格式 

        TEXT    格式为 "YYYY-MM-DD HH:MM:SS.SSS" 的日期 

        REAL    从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数 

        INTEGER 从 1970-01-01 00:00:00 UTC 算起的秒数 

        Boolean 数据类型 

        SQLite 没有单独的 Boolean 存储类。相反,布尔值被存储为整数 0(false)和 1(true)。 

     
     

     
     

    二:数据库的创建 

     
     

    //创建数据库 

    $ sqlite3 DatabaseName.db 

     
     

    //一旦数据库被创建,您就可以使用 SQLite 的 .databases 命令来检查它是否在数据库列表中 

     sqlite>.databases 

     
     

    //退出数据库 

     sqlite>.quit 

     
     

    //命令提示符中使用 SQLite .dump 点命令来导出完整的数据库在一个文本文件中 

    $ sqlite3 testDB.db .dump > testDB.sql 

     
     

    //上面的命令将转换整个 testDB.db 数据库的内容到 SQLite 的语句中,并将其转储到 ASCII 文本文件 testDB.sql 中。您可以通过简单的方式从生成的 testDB.sql 恢复 

    $ sqlite3 testDB.db < testDB.sql 

     
     

    //附加数据库的命令  如果数据库尚未被创建,上面的命令将创建一个数据库,如果数据库已存在,则把数据库文件名称与逻辑数据库 'Alias-Name' 绑定在一起。 main和temp是SQLite3的保留的name 

    sqlite> ATTACH DATABASE 'DatabaseName' As 'Alias-Name'; 

    sqlite> DETACH DATABASE 'currentDB'; 

    eg: 

    sqlite>.databases 

    seq  name             file 

    ---  ---------------  ---------------------- 

    0    main             /home/sqlite/testDB.db 

    2    test             /home/sqlite/testDB.db 

    3    currentDB        /home/sqlite/testDB.db 

     
     

    //SQLite的 DETACH DTABASE 语句是用来把命名数据库从一个数据库连接分离和游离出来,连接是之前使用 ATTACH 语句附加的。如果同一个数据库文件已经被附加上多个别名,DETACH 命令将只断开给定名称的连接,而其余的仍然有效。您无法分离 main 或 temp 数据库。 'Alias-Name' 与您之前使用 ATTACH 语句附加数据库时所用到的别名相同 

    DETACH DATABASE 'Alias-Name'; 

     
     

    三:表的操作 

    //新建表 

    CREATE TABLE database_name.table_name( 

       column1 datatype  PRIMARY KEY(one or more columns), 

       column2 datatype, 

       column3 datatype, 

       ..... 

       columnN datatype, 

    ); 

     
     

    eg: 

    sqlite> CREATE TABLE COMPANY( 

       ID INT PRIMARY KEY     NOT NULL, 

       NAME           TEXT    NOT NULL, 

       AGE            INT     NOT NULL, 

       ADDRESS        CHAR(50), 

       SALARY         REAL 

    ); 

    //您可以使用 SQLIte 命令中的 .tables 命令来验证表是否已成功创建,该命令用于列出附加数据库中的所有表 

    sqlite>.tables 

     
     

    //可以使用 SQLite .schema 命令得到表的完整信息 

    sqlite>.schema COMPANY 

     
     

    //删除表  删除之前要先确定表存在 使用 .table 

    DROP TABLE database_name.table_name; 

     
     

    //插入数据 column1, column2,...columnN 是要插入数据的表中的列的名称 

    INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]   

    VALUES (value1, value2, value3,...valueN); 

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

    INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN); 

     
     

    //Select语句 column1, column2...是表的字段,他们的值即是您要获取的 

    SELECT column1, column2, columnN FROM table_name; 

    如果您想获取所有可用的字段 

    SELECT * FROM table_name; 

     
     

    //设置输出列的宽度 

    sqlite>.width 10, 20, 10 

     
     

    Schema 信息 

    sqlite> SELECT tbl_name FROM sqlite_master WHERE type = 'table'; 

     
     

    列出关于 COMPANY 表的完整信息 

    sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'COMPANY'; 

     
     

    四:逻辑运算符 

     
     

    运算符     描述 

    AND AND     运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在 

    BETWEEN     BETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值 

    EXISTS      EXISTS 运算符用于在满足一定条件的指定表中搜索行的存在 

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

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

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

    GLOB        GLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的 

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

    OR          OR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件 

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

    IS          IS 运算符与 = 相似 

    IS NOT      IS NOT 运算符与 != 相似 

    ||          连接两个不同的字符串,得到一个新的字符串 

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

     
     

     
     

    运算符   描述                                                   实例 

    ==      检查两个操作数的值是否相等,如果相等则条件为真。            (a == b) 不为真 

    =       检查两个操作数的值是否相等,如果相等则条件为真。            (a = b) 不为真 

    !=      检查两个操作数的值是否相等,如果不相等则条件为真。           (a != b) 为真 

    <>      检查两个操作数的值是否相等,如果不相等则条件为真。           (a <> b) 为真 

    >       检查左操作数的值是否大于右操作数的值,如果是则条件为真。        (a > b) 不为真 

    <       检查左操作数的值是否小于右操作数的值,如果是则条件为真。        (a < b) 为真 

    >=      检查左操作数的值是否大于等于右操作数的值,如果是则条件为真。      (a >= b) 不为真 

    <=      检查左操作数的值是否小于等于右操作数的值,如果是则条件为真。      (a <= b) 为真 

    !<      检查左操作数的值是否不小于右操作数的值,如果是则条件为真。       (a !< b) 为假 

    !>      检查左操作数的值是否不大于右操作数的值,如果是则条件为真。       (a !> b) 为真 

     
     

     
     

    运算符 描述                              实例 

    &       如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。  (A & B) 将得到 12,即为 0000 1100 

    |       如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。     (A | B) 将得到 61,即为 0011 1101 

    ~       二进制补码运算符是一元运算符,具有"翻转"位效应,即0变成1,1变成0。    (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。 

    <<      二进制左移运算符。左操作数的值向左移动右操作数指定的位数。       A << 2 将得到 240,即为 1111 0000 

    >>      二进制右移运算符。左操作数的值向右移动右操作数指定的位数。       A >> 2 将得到 15,即为 0000 1111 

     
     

     
     

    //比较运算符的作用   

    sqlite> SELECT * FROM 表名 WHERE 字段 > 50000; 

     
     

    sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000; 

    > SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000; 

     
     

     
     

     
     

     

  • 相关阅读:
    C#里partial关键字的作用
    Xamarin.Android之布局文件智能提示问题
    C语言文件操作
    CArray
    Unicode和多字节的相互转换
    可变参数问题研究
    VC6.0支持UNICODE的步骤
    Unicode编码表
    @@
    内存映射文件原理
  • 原文地址:https://www.cnblogs.com/kanekiken/p/7519845.html
Copyright © 2011-2022 走看看