Oracle 中的 JOIN 操作主要有以下幾種類型:
INNER JOIN(內(nèi)連接): INNER JOIN 是最常用的一種連接方式,只返回兩個表中滿足連接條件的記錄。如果一條記錄在其中一個表中沒有對應的匹配項,則不會出現(xiàn)在結(jié)果集中。
示例:
SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;
LEFT OUTER JOIN(左外連接): LEFT OUTER JOIN 返回左表中的所有記錄,即使右表中沒有與之匹配的記錄。如果右表中沒有匹配項,則結(jié)果集中的右表字段將顯示為 NULL。
示例:
SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.column = table2.column;
RIGHT OUTER JOIN(右外連接): RIGHT OUTER JOIN 返回右表中的所有記錄,即使左表中沒有與之匹配的記錄。如果左表中沒有匹配項,則結(jié)果集中的左表字段將顯示為 NULL。
示例:
SELECT * FROM table1 RIGHT OUTER JOIN table2 ON table1.column = table2.column;
FULL OUTER JOIN(全外連接): FULL OUTER JOIN 返回兩個表中滿足連接條件的所有記錄。如果一條記錄在其中一個表中沒有對應的匹配項,則結(jié)果集中的另一個表的字段將顯示為 NULL。
示例:
SELECT * FROM table1 FULL OUTER JOIN table2 ON table1.column = table2.column;
CROSS JOIN(笛卡爾積連接): CROSS JOIN 返回兩個表中所有可能的行組合。它實際上是在沒有 WHERE 子句的情況下執(zhí)行 INNER JOIN。這種連接通常用于創(chuàng)建笛卡爾積,即兩個表中所有行的組合。
示例:
SELECT * FROM table1 CROSS JOIN table2;
SELF JOIN(自連接): 自連接是一種特殊類型的連接,它將表與其自身連接。這在處理層次結(jié)構數(shù)據(jù)或查找表中某個記錄的相關記錄時非常有用。
示例:
SELECT * FROM table1 t1, table1 t2 WHERE t1.column = t2.column;
請注意,Oracle 也支持使用 NATURAL JOIN 和 USING 子句進行連接,但它們較少使用,因此在這里沒有詳細介紹。