循序渐进SQLite2

作者: 诺馨 | 来源:发表于2016-06-03 19:19 被阅读50次

    <h3>SQLite命令</h3>
    基于命令的操作性质可分为:

    • DDL:数据定义语言
    命令 描述
    CREATE 创建一个新的表,一个表的视图,或者数据库中的其他对象
    DROP 删除整个表,或者表的视图,或者数据库中的其他对象
    ALTER 修改数据库中的某个已有的数据库对象,比如一个表
    • DQL:数据查询语言
    命令 描述
    SELECT 从一个或多个表中检索某些记录
    • DML:数据操作语言
    命令 描述
    INSERT 创建一条记录
    UPDATE 修改记录
    DELETE 删除记录

    <h3>SQLite常用数据类型</h3>

    • SQLite存储类
    存储类 描述
    NULL 值是一个NULL值
    INTEGER 值是一个带符号的整数,根据值的大小存储在1、2、3、4、6或8字节中
    REAL 值是一个浮点值,存储为8字节的IEEE浮点数字
    TEXT 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE或UTF-16LE)存储
    BLOB 值是一个bolb数据,完全根据它的输入存储
    • Date与Time数据类型
    存储类 描述
    TEXT 格式为"YYYY-MM-DD HH:MM:SS.SSS" 的日期
    REAL 从公元前4714年11月24日格林尼治时间的正午开始算起的天数
    INTEGER 从1970-01-01 00:00:00 UTC算起的秒数

    <h3>操作命令</h3>
    打开终端,输入sqlite3 testDB.db。此命令将在当前目录下创建好一个文件testDB.db,该文件将被SQLite引擎用作数据库,可以注意到sqlite3命令在成功创建数据库文件后,将提供一个sqlite>提示符。使用点命令.databases检查创建的数据库是否在数据库列表中。

    SQLite创建create表####

    SQLite的create table (<b>需要注意的是:SQLite是不区分大小写的,但有些命令是大小写敏感的,比如GLOB和glob在SQLite的语句中有不同的含义。</b>) 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列表及每一列的数据类型。基本语法如下:

    create table database_name.table_name( column1 datatype primary key, column2 datatype, column3 datatype, ...... columnN datatype);
    
    

    可以使用.tables命令来验证表是否已成功创建,该命令用于列出数据库中的所有表。.schema命令则可以得到表的完整信息。

    SQLite删除drop表####

    SQLite的drop table语句用来删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范。注意使用此命令,一旦一个表被删除,表中所有信息也将永远丢失

    drop table database_name.table_name;
    

    SQLite Insert语句####

    SQLite的insert into 语句用于向数据库的某个表中添加新的数据行。基本语法:

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

    此处的column1,column2,...columnN为要插入数据的表中的列的名称。如果要给表中的所有列添加值,可以不指定列名称,但是务必要确保值的顺序与列在表中的顺序一致。即:

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

    SQLite Select语句####

    SQLite的select语句用于从SQLite数据库中获取数据,以结果表的形式返回数据。基本语法:

    select column1,column2,columnN from table_name;
    

    如果想要获取所有的可用的字段,则可以使用下面的语法:

    select * from table_name;
    

    SQLite Where子句####

    SQLite的where子句用于指定从一个表或多个表中获取数据的条件。如果满足给定的条件,即为真(ture)时,则从表中返回特定的值。可以使用where子句来过滤记录,只获取需要的记录。where子句不仅可以用在select语句中,还可以用在update、delete语句中,等等。基本语法:

    select column1,column2,columnN from table_name where [condition];
    

    SQLite运算符####

    运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算。运算符用于指定 SQLite 语句中的条件,并在语句中连接多个条件。

    • 算术运算符
    运算符 描述
    + 加法:将运算符两边的值相加
    - 减法:左操作数减去右操作数
    * 乘法:把运算符两边的值相乘
    / 除法:左操作数除以右操作数
    % 取模:左操作数除以右操作数后得到的余数
    • 比较运算符
    运算符 描述
    == 检查两个操作数的值是否相等,如果相等则条件为真
    = 检查两个操作数的值是否相等,如果相等则条件为真
    != 检查两个操作数的值是否相等,如果不相等则条件为真
    <> 检查两个操作数的值是否相等,如果不相等则条件为真
    > 检查左操作数的值是否大于右操作数的值,如果是则条件为真
    < 检查左操作数的值是否小于右操作数的值,如果是则条件为真
    >= 检查左操作数的值是否大于等于右操作数的值,如果是则条件为真
    <= 检查左操作数的值是否小于等于右操作数的值,如果是则条件为真
    !< 检查左操作数的值是否不小于右操作数的值,如果是则条件为真
    !> 检查左操作数的值是否不大于右操作数的值,如果是则条件为真
    • 逻辑运算符
    运算符 描述
    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 运算符搜索指定表中的每一行,确保唯一性(无重复)
    • 位运算符

    SQLite Update语句####

    SQLite的update查询用于修改表中的已有的记录,和set一起使用。可以使用带有where子句的update查询来更新选定行,否则所有的行都会被更新。基本语法:

    update table_name 
    set column1 = value1, column2 = value2...,columnN = valueN 
    where [condition];
    

    SQLite Delete语句####

    SQLite的delete用于删除表中的已有的记录,可以使用带有where子句的delete来删除选定行,否则所有的记录都会被删除。基本语法:

    delete from table_name where [condition];
    

    SQLite Like子句####

    SQLite的like运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,like运算符将返回真(true),也就是1。有两个通配符与like运算符一起使用。百分号(%)下划线(_)。百分号代表零个、一个或多个数字或字符。下划线代表一个单一的数字或字符。这些符号可以被组合使用。基本语法:

    select from table_name where column like 'xxxx%';
    或者
    select from table_name where column like '%xxxx%';
    或者
    select from table_name where column like 'xxxx_';
    或者
    select from table_name where column like '_xxxx';
    或者
    select from table_name where column like '_xxxx_';
    

    下面给出一些实例演示带有'%'和'_'运算符的like子句的不同的地方:

    语句 描述
    where column like 'hi%' 查找以hi开头的任意值
    where column like '%hi%' 查找任意位置包含hi的任意值
    where column like '_hi%' 查找第二位和第三位为hi的任意值
    where column like 'h_%_%' 查找以h开头,且长度至少为3个字符的任意值
    where column like '%h' 查找以h结尾的任意值
    where column like '_h%i' 查找第二位为h,且以i结尾的任意值
    where column like 'h___i' 查找长度为5位数,且以h开头以i结尾的任意值

    SQLite Order By排序####

    SQLite的order by子句是用来基于一个或多个列按升序或降序顺序排列数据。ASC表示升序,DESC表示降序。基本语法:

    select column-list 
    from table_name
    [where condition] 
    [order by column1,column2, .. columnN] [ASC | DESC];
    

    SQLite Group By分组####

    SQLite的group by子句用于与select语句一起使用,来对相同的数据进行分组。在select语句中,group by子句放在where子句之后,放在order by子句之前。基本语法:

    select column-list
    from table_name where [condition]
    group by column1,column2,...columnN
    order by column1,column2,...columnN;
    

    SQLite Distinct关键字####

    SQLite的Distinct 关键字与select语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,distinct关键字就显得很有意义了。基本语法:

    select distinct column1,column2,...columnN
    from table_name
    where [condition];
    

    SQLite Alter命令####

    SQLite的alter table命令不通过执行一个完整的转储和数据的重载来修改已有的表。可以使用alter table语句重命名表,使用alter table语句还可以在已有的 表中添加额外的列。基本语法:

    重命名表:
    alter table database_name.table_name rename to new_table_name;
    在已有的表中添加一个新的列:
    alter table database_name.table_name add column column_definition...;
    实例:
    alter table person add column sex char(1);
    

    SQLite AND/OR 运算符####

    SQLite的AND和OR运算符用于编译多个条件来缩小在SQLite语句中的所选的数据。这两个运算符被称为连接运算符。

    • AND运算符
      AND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在。使用 AND 运算符时,只有当所有条件都为真(true)时,整个条件为真(true)。例如,只有当 condition1 和 condition2 都为真(true)时,[condition1] AND [condition2] 为真(true)。基本语法:
    select column1,column2,...columnN  
    from table_name
    where [condition] and [condition2]...and [conditionN]; 
    
    • OR 运算符
      OR 运算符也用于结合一个 SQL 语句的 WHERE 子句中的多个条件。使用 OR 运算符时,只要当条件中任何一个为真(true)时,整个条件为真(true)。例如,只要当 condition1 或 condition2 有一个为真(true)时,[condition1] OR [condition2] 为真(true)。
    select column1,column2,...columnN 
    from table_name 
    where [condition] or [condition2]...or [conditionN]; 
    

    相关文章

      网友评论

        本文标题:循序渐进SQLite2

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