您好,登錄后才能下訂單哦!
內連接,即最常見的等值連接。(兩邊的表都加限制)
外連接分為左外連接,右外連接和全外連接。
左外連接:左表不加限制,保留左表的數據,匹配右表,右表沒有匹配到的行中的列顯示為null。(左外連接就是在等值連接的基礎上加上主表中的未匹配數據)
右外連接:右表不加限制,保留右表的數據。匹配左表,左表沒有匹配到的行中列顯示為null。(右外連接就是在等值連接的基礎上加上匹配表的不匹配數據)
完全外連接:左右表都不加限制。即結果為:左右表匹配的數據+左表沒有匹配到的數據+右表沒有匹配到的數據。(完全外連接就是在等值連接的基礎上將左表和右表的未匹配數據都加上)
連接的語法:(通常外連接省略outer關鍵字)
left/right/full outer join ...on
left/right/full join ...on
(+)號的作用:+號可以理解為補充的意思,即哪個表有加號,這個表就是匹配表。加在右表的列上代表右表為補充,為左外連接。加在左表的列上代表左表為補充,為右外連接。
注意:完全外連接不支持(+)寫法。
創建兩種表,生出測試數據:
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(+);
右外連接
select from TQA a right join TUB b on a.id = b.id;
select from TQA a,TUB b where a.id(+)=b.id;
完全外連接
select from TQA a full join TUB b on a.id=b.id;
等值連接(內連接也可省略關鍵字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 連接(inner/outer join)包括以下:
內連接(兩邊的表都加限制)--[inner] join
左外連接(左邊的表不加限制)--left [outer] join
右外連接(右邊的表不加限制)--right [outer] join
全外連接(左右兩表都不加限制)--full [outer] join
在左外連接和右外連接時都會以主表為基礎表,該表的內容會全部顯示,然后加上主表和匹配表匹配的內容。 如果主表的數據在匹配表中沒有記錄,那么在相關聯的結果集行中列顯示為空值(null)。
內連接,可以使用"(+)",但是必須省略。即兩張表均為"主表",都不是匹配表。
而對于外連接, 也可以使用“(+) ”來表示。
關于外連接使用(+)的一些注意事項:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。