SQL內(nèi)連接、外連接以及(+)號(hào)用法

SQL提供了多種類型的連接方式,它們之間的區(qū)別在于:從相互交疊的不同數(shù)據(jù)集合中選擇用于連接的行時(shí)所采用的方法不同。

A.內(nèi)連接

內(nèi)連接,即最常見的等值連接。(兩邊的表都加限制)

站在用戶的角度思考問題,與客戶深入溝通,找到潮安網(wǎng)站設(shè)計(jì)與潮安網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋潮安地區(qū)。

B.外連接

外連接分為左外連接,右外連接和全外連接。
左外連接:左表不加限制,保留左表的數(shù)據(jù),匹配右表,右表沒有匹配到的行中的列顯示為null。(左外連接就是在等值連接的基礎(chǔ)上加上主表中的未匹配數(shù)據(jù))
右外連接:右表不加限制,保留右表的數(shù)據(jù)。匹配左表,左表沒有匹配到的行中列顯示為null。(右外連接就是在等值連接的基礎(chǔ)上加上匹配表的不匹配數(shù)據(jù))
完全外連接:左右表都不加限制。即結(jié)果為:左右表匹配的數(shù)據(jù)+左表沒有匹配到的數(shù)據(jù)+右表沒有匹配到的數(shù)據(jù)。(完全外連接就是在等值連接的基礎(chǔ)上將左表和右表的未匹配數(shù)據(jù)都加上)

連接的語法:(通常外連接省略outer關(guān)鍵字)
left/right/full outer join ...on
left/right/full join ...on
(+)號(hào)的作用:+號(hào)可以理解為補(bǔ)充的意思,即哪個(gè)表有加號(hào),這個(gè)表就是匹配表。加在右表的列上代表右表為補(bǔ)充,為左外連接。加在左表的列上代表左表為補(bǔ)充,為右外連接。
注意:完全外連接不支持(+)寫法。

創(chuàng)建兩種表,生出測(cè)試數(shù)據(jù):

CREATE TABLE TQA (
id number,
name VARCHAR2(10)
);
CREATE TABLE TUB (
id number,
name VARCHAR2(10)
);

INSERT INTO TQA VALUES(1,'QA');
INSERT INTO TQA VALUES(2,'QB');
INSERT INTO TQA VALUES(3,'QC');
INSERT INTO TQA VALUES(4,'QD');
INSERT INTO TQA VALUES(5,'QE');

INSERT INTO TUB VALUES(1,'UA');
INSERT INTO TUB VALUES(1,'UB');
INSERT INTO TUB VALUES(2,'UC');
INSERT INTO TUB VALUES(1,'UD');
INSERT INTO TUB VALUES(7,'UE');

左外連接
select from TQA a left join TUB b on a.id=b.id;
select
from TQA a,TUB b where a.id=b.id(+);
SQL內(nèi)連接、外連接以及(+)號(hào)用法
右外連接
select from TQA a right join TUB b on a.id = b.id;
select
from TQA a,TUB b where a.id(+)=b.id;
SQL內(nèi)連接、外連接以及(+)號(hào)用法
完全外連接
select from TQA a full join TUB b on a.id=b.id;
SQL內(nèi)連接、外連接以及(+)號(hào)用法
等值連接(內(nèi)連接也可省略關(guān)鍵字inner,直接寫成join)
select
from TQA a,TUB b where a.id=b.id;
select * from TQA a join TUB b on a.id=b.id;~等值連接也可以這樣寫
SQL內(nèi)連接、外連接以及(+)號(hào)用法

注意:等值連接和完全外連接是有區(qū)別的。等值連接是只把滿足條件的兩個(gè)表的行相連,然后顯示出來。完全外連接是把匹配查詢條件的、左表沒有匹配到的、右表沒有匹配到的行都顯示出來。

總結(jié)

SQL 連接(inner/outer join)包括以下:
內(nèi)連接(兩邊的表都加限制)--[inner] join
左外連接(左邊的表不加限制)--left [outer] join
右外連接(右邊的表不加限制)--right [outer] join
全外連接(左右兩表都不加限制)--full [outer] join

在左外連接和右外連接時(shí)都會(huì)以主表為基礎(chǔ)表,該表的內(nèi)容會(huì)全部顯示,然后加上主表和匹配表匹配的內(nèi)容。 如果主表的數(shù)據(jù)在匹配表中沒有記錄,那么在相關(guān)聯(lián)的結(jié)果集行中列顯示為空值(null)。

內(nèi)連接,可以使用"(+)",但是必須省略。即兩張表均為"主表",都不是匹配表。
而對(duì)于外連接, 也可以使用“(+) ”來表示。

關(guān)于外連接使用(+)的一些注意事項(xiàng):

  1. (+)操作符只能出現(xiàn)在where子句中,并且不能與outer join語法同時(shí)使用。
  2. 當(dāng)使用(+)操作符執(zhí)行外連接時(shí),如果在where子句中包含有多個(gè)條件,則必須在所有條件中都包含(+)操作符。
  3. (+)操作符只適用于列,而不能用在表達(dá)式上。
  4. (+)操作符不能與or和in操作符一起使用。
  5. (+)操作符只能用于實(shí)現(xiàn)左外連接和右外連接,而不能用于實(shí)現(xiàn)完全外連接。

文章題目:SQL內(nèi)連接、外連接以及(+)號(hào)用法
分享網(wǎng)址:http://bm7419.com/article0/phdeoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司網(wǎng)站改版、微信小程序、網(wǎng)站營(yíng)銷網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)