表的加法:

利用union和union all




四表关联 mysql 数据库四表联查怎么写_四表关联 mysql


四表关联 mysql 数据库四表联查怎么写_成绩的查询和排序功能实现_02


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


四表关联 mysql 数据库四表联查怎么写_数据_03


可能会将查询后的表作为新表。mysql中使用上面的方法是可以实现的

表的联结:(join)mysql之所有叫关系型数据库,就是因为表与表之间可以建立关系


四表关联 mysql 数据库四表联查怎么写_四表关联 mysql_04


建立的四张表的结构应该是这样

联结分类:交叉联结,内连接,左连接,右连接,全连接

交叉联结:


四表关联 mysql 数据库四表联查怎么写_成绩的查询和排序功能实现_05


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

学生表:


四表关联 mysql 数据库四表联查怎么写_数据_06


成绩表:


四表关联 mysql 数据库四表联查怎么写_mysql_07


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


四表关联 mysql 数据库四表联查怎么写_mysql_08


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

左连接:


四表关联 mysql 数据库四表联查怎么写_mysql_09


左连接显示完左表的所有数据,右表有的话加在后面,没有的话显示为null

如果想要左表中除去右表的结果,可以


四表关联 mysql 数据库四表联查怎么写_成绩的查询和排序功能实现_10


右连接:


四表关联 mysql 数据库四表联查怎么写_四表关联 mysql_11


同左连接类似

全连接:(左右表的都显示完,都有则显示在一行,没有的显示为null)

mysql中默认是没有全连接的。可以用左右连接加起来来实现类似


四表关联 mysql 数据库四表联查怎么写_成绩的查询和排序功能实现_12


练习1:

查询所有学生的学号,姓名,选课数,总成绩

查询序号姓名,在学生表,选课数成绩在成绩表,多表查询


四表关联 mysql 数据库四表联查怎么写_mysql_13


练习2:

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

先查询出所有学生的学号名字,平均成绩,在选择平均成绩大于85的


四表关联 mysql 数据库四表联查怎么写_数据_14


练习3:查询学生的选课情况,学号,名字,课程号,课程名称

学号,名字在学生表,课程号,课程名称在课程表,

但是。学生表和课程表之间没有任何直接的关系,需要通过中间桥梁成绩表来关联。三个表的联合查询


四表关联 mysql 数据库四表联查怎么写_数据_15


case表达式。在sql有的时候需要对符合条件的进行判断。类似if判断语句

用法:case when 判断表达式 then 表达式

when 判断表达式 then 表达式

else 表达式

end


四表关联 mysql 数据库四表联查怎么写_全连接_16


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


四表关联 mysql 数据库四表联查怎么写_mysql_17


那就没问题

练习4:查询出每门课程的及格人数和不及格人数

每门课程,需要分组


四表关联 mysql 数据库四表联查怎么写_数据_18


练习5:查询出每门课程的人数

同样,对课程号进行分组


四表关联 mysql 数据库四表联查怎么写_全连接_19


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


四表关联 mysql 数据库四表联查怎么写_成绩的查询和排序功能实现_20