SQL的四種連接(內連接,外連接)


一,內連接(inner join)

內連接(INNER JOIN):分顯式的和隱式的,返回連接表中符合連接條件和查詢條件的數據行。(所謂的連接表就是數據庫在做查詢形成的中間表)。

1.隱式的內連接

沒有INNER JOIN,形成的中間表為兩個表的笛卡爾積。

SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME FROM CUSTOMERS C,ORDERS O WHERE C.ID=O.CUSTOMER_ID;

2.顯示的內連接 一般稱為內連接,有INNER JOIN,形成的中間表為兩個表經過ON條件過濾后的笛卡爾積。

SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME FROM CUSTOMERS C INNER JOIN ORDERS O ON C.ID=O.CUSTOMER_ID;

二,外連接(左外,右外,全外)

外連不但返回符合連接和查詢條件的數據行,還返回不符合條件的一些行。

1.左外連接(left outer join)

左向外聯接的結果集包括 LEFT OUTER子句中指定的左表的所有行,而不僅僅是聯接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值。
SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;

2.右外連接(right outer join)

右向外聯接是左向外聯接的反向聯接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。
SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME FROM ORDERS O RIGHT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;

3.全外連接(full outer join)

完整外部聯接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數據值。
SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME FROM ORDERS O FULL OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;

三,聯合查詢(union/union all)

union 操作符用於合並兩個或多個 SELECT 語句的結果集。請注意,union 內部的 select語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 select語句中的列的順序必須相同。

SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2

union 與 unionall區別在於是否剔除重復的查詢數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM