SqlServer左連接、右連接、全連接、外連接、內連接


一、外連接
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM