leftjoin多表联合查询_利用SQL进行多表查询

数据库的实质,就是一张张表的联结和联系,在SQL中,每个表都设置有一个主键,并且通过主键建立与另一张表的联系,另一张表中又有其主键,再次通过主键建立与另一张表的联系。

多表查询便是建立在主键的基础上的查询方式,主要有以下内容。

  1. 表的加法
  2. 表的联结
  3. 联结应用案例
  4. Case表达式
  5. 综合应用

1.表的加法

主要运用语句:union 和 union all

d9368844366568019b1d9805ab68995c.png

union语句把两表之间不同的部分联结在一起,重复的部分,没有被保留,如需保留重复的部分需要使用union all

3f37a85dbf47325bc2c4dfe1290e8f4d.png

2.多表之间的关系

8491b75e54b1fb24294d05b25701fe91.png

如图所示,各个表之间,通过主键联结到一起。

2.1联结的种类

e5026b4380a123c5fd05ccd268295e98.png

2.1.1交叉联结(笛卡尔积)

9e42091904918a6639b7197ea08da22b.png

2.1.2内联结(取两表之间主键的交集,inner join)

8a2cee663205f665958a4a74a76c8738.png

例子:

87b112286650126ba41f5cd5feb34522.png

2.1.3左联结(left join)

61f29c0197da8664bdd1d69be51fc342.png

例子:

2d2405a4eeebab665570f812bff862c4.png

查询出现空值的数据行:

4285adb9d9e5e8df87347b29b4ba01a5.png

2.1.4右联结

c882cef6a7c98418adce6e9ab79eae09.png

例子:

38f3652a83c368a3870c3205f48ef77f.png

因为在表score中,学号列只有‘0001’‘0002’‘0003’,而student表中的学号正好有这三个,所以匹配结果没有出现空值,由于是右联结,在输出的学号中需要写成y.学号(图中用红椭圆圈出部分)。

2.1.5全联结

47b46c54125c00675d250ec8aea8d46f.png

所谓全联结就是取两表特定值的的并集,但由于SQL中,并没有全联结语句,只要理解全联结的含义即可。


3.联结应用案例

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

00968b6b1bb9476cb762f113974ee02c.png

此处使用左联结,因为只有在student中才包含了所有学生,但王思聪在score中没有对应数据,因此为空值。

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

eb8bdecfaad99eb78a6f057f2af9b597.png

3.3查询学生的选课情况:学号,姓名,课程号,课程名称

c3dd554037acd3c60c89cb6d079a8645.png

4.case表达式

6b4d603a70eb0b6970c27c33e32aeb6d.png

例子:查询每门课程的及格人数和不及格人数

68d98a93f6c7026eb3887dccb530f489.png

例子2:使用分段100-85,、85-70、70-60、<60来统计各科成绩

9629a0a4f5454574e07371b76c562c25.png

5.综合练习

数据:

20591ca6566432129fe4b807c177faa2.png

练习:

8818408e31e7709feaad4441bbadc642.png

cd89203353e3509ef56b90b8fe784772.png

bdac8a77ffc83543066818b2f7177dad.png

39f20fc121c78560bb3c17c3365a7bed.png

87a161f798eb4ec014aaa0151d493bf3.png

f33c4a1b8a57133c0730a5c3ec82cf5b.png

f60085d2732c932653ae0cbf6d4b8d2e.png

7b532540d39b9c0376dd1e55ce60da4f.png

3dd0b54b05cf6a428ec95232d38102d6.png

755b7959df12dac500533ddcc3ae72fd.png

998f1e589b4d4886668509c39d8f5d56.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值