資料庫中的左連接(left join)和右連接(right join)區別
- 2019 年 12 月 6 日
- 筆記
Left Join / Right Join /inner join相關
關於左連接和右連接總結性的一句話:
左連接where隻影向右表,右連接where隻影響左表。
Left Join
select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID
左連接後的檢索結果是顯示tbl1的所有數據和tbl2中滿足where 條件的數據。
簡言之 Left Join影響到的是右邊的表
Right Join
select * from tbl1 Right Join tbl2 where tbl1.ID = tbl2.ID
檢索結果是tbl2的所有數據和tbl1中滿足where 條件的數據。
簡言之 Right Join影響到的是左邊的表。
inner join
select * FROM tbl1 INNER JOIN tbl2 ON tbl1.ID = tbl2.ID
功能和 select * from tbl1,tbl2 where tbl1.id=tbl2.id相同。
其他相關資料
1 .WHERE子句中使用的連接語句,在資料庫語言中,被稱為隱性連接。INNER JOIN……ON子句產生的連接稱為顯性連接。(其他JOIN參數也是顯性連接)WHERE 和INNER JOIN產生的連接關係,沒有本質區別,結果也一樣。但是!隱性連接隨著資料庫語言的規範和發展,已經逐漸被淘汰,比較新的資料庫語言基本上已經拋棄了隱性連接,全部採用顯性連接了。
2 .無論怎麼連接,都可以用join子句,但是連接同一個表的時候,注意要定義別名,否則產生錯誤!
a> inner join:理解為「有效連接」,兩張表中都有的數據才會顯示left join:理解為「有左顯示」,比如on a.field=b.field,則顯示a表中存在的全部數據及a\b中都有的數據,A中有、B沒有的數據以null顯示
b> right join:理解為「有右顯示」,比如on a.field=b.field,則顯示B表中存在的全部數據及a\b中都有的數據,B中有、A沒有的數據以null顯示
c> full join:理解為「全連接」,兩張表中所有數據都顯示,實際就是inner +(left-inner)+(right-inner)
3 .join可以分主次表 外聯接有三種類型:完全外聯,左聯,右聯. 完全外聯包含兩張表的所有記錄. 左聯是以左邊的表為主,右邊的為輔,右聯則相反
4.一般要使得資料庫查詢語句性能好點遵循一下原則:
在做表與表的連接查詢時,大表在前,小表在 不使用表別名,通過欄位前綴區分不同表中的欄位 查詢條件中的限制條件要寫在表連接條件前 盡量使用索引的欄位做為查詢條件