左連線,右連線,內連線,全連線的區別及使用
阿新 • • 發佈:2021-01-16
左連線,右連線,內連線,全連線的區別及使用
眾所周知,我們在寫sql時經常會用到多表查詢資料,這就是涉及到連線的問題包括,左連線,右連線,內連線,全外連線。
定義:
左連線 (left join):返回包括左表的所有記錄和右表中連線欄位相等的記錄
右連線(right join):返回包括右表的所有記錄和左表中連線欄位相等的記錄
等值連線或者叫內連線(inner join):只返回兩表相連相等的行
全外連線(full join):返回左右表中所有的記錄和左右表中連線欄位相等的記錄。
只說概念還不夠清晰舉個例子就懂了!
A表: id name 1 張三 2 李四 3 王五 B表; id A_id class 1 1 一年一班 2 4 一年二班
如上有兩張表A表為學生表存id和姓名,B表為班級表存id,學生id,班級名。
來吧,展示
內連線:(只有2張表匹配的行才能顯示)
select a.name,b.class from A a inner join B b on a.id=b.A_id
所以只能顯示相連相等的行及A表id為1和B表A_id為一的
name class
張三 一年一班
左連線:
select a.name,b.class from A a left join B b on a.id-b.A_i`在這裡插入程式碼片`d
左表只有三條就顯示三條 和右表沒有相等欄位補bull
name class
張三 一年一班
李四 null
王五 null
右連線
select a.name,b.class from A a right join B b on a.id=b.A_id
右表只有兩條就顯示兩條 和左表沒有相等欄位補null
name class
張三 一年一班
null 一年二班
全連線
select a.name,b.class from A a full join B b on a.id=b.A_id
全部顯示
name class
張三 一年一班
null 一年二班
李四 null
王五 null