1. 程式人生 > >Oracle 左右外連線的區別

Oracle 左右外連線的區別

資料表的連線有:
1、內連線(自然連線): 只有兩個表相匹配的行才能在結果集中出現
2、外連線: 包括
(1)左外連線 (左邊的表不加限制)
(2)右外連線(右邊的表不加限制)
(3)全外連線(左右兩表都不加限制)
3、自連線(連線發生在一 張基表內)

sql標準語法:
select table1.column,table2.column
from table1 [inner | left | right | full ] join table2 on table1.column1 = table2.column2;

inner join 表示內連線;left join表示左外連線;right join表示右外連線;full join表示完全外連線;
on子句用於指定連線條件。注意,如果使用from子句指定內、外連線,則必須要使用on子句指定連線條件;
如果使用(+)操作符指定外連線,則必須使用where子句指定連線條件。

如果主表的主鍵列和從表的外部鍵列名稱相同,那麼可以使用 natural join 關鍵字自動執行內連線操作。
select  dname,ename from dept natural join emp;


select a.studentno, a.studentname, b.classname
from students a, classes b
where a.classid(+) = b.classid;
STUDENTNO STUDENTNAM CLASSNAME
---------- ---------- ------------------------------
1 周虎     一年級一班
2 周林     一年級二班 
          一年級三班
以上語句是右連線:
即"(+)"所在位置的另一側為連線的方向,右連線說明 等號右側的所有
記錄均會被顯示,無論其在左側是否得到匹配。也就是說上例中,無
論會不會出現某個班級沒有一個學生的情況,這個班級的 名字都會在
查詢結構中出現。