oracle中的連線

weixin_34119545發表於2012-06-06
叫oracle的左連線或右連線 
以下是解釋,自己研究下: 
------------------------------------------------------------------- 
資料表的連線有: 
1、內連線(自然連線): 只有兩個表相匹配的行才能在結果集中出現 
2、外連線: 包括 
(1)左外連線(左邊的表不加限制) 
(2)右外連線(右邊的表不加限制) 
(3)全外連線(左右兩表都不加限制) 
3、自連線(連線發生在一張基表內) 
select a.studentno, a.studentname, b.classname 
from students a, classes b 
where a.classid(+) = b.classid; 
STUDENTNO STUDENTNAM CLASSNAME 
---------- ---------- ------------------------------ 
1 周虎 一年級一班 
2 周林 一年級二班 
一年級三班 
以上語句是右連線: 
即"(+)"所在位置的另一側為連線的方向,右連線說明等號右側的所有 
記錄均會被顯示,無論其在左側是否得到匹配。也就是說上例中,無 
論會不會出現某個班級沒有一個學生的情況,這個班級的名字都會在 
查詢結構中出現。 


反之: 
select a.studentno, a.studentname, b.classname 
from students a, classes b 
where a.classid = b.classid(+); 

STUDENTNO STUDENTNAM CLASSNAME 
---------- ---------- ------------------------------ 
1 周虎 一年級一班 
2 周林 一年級二班 
3 鍾林達 

則是左連線,無論這個學生有沒有一個能在一個班級中得到匹配的部門號, 
這個學生的記錄都會被顯示。 

select a.studentno, a.studentname, b.classname 
from students a, classes b 
where a.classid = b.classid; 

這個則是通常用到的內連線,顯示兩表都符合條件的記錄 

總之, 

左連線顯示左邊全部的和右邊與左邊相同的 
右連線顯示右邊全部的和左邊與右邊相同的 
內連線是隻顯示滿足條件的!

相關文章