1.mysql中的左連接、內連接、右連接和全連接理解

內連接(INNER JOIN)(典型的連接運算,使用像   =   或   <>   之類的比較運算符)。包括相等連接和自然連接。 內連接使用比較運算符根據每個表共有的列的值匹配兩個表中的行 
左連接(LEFT   JOIN   或   LEFT   OUTER   JOIN)是右左邊表中的數據爲基準,若左表有數據右表沒有數據,否則顯示左表中的數據右表中的數據顯示爲空 
右連接(RIGHT  JOIN  或  RIGHT   OUTER   JOIN)是以右邊表中的數據爲基準,若右表有數據左表沒有數據,否則顯示右表中的數據左表中的數據顯示爲空 
全連接( FULL   JOIN   或   FULL   OUTER   JOIN)   完整外部連接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數據值。 
下面用幾個實例來詳細說明 
兩個表: 
A(id,name) 
數據:(1,張三)(2,李四)(3,王五) 
B(id,name) 

數據:(1,學生)(2,老師)(4,校長)

內連接結果: 
select A.*,B.* from A inner join B on A.id=B.id; 
1 張三 1    學生 
2 李四 2    老師 

左連接結果: 
select A.*,B.* from A left join B on A.id=B.id; 
1 張三 1    學生 
2 李四 2    老師 
3 王五 NULL NULL 

右連接結果: 
select A.*,B.* from A right join B on A.id=B.id; 
1    張三 1 學生 
2    李四 2 老師 
NULL NULL 4 校長 

全連接結果 
select A.*,B.* from A full join B on A.id=B.id; 
1 張三 1    學生 
2 李四 2    老師 
3 王五 NULL NULL 
NULL NULL 4 校長 

**************** 
補充:下面這種情況就會用到外連接 
比如有兩個表一個是用戶表,一個是交易記錄表,如果我要查詢每個用戶的交易記錄就要用到左外外連接,因爲不是每個用戶都有交易記錄。 
用到左外連接後,有交易記錄的信息就會顯示,沒有的就顯示NULL,就像上面我舉得例子一樣。 
如果不用外連接的話,比如【王五】沒有交易記錄的話,那麼用戶表裏的【王五】的信息就不會顯示,就失去了查詢所有用戶交易記錄的意義了。 
**************** 

看一下結果就能明白各種連接的區別了。

發佈了13 篇原創文章 · 獲贊 25 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章