數據庫左連接和右連接有什么區別

數據庫中的左連接和右連接的區別可以概括為一句話來表示即左連接where只影響右表,右連接where只影響到左表

數據庫左連接和右連接有什么區別

【推薦課程:MySQL教程

數據庫中的左連接(left join)和右連接(right join)區別

左連接(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子句,但是連接同一個表的時候,注意要定義別名,否則產生錯誤

?(1)inner join:理解為“有效連接”,兩張表中都有的數據才會顯示left join:理解為“有左顯示”,比如on a.field=b.field,則顯示a表中存在的全部數據及ab中都有的數據,A中有、B沒有的數據以NULL顯示

(2) right join:理解為“有右顯示”,比如on a.field=b.field,則顯示B表中存在的全部數據及ab中都有的數據,B中有、A沒有的數據以null顯示

(3)full join:理解為“全連接”,兩張表中所有數據都顯示,實際就是inner +(left-inner)+(right-inner)

3、join可以分主次表 外聯接有三種類型:完全外聯,左聯,右聯。完全外聯包含兩張表的所有記錄,左聯是以左邊的表為主,右邊的為輔,右聯則相反

4、一般要使得數據庫查詢語句性能好點遵循以下原則:

在做表與表的連接查詢時,大表在前,小表在

不使用表別名,通過字段前綴區分不同表中的字段

查詢條件中的限制條件要寫在表連接條件前

盡量使用索引的字段做為查詢條件

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享