一、表的加法
- 两张表相加,去掉重复项:union
- 两张表相加,保留重复项:union all
- 随堂练习:
![b73d4168d1ec8173ae9ed90bf1a70987.png](https://img-blog.csdnimg.cn/img_convert/b73d4168d1ec8173ae9ed90bf1a70987.png)
![1733cc558688454bf32ca2cfeee527f3.png](https://img-blog.csdnimg.cn/img_convert/1733cc558688454bf32ca2cfeee527f3.png)
二、表的联结
1、有哪几种联结方式:
![ce5c60f14075630c1e442b02454bc804.png](https://img-blog.csdnimg.cn/img_convert/ce5c60f14075630c1e442b02454bc804.png)
Cross join :表中的每一行都与另一张表中的每一行合并在一起(行数为:两张表的乘积),
不常用,但它是其他联结的基础
![67a2b55e24e7fe2290cd189468441b48.png](https://img-blog.csdnimg.cn/img_convert/67a2b55e24e7fe2290cd189468441b48.png)
Inner join:查找出同时存在两张表中的数据
![84242cab607202c569f85838f384363b.png](https://img-blog.csdnimg.cn/img_convert/84242cab607202c569f85838f384363b.png)
运算原理:
![43e65d1f904dcf880626ba94c78c0c37.png](https://img-blog.csdnimg.cn/img_convert/43e65d1f904dcf880626ba94c78c0c37.png)
![f830d3bb42635cd8c47528a6da1f07ff.png](https://img-blog.csdnimg.cn/img_convert/f830d3bb42635cd8c47528a6da1f07ff.png)
随堂练习:
![fda58cf8d0de41f7514a027432a9dd76.png](https://img-blog.csdnimg.cn/img_convert/fda58cf8d0de41f7514a027432a9dd76.png)
![81d6fbdd4fb391b82f3140345eb76153.png](https://img-blog.csdnimg.cn/img_convert/81d6fbdd4fb391b82f3140345eb76153.png)
Left join :将左侧的表格内容全部提取出来
![b8322ad33882a09d9f8ccb4dab9647da.png](https://img-blog.csdnimg.cn/img_convert/b8322ad33882a09d9f8ccb4dab9647da.png)
运行原理:
![a0dee11ec7e86ca13e6a9abfd3fe276a.png](https://img-blog.csdnimg.cn/img_convert/a0dee11ec7e86ca13e6a9abfd3fe276a.png)
![6727aca96f9a930c7d2b223705833cc1.png](https://img-blog.csdnimg.cn/img_convert/6727aca96f9a930c7d2b223705833cc1.png)
随堂练习:
![7773c11594433fd1f853947b40629068.png](https://img-blog.csdnimg.cn/img_convert/7773c11594433fd1f853947b40629068.png)
在left join 的基础上,只取左表内容,但是去掉共同的部分,:
![e758d17da3eceb81ab4c73a9406ecce9.png](https://img-blog.csdnimg.cn/img_convert/e758d17da3eceb81ab4c73a9406ecce9.png)
随堂练习:
![7eea1363a8f9c432485f2b8a5faa355f.png](https://img-blog.csdnimg.cn/img_convert/7eea1363a8f9c432485f2b8a5faa355f.png)
Right join :取出右边表格的全部数据
![ea503c4e85bc58bafdc5988562690913.png](https://img-blog.csdnimg.cn/img_convert/ea503c4e85bc58bafdc5988562690913.png)
运行原理:
![1247190caeb899e7f97fccc22eed5f37.png](https://img-blog.csdnimg.cn/img_convert/1247190caeb899e7f97fccc22eed5f37.png)
![cbe383347a7efa6a81a75bb5dc0ad1a3.png](https://img-blog.csdnimg.cn/img_convert/cbe383347a7efa6a81a75bb5dc0ad1a3.png)
随堂练习:
![0ddf6baa9fb41167de4c015e1a2931f0.png](https://img-blog.csdnimg.cn/img_convert/0ddf6baa9fb41167de4c015e1a2931f0.png)
在right join 的基础上,只取右表内容,但是去掉共同的部分:
![3a799b43ce717807e7c812165d5c912b.png](https://img-blog.csdnimg.cn/img_convert/3a799b43ce717807e7c812165d5c912b.png)
随堂练习:
![f73fbc70bbae5b2955d38d4d1ad4e486.png](https://img-blog.csdnimg.cn/img_convert/f73fbc70bbae5b2955d38d4d1ad4e486.png)
Full join :取左右表的所有行(没有匹配值的时候,用空值来填充,但是my sql 不支持全连接)
![bcd61a06430e89e89dc0094e5cb14f8a.png](https://img-blog.csdnimg.cn/img_convert/bcd61a06430e89e89dc0094e5cb14f8a.png)
总结:
![eae40dc2c94ecd50464e6d1cba9756b5.png](https://img-blog.csdnimg.cn/img_convert/eae40dc2c94ecd50464e6d1cba9756b5.png)
![4d95278db0e879bf95461576b5bc6cb6.png](https://img-blog.csdnimg.cn/img_convert/4d95278db0e879bf95461576b5bc6cb6.png)
三、联结应用案例
1、随堂练习:
思路
![348c23cab8c25a8121fb97608455c1ea.png](https://img-blog.csdnimg.cn/img_convert/348c23cab8c25a8121fb97608455c1ea.png)
![7aeb1e76409b74902e9fcd9d7356a200.png](https://img-blog.csdnimg.cn/img_convert/7aeb1e76409b74902e9fcd9d7356a200.png)
![49ba6200530c1809b5ab5b5530221d26.png](https://img-blog.csdnimg.cn/img_convert/49ba6200530c1809b5ab5b5530221d26.png)
问题:暂时没搞明白:
![1f7b69ed0dcca6d05d21ef0d625bb2d2.png](https://img-blog.csdnimg.cn/img_convert/1f7b69ed0dcca6d05d21ef0d625bb2d2.png)
随堂练习2:
![0702bd953d8a3ecf973c0caa15577a21.png](https://img-blog.csdnimg.cn/img_convert/0702bd953d8a3ecf973c0caa15577a21.png)
![997e234985c0949837892870f95d6a08.png](https://img-blog.csdnimg.cn/img_convert/997e234985c0949837892870f95d6a08.png)
随堂练习3:
![76722f0d3d907f63e641402db74af6bc.png](https://img-blog.csdnimg.cn/img_convert/76722f0d3d907f63e641402db74af6bc.png)
![2a853ce10f26cde5657728df77909baf.png](https://img-blog.csdnimg.cn/img_convert/2a853ce10f26cde5657728df77909baf.png)
![26e9b0d65c516487546ad4a6a9128352.png](https://img-blog.csdnimg.cn/img_convert/26e9b0d65c516487546ad4a6a9128352.png)
注:老师用的是inner join ,自己用left join 试写,也是ok,
【问】发现有时候left join和inner join运行的结果一样,是不是就都可以,以运行结果为准?还是应该严格区分?
【答】只是恰好结果一样,比如“学生表”和“成绩表联结。
如果所有学生都选课了,那么left join和inner join结果是一样的。
如果一部分学生没选课,那么eft join和inner join就不一样。
所以,选择哪种联结,不是看查询结果。而是在一开始要根据你想要保留哪部分数据来选择用哪种联结,然后才是写SQL。
四、CASE表达式:
![006f421409530c74a308c9f79d606858.png](https://img-blog.csdnimg.cn/img_convert/006f421409530c74a308c9f79d606858.png)
案例1:
![6cf31879a6355c17676e291bde6bd5ab.png](https://img-blog.csdnimg.cn/img_convert/6cf31879a6355c17676e291bde6bd5ab.png)
案例2:
![d63865be8eda5c15b941d0926581d38b.png](https://img-blog.csdnimg.cn/img_convert/d63865be8eda5c15b941d0926581d38b.png)
第一步:先写出每门课程人数:
![e995f8a8170d9dd09c99224817b1008a.png](https://img-blog.csdnimg.cn/img_convert/e995f8a8170d9dd09c99224817b1008a.png)
第二步:在细化成case函数
![31d021538534e1c284e94554c163bc57.png](https://img-blog.csdnimg.cn/img_convert/31d021538534e1c284e94554c163bc57.png)
运算步骤如下:
![37eb374779e4df4955f91d1c67db3087.png](https://img-blog.csdnimg.cn/img_convert/37eb374779e4df4955f91d1c67db3087.png)
随堂练习:
![915f718f491ff055d1d3b526dc9913cb.png](https://img-blog.csdnimg.cn/img_convert/915f718f491ff055d1d3b526dc9913cb.png)
注意事项:
![0bd52248c64e187344fd24e9ef52c04d.png](https://img-blog.csdnimg.cn/img_convert/0bd52248c64e187344fd24e9ef52c04d.png)
- else 可以不写,但尽量写上
- end 一定要写
- case函数不一定用在select后面,可以用在任何地方。
案例3:
![2cbb168d585af574544cb7740d297698.png](https://img-blog.csdnimg.cn/img_convert/2cbb168d585af574544cb7740d297698.png)
![00de592f2d24ddd24bb13d3cfe2cb7f6.png](https://img-blog.csdnimg.cn/img_convert/00de592f2d24ddd24bb13d3cfe2cb7f6.png)
随堂练习:
![0b261c15b5fcdb1753f7babdd0d6550e.png](https://img-blog.csdnimg.cn/img_convert/0b261c15b5fcdb1753f7babdd0d6550e.png)
Group by 后当用几个列来分组时,这几个列的值全部相同才算一组。