知识点 一、表的加法 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练习