美文网首页SQLite权威指南
SQLite权威指南(第二版)第三章 SQLite中的SQL

SQLite权威指南(第二版)第三章 SQLite中的SQL

作者: 明若晴空 | 来源:发表于2019-10-28 18:19 被阅读0次

    SQL,是与关系数据库通信的唯一方法,是一种直观的用户友好的语言,功能非常强大,可以构建、读取、写、排序、过滤、映射、计算、产生、分组、聚集、管理信息。

    一、语法

    SQL语法的一般结构:


    1.png
    1、命令:

    SQL由命令组成,每条命令以分号(;)结束。
    分号(;),作为命令终结符,启动处理命令。

    2、常量

    字符串常量:建议使用单引号引起来
    数字常量:整数、十进制数、科学计数法表示的数
    二进制常量:使用x’0000’表示,每一位是一个16进制数

    3、关键字和标识符

    关键字:select、update、insert、create、drop、begin等。
    标识符:数据库里的具体对象,如表或索引。
    关键字和标识符,都不区分大小写。

    4、注释

    单行注释:两个连续连字符(--)表示
    多行注释:C语言风格的/* */形式

    二、创建数据库

    1、创建表

    创建表的语句:

    create [temp | temporary] table table_name (column_definitions [, constraints]);
    

    说明:

    • temp 或 temporary,表示临时表,只存活于当前会话;
    • []表示可选项
    • | 表示两者选其一

    2、修改表

    一般格式:

    alter table table_name { rename to name | add column column_def }
    

    说明:

    • {} 括起来一个选项表,表示必须从各选项中选一个;

    三、数据库查询

    1、select命令与操作管道

    select 命令的通用形式如下:

    select [distinct] heading 
    from tables 
    where predicate 
    group by columns 
    having predicate 
    order by columns 
    limit count, offset;
    

    其处理过程:


    2.png

    2、信息处理的操作

    • 过滤;通过算数操作符(单目、二元、三元操作符)、 逻辑操作符:AND、OR、NOT、IN、LIKE 与 GLOB 操作符(字符串匹配)等来过滤筛选数据;
    • 限定和排序:limit指定返回记录最大数量,offset指定偏移的记录数;通常放在操作管道的最后;
    • 函数:函数指数学函数,如(abs()、upper()和lower()等);
    • 聚合:是从一组记录中计算聚合值(如sum()、avg()、count()、min()、max()等);
    • 分组:group by
    • 去重:distinct

    3、多表连接:

    语法格式:

    select heading from left_table join_type right_table on join_condition; 
    
    • 内连接:通过表中的两个字段进行连接,取两个表的交集;
    • 交叉连接:缺乏连接条件时,返回第一个表中的所有行和第二个表的所有行的联合;
    • 外连接:SQLite不支持忧外连接和全外连接,只有左外连接。因为右外连接可以用左外连接代替,全外连接可以通过符合查询执行。
    • 自然连接:实际上是内连接的另一种形式,通过表中共有的字段名称将两个表连接起来,不需要添加连接条件就可以获得内连接的结果。

    4、子查询

    子查询是指,select语句嵌套select语句。

    5、复合查询

    复合查询操作的参数必须符合:

    1. 涉及的关系字段数目必须相同;
    2. 只能有一个order by子句,并且处在符合查询的最末尾,对联合结果进行排序;

    关键字有:

    • union:返回A和B联合的非重复字段的单一关系。union all会保留重复数据;
    • intersect:返回既在A中,也在B中的行。
    • except:返回所有在A中,但不在B中的行。

    6、条件结果

    1. 接收静态值,并列出各种情况下的case返回值:
    case value
     when x then value_x
     when y then value_y
     when z then value_z
     else default_value
    end
    
    1. case形式允许when条件中有表达式:
    case
     when condition1 then value1
     when condition2 then value2
     when condition3 then value3
     else default_value
    

    case 表达式只执行一个条件,也就是说,如果满足的条件超过一个,只执行第一个。
    如果没有满足条件且没有定义else条件,case返回null。

    7、处理SQLite中的Null

    • 可以通过is null 或者is not null操作符检测null是否存在
    • null不等于任何值,包括null。
    • SQLite是三态逻辑,null是真假值之一


      3.png

    相关文章

      网友评论

        本文标题:SQLite权威指南(第二版)第三章 SQLite中的SQL

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