SqlServer左连接、右连接、全连接、外连接、内连接


Student表:
在这里插入图片描述

Score表:
在这里插入图片描述

一、外连接

外连接分为左连接(LEFT JOIN)或称为左外连接(LEFT OUTER JOIN),右连接(RIGHT JOIN)或称为右外连接(RIGHT OUTER JOIN),全连接(FULL JOIN)或称为全外连接(FULL OUTER JOIN)。我们简称:左连接、右连接和全连接。

1.左连接

左外连接。执行规则:返回左表中的所有行,如果左表中行在右表中没有匹配行,则结果中右表中的列返回空值。

查询:

select Student.sid, Student.sname, Score.score
from Student
left join
Score
on Student.sid = Score.sid

结果:
在这里插入图片描述

2.右连接

右外连接。执行规则:与左连接相反,返回右表中的所有行,如果右表中行在左表中没有匹配行,则结果中左表中的列返回空值。

查询;

select Student.sid, Student.sname, Score.score
from Student
right join
Score
on Student.sid = Score.sid

结果:
在这里插入图片描述

3.全连接

全外连接。执行规则:返回左表和右表中的所有行。当某行在另一表中没有匹配行,则另一表中的列返回空值。

查询:

select Student.sid, Student.sname, Score.score
from Student
full join
Score
on Student.sid = Score.sid

结果:
在这里插入图片描述

三、内连接

执行规则:获取两表的公共部分的记录

写法一

查询:

select Student.sid, Student.sname, Score.score
from Student
inner join
Score
on Student.sid = Score.sid

结果:
在这里插入图片描述

写法二

查询:

select Student.sid, Student.sname, Score.score
from Student,Score
where Student.sid = Score.sid

结果:
在这里插入图片描述

四、sqlserver外连接、内连接执行顺序上的探究

这里我们来探究一下外连接与内连接在执行顺序上的差异。

表:
在这里插入图片描述

外连接查询:

select a.sid, a.score, b.sid, b.score
from Score a
left join
Score b
on a.score > b.score

内连接查询:

select a.sid, a.score, b.sid, b.score
from Score a
inner join
Score b
on a.score > b.score

外连接结果:
在这里插入图片描述
内连接结果:
在这里插入图片描述

执行结果上的差异我们不谈,我们来看看sqlserver内部的执行顺序是什么,我们可以发现外连接的score是逐渐增加的,其实它的执行顺序是这样的。
在这里插入图片描述
而内连接的score是呈驼峰状的,其实它的执行顺序是这样的。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值