1. 程式人生 > 其它 >左連線,右連線,內連線,全連線的區別及使用

左連線,右連線,內連線,全連線的區別及使用

技術標籤:筆記mysqlsqljava

左連線,右連線,內連線,全連線的區別及使用

眾所周知,我們在寫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

難度在高一點就是巢狀連線,去連線連線之後的新表等等。好好研究吧