![98beccf6ba2f83f0ab96cdc3999e0375.png](https://i-blog.csdnimg.cn/blog_migrate/ebbe0071d297b9ac5d922d34f709f232.jpeg)
前期学的都是单张表中查询,这一课将开始学习从多张表查询。
1、表的加法
(1)定义:合并两个或多个的表,这些表的列名师一样的
(2)union 两张表联结并删除重复值
![8301ec1775c9f491f4d30a0069608eb4.png](https://i-blog.csdnimg.cn/blog_migrate/942bf48164c83532749edb8683dfe50d.jpeg)
(3)union all 两张表 两张表联结不会删除重复值
![7e6874ad0451cb6c7f63af8207307ad1.png](https://i-blog.csdnimg.cn/blog_migrate/48b91357b3e337c3d06f8f67f5d6adbc.jpeg)
2、表的联结
(1)定义:表和表之间的关系在数据库里叫做联结(join),多表查找也是通过联结来实现的
![9e4c2ca0ab45bccc008ef481c9bfafd1.png](https://i-blog.csdnimg.cn/blog_migrate/5089a5861ce8a8012780d48932d7f750.jpeg)
(2)交叉联结(cross join)表中的每一行都与另一个表中的每一行联结在一起
(3)内联结(inner join)查找出同时存在两张表中的数据
(4)左联结(left join)
(5)右联结(right join)
3、联结应用案例
(1)如何用SQL 解决业务问题
1)翻译成大白话
2)写出分析思路
3)写出对应的sql语句
(2)练习
1)/*查询所有学生的学号、姓名、选课数、总成绩*/
![3fb10d2096ae30074807d248b0e01486.png](https://i-blog.csdnimg.cn/blog_migrate/c67a1cc6e54a9af9af88d85722e4b1ee.jpeg)
2)/*查询平均成绩大于85的所有学生的学号、姓名和平均成绩*/
![3bdc6b62ae233244b68aca30a706e78f.png](https://i-blog.csdnimg.cn/blog_migrate/f2464e780d3af8e578a09b3ea1b1a8fa.jpeg)
3)/*查询学生的选课情况:学号,姓名,课程号,课程名称*/
![2094cb05231a7dee39579220f722e0a1.png](https://i-blog.csdnimg.cn/blog_migrate/f99fae641fd749abd25e775f73845a78.jpeg)
或
![c2bb70b904f5dc8cb8e2e784ad302513.png](https://i-blog.csdnimg.cn/blog_migrate/f71f4df87c3b940fcee7567a874e654c.jpeg)
4、case表达式
(1)定义:当有多种情况需要条件判断的时候可以使用case表达式,只会返回一个值
(2)练习
1)/*查询每门课的及格人数和不及格人数*/
![eda3284d37627a0b7a863ae33718ba60.png](https://i-blog.csdnimg.cn/blog_migrate/cf5c7266ccbc40854f4283710ef70c54.jpeg)
或者
![e1275d905e86fc2e7e65b36c7147be66.png](https://i-blog.csdnimg.cn/blog_migrate/e98eeef1376b2be328c96dcaa4462b78.jpeg)
2)/*使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计:各分段人数,课程号和课程名称*/
![01cde5ae48462e192506432752e35885.png](https://i-blog.csdnimg.cn/blog_migrate/919e7256873a1279a4f2fa89f476afd6.jpeg)
(2)应用注意事项
1)else可以不写,默认为空值,但在sql书写习惯上最好不省略;
2)最后的end必须写上,不能省略;
3)case表达式可以写在sql的任意子句中