SQL的各種連接Join案例詳解
最常見(jiàn)的 JOIN 類(lèi)型:SQL INNER JOIN(簡(jiǎn)單的 JOIN)、SQL LEFT JOIN、SQL RIGHT JOIN、SQL FULL JOIN,其中前一種是內(nèi)連接,后三種是外鏈接。
假設(shè)我們有兩張表,Table A是上邊的表,Table B是下邊的表。
Table A
| id | name |
| 1 | |
| 2 | 淘寶 |
| 3 | 微博 |
| 4 |
Table B
| id | address |
| 1 | 美國(guó) |
| 5 | 中國(guó) |
| 3 | 中國(guó) |
| 6 | 美國(guó) |
一、INNER JOIN
內(nèi)連接是最常見(jiàn)的一種連接,只連接匹配的行。
inner join語(yǔ)法
select column_name(s) from table 1 INNER JOIN table 2 ON table 1.column_name=table 2.column_name
注釋?zhuān)篒NNER JOIN與JOIN是相同

INNER JOIN產(chǎn)生的結(jié)果集中,是1和2的交集。
select * from Table A inner join Table B on Table A.id=Table B.id
執(zhí)行以上SQL輸出結(jié)果如下:
| id | name | address |
| 1 | 美國(guó) | |
| 3 | 微博 | 中國(guó) |
二、LEFT JOIN
LEFT JOIN返回左表的全部行和右表滿(mǎn)足ON條件的行,如果左表的行在右表中沒(méi)有匹配,那么這一行右表中對(duì)應(yīng)數(shù)據(jù)用NULL代替。
LEFT JOIN 語(yǔ)法
select column_name(s) from table 1 LEFT JOIN table 2 ON table 1.column_name=table 2.column_name
注釋?zhuān)涸谀承?shù)據(jù)庫(kù)中,LEFT JOIN 稱(chēng)為L(zhǎng)EFT OUTER JOIN

LEFT JOIN產(chǎn)生表1的完全集,而2表中匹配的則有值,沒(méi)有匹配的則以null值取代。
select * from Table A left join Table B on Table A.id=Table B.id
執(zhí)行以上SQL輸出結(jié)果如下:
| id | name | address |
| 1 | 美國(guó) | |
| 2 | 淘寶 | null |
| 3 | 微博 | 中國(guó) |
| 4 | null |
三、RIGHT JOIN
RIGHT JOIN返回右表的全部行和左表滿(mǎn)足ON條件的行,如果右表的行在左表中沒(méi)有匹配,那么這一行左表中對(duì)應(yīng)數(shù)據(jù)用NULL代替。
RIGHT JOIN語(yǔ)法
select column_name(s) from table 1 RIGHT JOIN table 2 ON table 1.column_name=table 2.column_name
注釋?zhuān)涸谀承?shù)據(jù)庫(kù)中,RIGHT JOIN 稱(chēng)為RIGHT OUTER JOIN

RIGHT JOIN產(chǎn)生表2的完全集,而1表中匹配的則有值,沒(méi)有匹配的則以null值取代。
select * from Table A right join Table B on Table A.id=Table B.id
執(zhí)行以上SQL輸出結(jié)果如下:
| id | name | address |
| 1 | 美國(guó) | |
| 5 | null | 中國(guó) |
| 3 | 微博 | 中國(guó) |
| 6 |
四、FULL OUTER JOIN
FULL JOIN 會(huì)從左表 和右表 那里返回所有的行。如果其中一個(gè)表的數(shù)據(jù)行在另一個(gè)表中沒(méi)有匹配的行,那么對(duì)面的數(shù)據(jù)用NULL代替
FULL OUTER JOIN語(yǔ)法
select column_name(s) from table 1 FULL OUTER JOIN table 2 ON table 1.column_name=table 2.column_name

FULL OUTER JOIN產(chǎn)生1和2的并集。但是需要注意的是,對(duì)于沒(méi)有匹配的記錄,則會(huì)以null做為值。
select * from Table A full outer join Table B on Table A.id=Table B.id
執(zhí)行以上SQL輸出結(jié)果如下:
| id | name | address |
| 1 | 美國(guó) | |
| 2 | 淘寶 | null |
| 3 | 微博 | 中國(guó) |
| 4 | null | |
| 5 | null | 中國(guó) |
| 6 | null | 美國(guó) |
到此這篇關(guān)于SQL的各種連接Join案例詳解的文章就介紹到這了,更多相關(guān)SQL Join內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
數(shù)據(jù)設(shè)計(jì)之權(quán)限的實(shí)現(xiàn)
這篇文章主要介紹了數(shù)據(jù)設(shè)計(jì)之權(quán)限的實(shí)現(xiàn),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08
Sql Server下數(shù)據(jù)庫(kù)鏈接的使用方法
Sql Server下數(shù)據(jù)庫(kù)鏈接的使用方法...2006-12-12
MySQL與Oracle 差異比較之七用戶(hù)權(quán)限
這篇文章主要介紹了MySQL與Oracle 差異比較之七用戶(hù)權(quán)限,需要的朋友可以參考下2017-04-04
sql注入報(bào)錯(cuò)之注入原理實(shí)例解析
所謂報(bào)錯(cuò)注入,就是通過(guò)運(yùn)行SQL查詢(xún)語(yǔ)句回顯查詢(xún)結(jié)果,下面這篇文章主要給大家介紹了關(guān)于sql注入報(bào)錯(cuò)之注入原理的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
IntellJ Idea 2020版添加sqlite數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了IntellJ Idea 2020版添加sqlite數(shù)據(jù)庫(kù)的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
帶參數(shù)的sql和不帶參數(shù)的sql存儲(chǔ)過(guò)程區(qū)別
來(lái)執(zhí)行我們sql語(yǔ)句,看到很多分頁(yè)存儲(chǔ)過(guò)程都是直接拼湊sql語(yǔ)句然后用exec('')執(zhí)行起來(lái)了,這個(gè)從效率和安全上面來(lái)說(shuō),都是不推薦的。2008-09-09
數(shù)據(jù)庫(kù)命名規(guī)范小結(jié)
數(shù)據(jù)庫(kù)命名規(guī)范,在實(shí)際的數(shù)據(jù)庫(kù)開(kāi)發(fā)中,需要注意。2009-03-03
多種獲取遠(yuǎn)程連接access數(shù)據(jù)庫(kù)的方法
多種獲取遠(yuǎn)程連接access數(shù)據(jù)庫(kù)的方法...2007-03-03

