![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《SQL进阶教程》摘录
Myzoneliver
毕业于不知名二本院校,培训班出生的码畜.因技术增长跟不上年龄及害怕35岁失业.遂从一线城市逃回家乡,现为某公司信息部系统维护人员,编程爱好者.
展开
-
1-5 外连接的用法
行列转换1实现这种效果外连接形式select a.`name`,case when b.name is not null then 'o' ELSE null end as 'SQL入门',case when c.name is not null then 'o' ELSE null end as 'UNIX基础',case when d.name is not null then '...转载 2019-07-07 18:34:54 · 808 阅读 · 0 评论 -
1-10 HAVING 子句又回来了
前言学习 SQL 时最大的阻碍就是我们已经习惯了的面向过程语言的思考方式(排序、循环、条件分支、赋值等)。为了深入理解 SQL 的本质,我们必须暂时摒弃已有观念学习 HAVING 子句的用法是帮助我们顺利地忘掉面向过程语言的思考方式并理解 SQL面向集合特性的最为有效的方法。这是因为,HAVING 子句的处理对象是集合而不是记录,所以只有习惯了面向集合的思考方式,才能真正地学好它各队,全体点...转载 2019-07-20 13:05:26 · 144 阅读 · 0 评论 -
1-4 HAVING子句的力量
寻找缺失的编号判断是否存在缺失的编号-- 如果有查询结果,说明存在缺失的编号SELECT '存在缺失的编号' AS gapFROM SeqTblHAVING COUNT(*) <> MAX(seq);用 HAVING 子句进行子查询:求众数-- 使用极值函数SELECT income, COUNT(*) AS cntFROM GraduatesGROUP BY...转载 2019-07-18 21:13:52 · 158 阅读 · 0 评论 -
1-2 自连接的用法
可重排列、排列、组合组合其实分为两种类型。一种是有顺序的有序对,另一种是无顺序的无序对。有序对用尖括号括起来,如 <1, 2>;无序对用花括号括起来,如 {1, 2}。在有序对里,如果元素顺序相反,那就是不同的对,因此 <1, 2> ≠ <2, 1> ;而无序对与顺序无关,因此 {1, 2} = {2, 1}。用学校里学到的术语来说,这两类分别对应着“排列”和...转载 2019-07-16 20:20:20 · 1877 阅读 · 0 评论 -
1-3 三值逻辑与NULL
unknown与 null数据库中的布尔值不仅有true 和 false,还有unknown。它与null有关系。对于语句select * from class_a where age = 21,当age=21为true,进入结果集,false则被舍弃。如果是select * from class_a where age = null,则age=null返回unknown,他和false一样...转载 2019-07-06 20:46:00 · 539 阅读 · 1 评论 -
1-9 用sql处理数列
生成连续的编号将表进行自连接, 即可得到0-999的编号select d1.digit + d2.digit*10 + d3.digit*100from digits d1, digits d2, digits d3;当我将他们写反了之后, 我发现一个问题select d1.digit*100 + d2.digit*10 + d3.digitfrom digits d1, dig...转载 2019-07-15 21:15:58 · 343 阅读 · 0 评论 -
1-1 CASE表达式
GROUP BY中使用一般的group by十分依赖数据库中的原始数据。case表达式将原始数据进行转化,再进行分组。SELECT CASE pref_name WHEN '德岛' THEN '四国' WHEN '香川' THEN '四国' WHEN '爱媛' THEN '四国' WHEN '高知' THEN '四国' WHEN '福冈' THEN '九州' WHEN ...转载 2019-07-06 14:12:16 · 247 阅读 · 0 评论 -
1-7 用SQL进行集合运算
比较表和表:检查集合相等性之基础篇比较上述两张表是否相等?-- 如果这个查询的结果与 tbl_A 及 tbl_B 的行数一致,则两张表是相等的SELECT COUNT(*) AS row_cntFROM ( SELECT *FROM tbl_AUNIONSELECT *FROM tbl_B ) TMP;比较表和表:检查集合相等性之进阶篇待续用差集实现关系除法运算待续寻找...转载 2019-07-10 20:48:26 · 135 阅读 · 0 评论 -
1-6用关联子查询比较行
前言使用 SQL 对同一行数据进行列间的比较很简单,只需要在 WHERE 子句里写上比较条件就可以了,例如 col_1 = col_2 。但是,对不同行数据进行列间的比较却没那么简单。使用 SQL 进行行间比较时,发挥主要作用的技术是关联子查询用列表展示与上一年的比较结果查询和去年相比, 销售额的趋势使用子查询SELECT s.`year`,s.sale,case when s.sa...转载 2019-07-08 21:19:14 · 192 阅读 · 0 评论 -
1-8 EXISTS 谓词的用法
理论什么是谓词SQL 的保留字中,有很多都被归为谓词一类。例如,“= 、< 、> ”等比较谓词,以及 BETWEEN 、LIKE 、IN 、IS NULL 等谓词就是函数。但谓词与 SUM 或 AVG 这样的函数并不一样谓词是一种特殊的函数,返回值是真值。前面提到的每个谓词,返回值都是 true 、 false或者 unknown (一般的谓词逻辑里没有 unknown ,但...转载 2019-07-21 16:43:56 · 369 阅读 · 0 评论