casewhen多条件查询_SQL多表查询

一 表的加法(union)

Union 会去除重复数据

select 课程号,课程名称 from course union select 课程号,课程名称 from course1;

Union all 保留重复数据

select 课程号,课程名称 from course union all select 课程号,课程名称 from course1

二 表的连结(join)

cross join 笛卡尔积 :所有行可能的排列组合

内连结(inner join)

只取出符合条件的行交叉连结

select a.学号, b.课程号 
from student as a inner join score as b 
on a.学号= b.学号;

外连结: 左连接 右连结

左/右连结 以左表/右表为基表

左连接 取出左表,再取出右表所有复合条件的行进行连结。

右连结 同理

select a.学号, b.课程号 
from student as a left join score as b 
on a.学号= b.学号
where b.学号 is null;

全连结 full join

MySQL没有该功能。取出所有行,两表无法match的地方null

7e8ae43fe0747536a91b982141303175.png

三 连结应用案例

练习

78dd460c3209cbad0fb77f75f8b8fd35.png

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

学号,姓名 在 student表

选课数 count(distinct课程号) group by 学号 在 score 表

总成绩 sum(score) group by 学号 在score表

d12a0d32cfff5e5c0eea5cbe723467de.png

2.

学生的学号,姓名 在student表 按学号分组,平均成绩>85:avg(score) group by a.学号

f2044956447c0852698ca77a77479fac.png

3

学号,姓名 在 student 表

学号, 课程号 在score表

课程号,课程名称在course表

4c5d6b0520fb9f4fd093d92303b37f9e.png

四 case when表达式

当有多种情况需要条件判断的时候需要case when 表达式

7a9209dbad97327aee26002f3c998ea1.png

62cd2cf24539bf27c1a40e4653b92dfa.png

3b508d03275ee3e042b0fbdce241d98f.png

练习

c7f6d5924b59d8ad112ec3cb3a5c96b8.png

1

2e702e557ccd249ede26a648503135f6.png

2

2259c6b02eaa1d2138ca4c320b8b84e8.png

SQLZOO 练习

4e883f8e3b6e2a844b0e2774a7417212.png

22987249836a78b77f167a5efeb910c5.png

4842964eb46ff99b112fc623ae746e75.png

60edb3894264b5b325de84a1490198c2.png

c5245c7bde3a9e2fb128560fe53cb5f2.png

97fae3bf8046258c80a7e4036d0730ec.png

3f9b55496de5a4a0b7902cc7255a15cb.png

4fd63e5c58fccaa0c9f390589313c639.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值