成绩的查询和排序功能实现_sql多表查询

表的加法:

利用union和union all

8a7f53757dc2bb40b58319389f40d9e7.png

68ecb5dfdae22be770ab579d7fa8e2e1.png

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

f73a536e7c1fde10b5453bf060e9df4c.png

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

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

96343ff72936984960a8aad934394f34.png

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

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

交叉联结:

40df1bbe3a0e518ec8bd1c4d84b4175d.png

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

学生表:

b090362b86442ac2ece0378caef32777.png

成绩表:

a9b578eba66a57d36d524d1ef14e236c.png

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

85fab7a6d99bf3db4ceb5642a3b59ce8.png

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

左连接:

a4b51afe02d078307f417f976122dbbd.png

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

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

d1a4fd90e01527a909e1b6c9019fcc94.png

右连接:

4392f338ec5a754da6ccee875e14c5de.png

同左连接类似

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

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

d7dc844d67d6c7b7557a1e76b06a7cc1.png

练习1:

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

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

9adfb3e49b0c5a2a2009fa2a56122799.png

练习2:

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

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

04268d17f4ba7cb2a3b7cea92bd24efa.png

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

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

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

19f720218e7428b19b2eaf699ab4275c.png

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

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

when 判断表达式 then 表达式

else 表达式

end

1e63c022f9404b75029b90a84deb08f5.png

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

0596246ff9cd9be3d2435d8a1d8b44bb.png

那就没问题

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

每门课程,需要分组

2a28eb6ee37b2407acef0006b482cfc6.png

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

同样,对课程号进行分组

13b19eed4539413c2c9749f6b40f7b59.png

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

dde5ad4665a288aa0aca742c7ea2b012.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值