sql中的左連,右連,內連,全連接---經常忘記,稍微記錄一下

表a                                                 

id name
1 aaa
2 bbb
表b
id name
2 123
3 456
5 789

1.內連接

 select * form a inner join b on a.id = b.id

結果 :a和b兩表中都有的數據,其餘數據全部捨棄。

id name id name
2 bbb 2 123

2.左外連接

select * from a left outer join b on a.id = b.id

結果:以左邊表的結果爲準,右邊表中不存在的以Null填充,計算順序是先執行內連接,然後在將左邊有的數據和右邊沒有的數據組合填充。

id name id name
1 aaa null null
2 bbb 2 123

3.自然連接

select * from a natural inner join b

結果:相同的連接屬性(id)去除掉,只顯示一次,不再重複顯示,與內連接差別不大

id name name
2 bbb 123

4.右外連接

select * from a right outer join b on a.id = b.id

結果:以右邊的表的結果爲準,左邊的表沒有對應數據的以null填充

id name id name
2 bbb 2 123
null null 3 456
null null 5 789

以上left outer 和 right outer 中的outer 均可以省略

5. 全外連接

 select * from a full outer join b using(id)

結果:綜合左外連接和右外連接的結果

id name id name
1 aaa null null
2 bbb 2 123
null null 3 456
null null 5 789

 

實際上我們比較常用的就是左外連接

另外按照我個人的理解,select * from a,b where a.id = b.id 應該也屬於內連接類型的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章