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

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

A.內(nèi)連接

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

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

B.外連接

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

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

創(chuàng)建兩種表,生出測試數(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)連接、外連接以及(+)號用法
右外連接
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)連接、外連接以及(+)號用法
完全外連接
select from TQA a full join TUB b on a.id=b.id;
SQL內(nèi)連接、外連接以及(+)號用法
等值連接(內(nèi)連接也可省略關鍵字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)連接、外連接以及(+)號用法

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

總結

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

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

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

關于外連接使用(+)的一些注意事項:

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

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

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

廣告

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

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