【SQL进阶教程】第一章 case表达式

本系列基于《SQL进阶教程》(如下图)学习,实现了书中代码及练习题代码。PS:电子书请大家各自默默脚本之家。
【SQL进阶教程】第一章 case表达式

【知识点1】case表达式概述

Case表达式有简单case表达式和搜索case表达式

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式

【知识点2】将已有编号方式转换为新的方式并统计

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式

(1)统计四国、九州和其他的人口数

正确答案一:

【SQL进阶教程】第一章 case表达式

正确答案二:简写

【SQL进阶教程】第一章 case表达式

虽然GROUP BY 早于SELECT执行,但是mysql和PostgreSQL可以顺利执行,因为这些数据库执行查询语句前,会先对SELECT子句里的列表进行扫描,并对列进行计算;但是Oracle、DB2、SQL Server等数据库会报错。

正确答案三:创建视图试一下——成功

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式

(2)按照人口数量等级划分

正确答案一:书上

【SQL进阶教程】第一章 case表达式

正确答案二:视图

【SQL进阶教程】第一章 case表达式
PS:这里一直错误,因为忘记删除FROM之前的,默默在心里揍自己一下

【SQL进阶教程】第一章 case表达式

【知识点3】用一条SQL语句进行不同条件的统计

【SQL进阶教程】第一章 case表达式

(1)分别统计各县的男女人数

正确答案一:
【SQL进阶教程】第一章 case表达式

正确答案二:这个我承认是真的牛

【SQL进阶教程】第一章 case表达式

【知识点4】用CHECK约束定义多个列的条件关系

(1)创建表时CHECK约束(mysql加不加好像没啥区别,但是下列语句是mysql写的)

【SQL进阶教程】第一章 case表达式

【SQL进阶教程】第一章 case表达式

(1)约束(sex = 1)的工资必须是20000下(仅作例子)

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式
PS:逻辑与表达的结果是只能是女性,且工资必须小于20万日元,与题意不符合

【知识点5】在UPDATE语句中进行条件分支

(1)对当前工资为30万日元以上的员工,降薪10%;

对当前工资为25万日元以上且不满28万日元的员工,加薪20%

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式

PS:UPDATE 不需要加TABLE

(2)实现主键值调换

【SQL进阶教程】第一章 case表达式

【知识点6】表之间的数据匹配

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式

(1)生成交叉表

错误示范一:

【SQL进阶教程】第一章 case表达式

正确答案一:in

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式

【知识点7】在case表达式中使用聚合函数

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式

练习题

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式

(2)转换行列

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式

正确答案:为自己鼓掌~~~,这是我写出的,但是最后一个sum确实有点蠢

【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式
【SQL进阶教程】第一章 case表达式

(3)order by 生成指定排序列(按照B-A-D-C)

【SQL进阶教程】第一章 case表达式

【SQL进阶教程】第一章 case表达式

【SQL进阶教程】第一章 case表达式

【SQL进阶教程】第一章 case表达式

鼓掌,第一章完美结束!