1、表的加法
select`.... from 表1 union select ...... from 表2;
union all 会保留两个表的重复行
2、表的联结
(1)交叉连接(cross join)
(2)内联结(inner join): 保留两个表相同部分
(3)左联结(left join):保留左边表的全部和两个表相同的部分
(4)右联结(left join):保留右边表的全部和两个表相同的部分
(5)全联结(mysql不支持)
各种联结形式总结如下:
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》
三、如何用sql解决业务问题
思路:翻译成大白话(理解业务需要解决什么问题)->写出分析思路->写出对应sql子句
例题
1、查询所有学生的学号、姓名、选课数、总成绩
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》
2、查询平均成绩大于85的所有学生的学号、姓名和平均成绩
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》
3、查询学生的选课情况:学号,姓名,课程号,课程名称(三表联结)
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》
四、case表达式
case when<判断表达式>then<表达式>
when<判断表达式>then<表达式>
when<判断表达式>then<表达式>
..... else <表达式>
end
例题:
1、查询出每门课程的及格人数和不及格人数
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》
2、使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计各分数段人数,课程号,课程名称。
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》
五、练习(sqlzoo)