合集-读SQL进阶教程
摘要: # 1. 基本信息 SQL进阶教程 [日]MICK 人民邮电出版社,2017年11月出版,**1版** ## 1
阅读全文
摘要:1. 概述 1.1. SQL-92标准里加入的最有用的特性 1.2. 写法 1.2.1. 简单CASE表达式 CASE sex WHEN '1' THEN ’男’ WHEN '2' THEN ’女’ ELSE ’其他’ END 1.2.1.1. 写法简单,但能实现的事情比较有限 1.2.2. 搜索C
阅读全文
摘要:1. 三值逻辑 1.1. 真 1.1.1. true 1.2. 假 1.2.1. false 1.3. 不确定 1.3.1. unknown 2. 两种NULL 2.1. 未知”(unknown) 2.1.1. 不知道戴墨镜的人眼睛是什么颜色 2.1.2. 虽然现在不知道,但加上某些条件后就可以知道
阅读全文
摘要:1. 针对相同的表进行的连接 1.1. 相同的表的自连接和不同表间的普通连接并没有什么区别,自连接里的“自”这个词也没有太大的意义 1.2. 与多表之间进行的普通连接相比,自连接的性能开销更大 1.2.1. 特别是与非等值连接结合使用的时候 1.2.2. 用于自连接的列推荐使用主键或者在相关列上建立
阅读全文
摘要:1. 集合论是SQL语言的根基 1.1. UNION 1.1.1. SQL-86标准 1.2. NTERSECT和EXCEPT 1.2.1. SQL-92标准 1.3. 除法运算(DIVIDE BY) 1.3.1. 没有被标准化 2. 注意事项 2.1. SQL能操作具有重复行的集合,可以通过可选项
阅读全文
摘要:1. 关联子查询 1.1. 关联子查询和自连接在很多时候都是等价的 1.2. 使用SQL进行行间比较时,发挥主要作用的技术是关联子查询,特别是与自连接相结合的“自关联子查询” 1.3. 缺点 1.3.1. 代码的可读性不好 1.3.1.1. 特别是在计算累计值和移动平均值的例题里,与聚合一起使用后,
阅读全文
摘要:1. SQL的弱点 1.1. SQL语句的执行结果转换为想要的格式 1.1.1. 格式转换 1.1.2. SQL语言本来就不是为了这个目的而出现的 1.1.3. SQL终究也只是主要用于查询数据的语言而已 1.2. 生成报表的功能 1.2.1. 窗口函数 1.3. SQL不是用来生成报表的语言,所以
阅读全文
摘要:1. 特点 1.1. 将多行数据作为整体来表达高级的条件 1.2. 使用关联子查询时性能仍然非常好 1.3. EXISTS的参数不像是单一值 1.3.1. 参数是行数据的集合 2. 什么是谓词 2.1. 一种特殊的函数,返回值是真值 2.2. 返回值都是true、false或者unknown 2.2
阅读全文
摘要:1. 处理有序集合也并非SQL的直接用途 1.1. SQL语言在处理数据时默认地都不考虑顺序 2. 处理数据的方法有两种 2.1. 第一种是把数据看成忽略了顺序的集合 2.2. 第二种是把数据看成有序的集合 2.2.1. 首先用自连接生成起点和终点的组合 2.2.2. 其次在子查询中描述内部的各个元
阅读全文
摘要:1. HAVING子句的用法 1.1. 学习SQL时最大的阻碍就是我们已经习惯了的面向过程语言的思考方式(排序、循环、条件分支、赋值等) 1.2. 只有习惯了面向集合的思考方式,才能真正地学好它 1.3. 帮助我们顺利地忘掉面向过程语言的思考方式并理解SQL面向集合特性的最为有效的方法 1.4. H
阅读全文
摘要:1. 按照现在的SQL标准来说,HAVING子句是可以单独使用的 1.1. 就不能在SELECT子句里引用原来的表里的列了 1.1.1. 使用常量 1.1.2. 使用聚合函数 1.2. WHERE子句用来调查集合元素的性质,而HAVING子句用来调查集合本身的性质 2. 表不是文件,记录也没有顺序,
阅读全文
摘要:1. 1969年 1.1. 关系模型的创始人E.F. Codd(1923—2003) 1.1.1. 牛津大学数学专业 1.1.2. 一己之力奠定了关系模型的基础 1.2. 论文《大型数据库中关系存储的可推导性、冗余与一致性》 2. 1970年 2.1. 权威学术杂志Communications of
阅读全文
摘要:1. SQL和数据库都在极力提升数据在表现层的抽象度,以及对用户隐藏物理层的概念 2. 关系模型是为摆脱地址而生的 2.1. “地址”不仅包括指针操作的地址,还包括数组下标等 3. 一个优雅的数据结构胜过一百行杂耍般的代码 3.1. 精巧的数据结构搭配笨拙的代码,远远好过笨拙的数据结构搭配精巧的代码
阅读全文
摘要:1. 数据分组 1.1. SQL的语句中具有分组功能的是GROUP BY和PARTITION BY 1.1.1. 两者都有数学的理论基础 1.1.2. 都可以根据指定的列为表分组 1.1.3. 区别仅仅在于,GROUP BY在分组之后会把每个分组聚合成一行数据 1.1.4. GROUP BY的作用是
阅读全文
摘要:1. 消灭NULL 1.1. NULL惹人讨厌的原因 1.1.1. 进行SQL编码时,必须考虑违反人类直觉的三值逻辑 1.1.2. 指定IS NULL、IS NOT NULL的时候,不会用到索引,SQL语句执行起来性能低下 1.1.2.1. 1 + NULL = NULL 2- NULL = NUL
阅读全文
摘要:1. 还原论 1.1. 认为可以把高级现象还原为低级基本现象的学说 1.2. 将复杂的东西看成是由简单单元组合而成的 1.2.1. 以赋值、条件分支、循环等作为基本处理单元,并将系统整体分割成很多这样的单元的思维方式 1.2.2. 文件系统也是将大量的数据分割成记录这样的小单元进行处理的 2. 整体
阅读全文
摘要:1. 查询速度慢并不只是因为SQL语句本身,还可能是因为内存分配不佳、文件结构不合理等其他原因 1.1. 都是为了减少对硬盘的访问 2. 不同代码能够得出相同结果 2.1. 从理论上来说,得到相同结果的不同代码应该有相同的性能 2.2. 遗憾的是,查询优化器生成的执行计划很大程度上要受到代码外部结构
阅读全文