中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-07-30 14:08:31 來源:網絡 閱讀:459 作者:MChopin 欄目:關系型數據庫

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

A.內連接

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

B.外連接

外連接分為左外連接,右外連接和全外連接。
左外連接:左表不加限制,保留左表的數據,匹配右表,右表沒有匹配到的行中的列顯示為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(+);
SQL內連接、外連接以及(+)號用法
右外連接
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內連接、外連接以及(+)號用法
完全外連接
select from TQA a full join TUB b on a.id=b.id;
SQL內連接、外連接以及(+)號用法
等值連接(內連接也可省略關鍵字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內連接、外連接以及(+)號用法

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

總結

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

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

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

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

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

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沛县| 额尔古纳市| 开江县| 黑河市| 阳信县| 宁德市| 绥宁县| 临泉县| 哈巴河县| 麻栗坡县| 满洲里市| 达尔| 望奎县| 神木县| 临漳县| 石首市| 绍兴县| 星子县| 新龙县| 连城县| 新郑市| 汉寿县| 始兴县| 德钦县| 通江县| 商河县| 南康市| 游戏| 津南区| 新和县| 潼关县| 郴州市| 宁国市| 宜兴市| 咸阳市| 柘城县| 称多县| 钦州市| 土默特右旗| 甘孜县| 育儿|