日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 建表id自增长_oracle 左连接、右连接、全外连接、内连接、以及 (+) 号用法...

發布時間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 建表id自增长_oracle 左连接、右连接、全外连接、内连接、以及 (+) 号用法... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Oracle中的連接可分為,內連接(INNER JOIN)、外連接(OUTER JOIN)、全連接(FULL JOIN),不光是 Oracle,其他很多的數據庫也都有這3種連接查詢方式。

Oracle 外連接(OUTER JOIN),又分為左外連接和右外連接,即左連接和右連接。

左外連接 LEFT OUTER JOIN == 左連接 LEFT JOIN(左邊的表不加限制)

右外連接 RIGHT OUTER JOIN == 右連接 RIGHT JOIN(右邊的表不加限制)

全外連接 FULL OUTER JOIN == 全連接 FULL JOIN(左右兩表都不加限制)

注意:通常寫 SQL 的時候會省略 OUTER 關鍵字。

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

對于外連接,也可以使用 "(+)" 操作符來表示。使用時的一些注意事項:

1. 操作符只能出現在 WHERE 子句中,并且不能與 OUTER JOIN 語法同時使用;

2. 操作符執行外連接時,如果在 WHERE 子句中包含有多個條件,則必須在所有條件中都包含 (+) 操作符;

3. 操作符只適用于列,而不能用在表達式上;

4. 操作符不能與 OR 和 IN 操作符一起使用;

5. 操作符只能用于實現左外連接和右外連接,而不能用于實現全外連接;

SELECT * FROM t_A;

SELECT * FROM t_B;

左外連接,又名左連接(OUTER LEFT JOIN / LEFT JOIN)

LEFT JOIN 是以左表的記錄為基礎的,t_A 可以看成左表,t_B 可以看成右表,它的結果集是 t_A 表中的全部數據,再加上 t_A 表和 t_B 表匹配后的數據。換句話說,左表 t_A 的記錄將會全部表示出來,

而右表 t_B 只會顯示符合搜索條件的記錄。t_B 表記錄不足的地方均為 NULL。

SELECT * FROM t_A a LEFT JOIN t_B b ON a.id = b.id;

或 SELECT * FROM t_A a LEFT OUTER JOIN t_B b ON a.id = b.id;

用 (+) 來實現,這個 + 號可以這樣來理解:+ 表示補充,即哪個表有加號,這個表就是匹配表。如果加號寫在右表,左表就是全部顯示,所以是左連接。

SELECT * FROM t_A a,t_B b WHERE a.id=b.id(+);

右外連接,又名右連接(RIGHT OUTER JOIN / RIGHT JOIN)

和 LEFT JOIN 的結果剛好相反,是以右表 t_B 為基礎的。它的結果集是 t_B 表所有記錄,再加上 t_A 和 t_B 匹配后的數據。 t_A 表記錄不足的地方均為 NULL。

SELECT * FROM t_A a RIGHT JOIN t_B b ON a.id = b.id;

或 SELECT * FROM t_A a RIGHT OUTER JOIN t_B b ON a.id = b.id;

用 (+) 來實現,這個 + 號可以這樣來理解: + 表示補充,即哪個表有加號,這個表就是匹配表。如果加號寫在左表,右表就是全部顯示,所以是右連接。

SELECT * FROM t_A a,t_B b WHERE a.id(+)=b.id;

全外連接,又名全連接(FULL OUTER JOIN / FULL JOIN)

左表和右表都不做限制,所有的記錄都顯示,兩表不足的地方均為 NULL。 全外連接不支持 (+) 寫法。

以 id 為限制的用法:

SELECT * FROM t_A a FULL JOIN t_B b ON a.id = b.id;

或 SELECT * FROM t_A a FULL OUTER JOIN t_B b ON a.id = b.id;

不加限制的用法:

SELECT * FROM t_A FULL JOIN t_B ON 1=1;

內連接,又名自連接(INNER JOIN / JOIN)

查出的記錄既存在于 t_A,又存在于 t_B,即查出匹配兩張表的數據。

SELECT * FROM t_A a,t_B b WHERE a.id = b.id;

或 SELECT * FROM t_B b,t_A a WHERE b.id = a.id;

或 SELECT * FROM t_A a JOIN t_B b ON a.id = b.id;

或 SELECT * FROM t_A a INNER JOIN t_B b ON a.id = b.id;

或 SELECT * FROM t_B b JOIN t_A b ON b.id = a.id;

或 SELECT * FROM t_B b INNER JOIN t_A a ON b.id = a.id;

笛卡爾乘積,又名笛卡爾積(CROSS JOIN)

不加任何條件,達到 M*N 的結果集

SELECT * FROM t_A a CROSS JOIN t_B b;

或 SELECT * FROM t_A a,t_B b;

注意:如果 CROSS JOIN 加上 WHERE ON a.id = b.id 條件,會產生跟內連接(自連接)一樣的結果(CROSS JOIN 后 加上 ON 會報錯);

即 SELECT * FROM t_A a CROSS JOIN t_B b WHERE a.id = b.id;(不需要 ON) 相當于 SELECT * FROM t_A a JOIN t_B b ON a.id = b.id;

總結

以上是生活随笔為你收集整理的oracle 建表id自增长_oracle 左连接、右连接、全外连接、内连接、以及 (+) 号用法...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。