mysql case when then else多个条件_MySQL很难吗?DML-多表查询

4f6d032ceeabf66cdbf092b09e1c94da.png

本文要点:

649a0cdd5e752b7ee4db67f50a7f924f.png

一.表的加法

实例:

b3363262e3f9548ad25ed155ef8ba636.png

注:用union 将两个表合并之后,对于重复的数据数自动删除。若需要保留两个表中的重复数,需用union all,如下图:

007023ceba6636ce5a1207e97f4a5568.png

二.表的联结

总结:

5d2c23144c3f97c9c8cf2b9e600b458b.png

1.交叉联结 cross join

aa368091226aceaafc6441bc855199e9.png

dcda89e224aaa5f66b4fb1853b905483.png

2.内联结 inner join

实例:

dcda89e224aaa5f66b4fb1853b905483.png

64e6d70b201b429188d719a854600252.png

d2ccd4f2d1ab2710aa33506fdea6c153.png

3.左联结 left join

将左侧作为主表把表中的数据全部取出

实例:

b3376280bd41c60fb713228fa07830a4.png

c2b34154b409b9ce386589a3cf5ce34e.png

延伸:想要取出左边表中红色部分的数据,那么就意味着在左联结的基础上去掉公共部分的数据

79ff85d16217ae6fa1461f9b7a1ab5e4.png

41a4bb9ad8f0c22a756131ac868fb5a7.png

4.右联结 right join (和左联结类同)

实例:

10b136024f607b7ea5fd31fbb6ab64a9.png

5f603f962c55ed4328a2a5fcdde2c21e.png

5.全联结

注:MySQL 不支持全联结

三.联结应用案例

实例1:查询所有学生的学号、姓名、选课数、总成绩

5d009c3d51569509039920d8a843f0a3.png

1e9890a849b85fb1c1b60fd3fa796ba3.png

实例2:查询平均成绩大于80分学生的学号、姓名、平均成绩

思路点拨:

将问题拆解成两步--1.查询所有学生的学号、姓名、平均成绩

2.进一步查找出平均成绩大于80分的学生(对分组后的结果指定条件)

baf41ae09b4747c0ae1b5dddf2dbc01e.png

实例3.查询学生的选课情况:学号,姓名,课程号,课程名称

重点:三表联结

3292dad0cf09111116950ac0b46dc819.png

6bb0838b4ba71841791df7151626d139.png

四.case表达式

子句格式:

case when<判断表达式>then<表达式>

when<判断表达式>then<表达式>

···

else<表达式>

end /*不能省略*/

实例:查询课程的及格情况

afb03fdb7e6f5dd8a3e756157ca9ceb1.png

延伸1:查询出每门课程的及格人数和不及格人数

66d18fd43e88ec80c7dfca6751b525d5.png

延伸2. 使用分段[100-85],[85-70],[70-60],[<60]来统计各分段成绩的人数,课程号,课程名称

f505db897d4ff52283a82cc8981c0ba0.png

五.课后练习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值