sql 两表数据合并_SQL多表查询

本文详细介绍了SQL中不同类型的表联结,包括交叉联结、内联结、左联结、右联结以及案例应用,如查询学生信息、成绩统计等。此外,还探讨了CASE表达式的使用,如统计课程的及格和不及格人数,并通过实际足球比赛数据库举例说明如何进行数据联结查询。
摘要由CSDN通过智能技术生成

d996cc92734aa3886dfb4f4c26258dd8.png

练习1:表的加法:如何合并两个表

44b23edd88fc74e7539fbab6005c4c1c.png
course表、course1表

a15beac585d82bcc27041775d699cf1b.png
不保留重复项

078b7906a1ba864581c1db3ed8fa4679.png
保留重复项

练习2:表的联结

2.1交叉联结 cross join

a803766d2b88c6a1bd6ff6319eabaa63.png

2.2 内联结 inner join

将student表与score表关联,关联的要素为学号,两表无主次之分。若学号没有在两表中同时对应起来,则不返回。

620fa23bd49a4bfa09e7e1b042b195b0.png

2.3 左联结 left join

将student表与score表关联,关联的要素为学号,以左表为主,右表为次。若学号在左表中出现而右表中没有,则返回左表信息+右表空值信息。

b9d2d10ca171ca0a3096bd63f3712b90.png

若想只返回没有对应起来的部分,可以加WHERE语句将NULL值筛选出来

7f78488cb387f2553ab597f84995a6f1.png

2.4 右联结 right join

将score表与student表关联,关联的要素为学号,以右表为主,左表为次。若学号在右表中出现而左表中没有,则返回左表空值信息+右表信息。

c3cb400e080a0f91b561677d61cace50.png

若想只返回没有对应起来的部分,可以加WHERE语句将NULL值筛选出来

bbe302207c251d43792b0c1c8e0446ae.png

2.5全联结 full join

将student表与score表关联,关联的要素为学号,两表无主次之分。若学号没有在两表中同时对应起来,则没有对应部分均返回空值。

当前SQL没有full join 语句

dfb9d50788052421e4ffe8e5302c2e3d.png

小结:(VENN图)

bd103032519b90efbdded5ed0e2515d7.png

练习3:联结的应用案例

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

83613935138dc35b45175acd1a9582de.png

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

95910aaa2b71e84fbf37d971e192c78c.png

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

3056c73ae60e85d16b2a25ce4751f817.png

练习4:case表达式

bae249f820e034b1a6a07294d0b44969.png

4.1查询出每门课程的及格人数和不及格人数

d219cd2825b450257e19fb425668aee4.png

4.2使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计各分段人数:课程ID和课程名称

1bef2d8855f659214959cb95c280a021.png

练习5:案例

数据来源:https://sqlzoo.net/wiki/The_JOIN_operation/zh,这部分题目使用的是‘2012年欧洲足球锦标赛’数据库里的表。

1.比赛信息表game

id比赛编号,mdate比赛日期, stadium比赛地点, team1对战双方(球队编号1), team2对战双方(球队编号2)

8dcb4c5bfa768f31a7bfe7f879ca8a68.png

2.进球信息表goal

matchid比赛编号,teamid球队编号, player进球球员的姓名,gtime多长时间进的球(从开始比赛到进球多长时间,单位:分钟)

ea258b9e7951734b6c7d1f4e46308fa5.png

3.球队信息表eteam

id球队编号(联结2) teamname 球队名称 coach教练

ff343259bea12f95f32a60e58ed276c1.png

联结节点:

  • 比赛信息表game(id比赛编号)和进球信息表goal(matchid比赛编号)通过‘比赛编号’联结
  • 进球信息表goal(teamid球队编号)球队信息表eteam(球队编号id)通过‘球队编号’联结

922f2b38acd3ab1820ca9c1a73d7fe32.png

4227b00d55620ff1e763b3150384f18f.png

3d8f946d466d01e16d54ac5bfdff738b.png

08a1f026270984e03356799baf836d88.png

b7b92392f28c4cf3196dea28f97ad01c.png

e7bd8067ebefc2be553d06b2347acd73.png

779bc58451fe065b51e70ce47204cc17.png

ebc77bb7a26eccb564669a5bd45f5a0e.png

0a99b8c98e63b2f4be515092d326b30c.png

bc79d4d5c188381fda17ee9b6575b1bb.png

3547ae29fa3df6bfdefa5056cf60ad27.png

547738001e4d9f5e5e4afa49a6d7cb28.png

95ea20e04422c4558dea9d5a8a88cb6e.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值