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