表的加法:
利用union和union all


区别:union连接的话重复只会出现一次,union all则将俩个表内所有数据合并

可能会将查询后的表作为新表。mysql中使用上面的方法是可以实现的
表的联结:(join)mysql之所有叫关系型数据库,就是因为表与表之间可以建立关系

建立的四张表的结构应该是这样
联结分类:交叉联结,内连接,左连接,右连接,全连接
交叉联结:

笛卡尔积。每条数据都会重新组合为一条新的数据
学生表:

成绩表:

内连接:(得到俩表都有的数据)俩个表的交际会显示出来

0001.0002.0003在俩个表中都有,显示出来了,最后返回的是笛卡尔积。交叉联结的格式
左连接:

左连接显示完左表的所有数据,右表有的话加在后面,没有的话显示为null
如果想要左表中除去右表的结果,可以

右连接:

同左连接类似
全连接:(左右表的都显示完,都有则显示在一行,没有的显示为null)
mysql中默认是没有全连接的。可以用左右连接加起来来实现类似

练习1:
查询所有学生的学号,姓名,选课数,总成绩
查询序号姓名,在学生表,选课数成绩在成绩表,多表查询

练习2:
查询平均成绩大于85的所有学生的学号,姓名和平均成绩
先查询出所有学生的学号名字,平均成绩,在选择平均成绩大于85的

练习3:查询学生的选课情况,学号,名字,课程号,课程名称
学号,名字在学生表,课程号,课程名称在课程表,
但是。学生表和课程表之间没有任何直接的关系,需要通过中间桥梁成绩表来关联。三个表的联合查询

case表达式。在sql有的时候需要对符合条件的进行判断。类似if判断语句
用法:case when 判断表达式 then 表达式
when 判断表达式 then 表达式
else 表达式
end

手动加入不及格的。看是否符合想象的方式、

那就没问题
练习4:查询出每门课程的及格人数和不及格人数
每门课程,需要分组

练习5:查询出每门课程的人数
同样,对课程号进行分组

练习6:使用分段[100-85],[85-70],[75-60],[<60]来统计各科成绩,分别统计个分数段人数,课程号和课程名称

















