知识点
一、表的加法
Union:删除表中的重复值
union al:包含表中所有内容,包括重复值


二、表的联结
联结:join
联结分为以下五种:
交叉联结(cross join)又称为笛卡尔积:将表中的每一行与另外表中的每一行联结在一起,结果的行数为两表行数的乘积。典型例子:扑克牌,实际业务应用较少,原因:a结果行数太多,需要花费大量运算成本和设备支持;b没有实际价值;交叉联结是其他联结的基础。

内联结(inner join):查找出同时存在于两组中的数据




左联结(left join):将左侧表中的数据取出来,将左侧表为主表,将左侧表中的数据全部取出来,右边的表中只选出和左边相同的学号的行。





右联结(right join):会将右侧表中的数据全部取出来




修改:left join 改为right join
全联结(full join):在SQL中无法应用

三、联结应用案例
1、 查询所有学生的学号、姓名、选课数、总成绩



2、 查询平均成绩大于85的所有学生的学号、姓名和平均成绩




3、 查询学生的选课情况:学号、姓名、课程号、课程名称


四、case表达式
作用:帮助解决复杂的查询问题,相当于进行一个条件判断的函数,用来判断每一行是否满足某个条件。
在何种情况下使用:多种情况需要判断时可以使用case表达式
注意:
1、 else子句可以省略不写,默认为空值,建议不省略;
2、 end 子句不可省略;
3、 case表达式看写在SQL任意子句中。







练习题
1、 查询所有学生的学号、姓名、选课数、总成绩

2、 查询平均成绩大于85的所有学生的学号、姓名和平均成绩

3、 查询学生的选课情况:学号、姓名、课程号、课程名称

4、 查询出每门课程的及格人数和不及格人数

5、 使用分段【100-85】,【85-70】,【70-60】,【<60】来统计各科出成绩,分别统计各分段人数:课程ID和课程名称

6、SQLzoo练习












