一、外连接
1.左连接
2.右连接
3.全连接
三、内连接
写法一
写法二
四、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
1
2
3
4
5
结果:
2.右连接
即右外连接。执行规则:与左连接相反,返回右表中的所有行,如果右表中行在左表中没有匹配行,则结果中左表中的列返回空值。
查询;
select Student.sid, Student.sname, Score.score
from Student
right join
Score
on Student.sid = Score.sid
1
2
3
4
5
结果:
3.全连接
即全外连接。执行规则:返回左表和右表中的所有行。当某行在另一表中没有匹配行,则另一表中的列返回空值。
查询:
select Student.sid, Student.sname, Score.score
from Student
full join
Score
on Student.sid = Score.sid
1
2
3
4
5
结果:
三、内连接
执行规则:获取两表的公共部分的记录
写法一
查询:
select Student.sid, Student.sname, Score.score
from Student
inner join
Score
on Student.sid = Score.sid
1
2
3
4
5
结果:
写法二
查询:
select Student.sid, Student.sname, Score.score
from Student,Score
where Student.sid = Score.sid
1
2
3
结果:
四、sqlserver外连接、内连接执行顺序上的探究
这里我们来探究一下外连接与内连接在执行顺序上的差异。
表:
外连接查询:
select a.sid, a.score, b.sid, b.score
from Score a
left join
Score b
on a.score > b.score
1
2
3
4
5
内连接查询:
select a.sid, a.score, b.sid, b.score
from Score a
inner join
Score b
on a.score > b.score
1
2
3
4
5
外连接结果:
内连接结果:
执行结果上的差异我们不谈,我们来看看sqlserver内部的执行顺序是什么,我们可以发现外连接的score是逐渐增加的,其实它的执行顺序是这样的。
而内连接的score是呈驼峰状的,其实它的执行顺序是这样的。
————————————————
版权声明:本文为CSDN博主「打不死Gin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dabusiGin/article/details/103409756