對於外連接
SELECT e
FROM employees e
LEFT OUTER JOIN departments d
ON (e
等價於
SELECT e
FROM employees e
WHERE e
結果為
SELECT e
FROM employees e
RIGHT OUTER JOIN departments d
ON (e
等價於
SELECT e
FROM employees e
WHERE e
結果為
SELECT e
FROM employees e
FULL OUTER JOIN departments d
ON (e
結果為
外連接:
除了顯示匹配相等連接條件的數據外
左條件所在的表必須嚴格進行相等連接條件的匹配
也稱為右外連接
可以用下列語句取代:
SELECT
右條件所在的表必須嚴格進行相等連接條件的匹配
也稱為左外連接
可以用下列語句取代:
SELECT
REM 除了相等連接之外
SELECT * FROM EMP
SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON EMP
REM 除了相等連接之外
SELECT * FROM EMP
SELECT * FROM EMP LEFT OUTER JOIN DEPT ON EMP
Oracle 建議你用在From語句後用Outer Join語法 而不是Oracle的Join操作符(+)
如果沒有
OR不可用
IN不可用
子查詢不可用
以下給些個例子
SQL code
SQL> desc part
Name Null? Type
PART_ID NOT NULL VARCHAR
SUPPLIER_ID VARCHAR
SQL> select * from part;
PART SUPP
P
P
P
P
SQL> desc supplier
Name Null? Type
SUPPLIER_ID NOT NULL VARCHAR
SUPPLIER_NAME NOT NULL VARCHAR
SQL> select * from supplier;
SUPP SUPPLIER_NAME
S
S
S
SQL> select p
PART SUPPLIER_NAME
P
P
P
P
SQL> select p
where p
*
ERROR at line
ORA
SQL> select p
PART SUPPLIER_NAME
P
P
P
P
Supplier#
SQL> select p
PART SUPPLIER_NAME
P
P
P
P
Supplier#
另外的EG
SQL code
SQL> select * from testa;
ID NAME ADDR AGE
已選擇
SQL> select * from testb;
ID ADDR
select testa
testa
ID ADDR
現在的Outer Join方法是Oracle
通過上邊Full Join的實現方式 不難看到ANSI的聯接語法要比用含Union的(+)的執行效率更高~~
From:http://tw.wingwit.com/Article/program/Oracle/201311/17460.html