一、表的加法:
(一)表的加法:union
![b8c03606f652c67648d171af61d33602.png](https://img-blog.csdnimg.cn/img_convert/b8c03606f652c67648d171af61d33602.png)
PS:
1、 相加的两个表的列数必须相同,如不相同,则用union时,两个表不能相加;
2、 两个表中的列的类型必须一致,如不一致,尝试列类型转换;
(二)表的加法包含重复行:
![55fa31afaa4d6ca0f308466da4b1e83a.png](https://img-blog.csdnimg.cn/img_convert/55fa31afaa4d6ca0f308466da4b1e83a.png)
二、表的联结
(一) 熟悉各表之间的关系
![b27e00cb6cb547748ed4d32ab5569e65.png](https://img-blog.csdnimg.cn/img_convert/b27e00cb6cb547748ed4d32ab5569e65.png)
(二) 交叉联结:cross join
![28ba75a7ae1c170a5d10e46fefae4d43.png](https://img-blog.csdnimg.cn/img_convert/28ba75a7ae1c170a5d10e46fefae4d43.png)
PS:
1、交叉联结结果的行数是两张表行数的乘积,交叉联结是其他联结的基础。
2、交叉联结因结果行数太多,需要大量的运算和设备支持结果没有实际价值,在实际业务中用的比较少。
(三) 内联结:inner join
![3ec60046ddf538ac5551b4688e765ecd.png](https://img-blog.csdnimg.cn/img_convert/3ec60046ddf538ac5551b4688e765ecd.png)
PS:内联结返回的是两个表交集的部分。
(四) 左联结:left join…..on
![7d4d63f88549a5c1cfd2c50dcd2ff013.png](https://img-blog.csdnimg.cn/img_convert/7d4d63f88549a5c1cfd2c50dcd2ff013.png)
PS:以左表为联结,左表的记录会全部显示出来,而右表只显示与左表交集的部分。
不显示交集:
![67681d09dd7082cb247a58fb6e5297a0.png](https://img-blog.csdnimg.cn/img_convert/67681d09dd7082cb247a58fb6e5297a0.png)
(五) 右联结:right join…..on
![f0c7c92b38f5fee56e0b7c0a274244b6.png](https://img-blog.csdnimg.cn/img_convert/f0c7c92b38f5fee56e0b7c0a274244b6.png)
PS:以右表为联结,右表的记录会全部显示出来,而左表只显示与右表交集的部分。
不显示交集:
![2a041646cc3a8a1e10d6356d9376fccf.png](https://img-blog.csdnimg.cn/img_convert/2a041646cc3a8a1e10d6356d9376fccf.png)
(六) 全联结:full join---sql目前不支持
(七)联结图示---【重要,记住这张图】
![6c53ec7d15292abe52743c9cf32b4646.png](https://img-blog.csdnimg.cn/img_convert/6c53ec7d15292abe52743c9cf32b4646.png)
三、表联结案例
1、
![4b1fbd2bb5e94fe4f904ad5fb2e20f0f.png](https://img-blog.csdnimg.cn/img_convert/4b1fbd2bb5e94fe4f904ad5fb2e20f0f.png)
2、
![247203a7e91972de5f006df2913bbaa4.png](https://img-blog.csdnimg.cn/img_convert/247203a7e91972de5f006df2913bbaa4.png)
3、
![ed4df964453beec6d4a636c4b350c0da.png](https://img-blog.csdnimg.cn/img_convert/ed4df964453beec6d4a636c4b350c0da.png)
四、Case表达式
(一) 语法
Case when <判断表达式> then <表达式>
when <判断表达式> then <表达式>
……..
else <表达式>
end
(二) 作用
当有多种情况,需要进行条件判断时,使用case表达式。
(三) 案例
![e9e451b044ce4d28ea19fdc4b265640d.png](https://img-blog.csdnimg.cn/img_convert/e9e451b044ce4d28ea19fdc4b265640d.png)
![ad9cf7fd3177e0b43001c23dfb92638f.png](https://img-blog.csdnimg.cn/img_convert/ad9cf7fd3177e0b43001c23dfb92638f.png)
![459e7e3af1080ceb3b499b3a5597c443.png](https://img-blog.csdnimg.cn/img_convert/459e7e3af1080ceb3b499b3a5597c443.png)
PS:
1、 用between…and…时,小数值在前,大数值在后;
2、 当用多个列分组时,几个列的值完全相同才可以算作一组(因查询的结果显示的课程号和课程名称要一一对应);
总结:
1、 case表达式可放在任意子句中;
2、 表达式中的else可以省略(省略时默认为空值)但是结尾一定要有end;