Oracle表連線方式之內連線 外連線《轉》

2021-08-31 17:42:47 字數 2236 閱讀 8082

oracle 8i,9i 表連線方法。

一般的相等連線:

select * from a, b where a.id = b.id;

這個就屬於內連線。

對於外連線:

oracle中可以使用「(+) 」來表示,9i可以使用left/right/full outer join

left outer join:左外關聯

select e.last_name, e.department_id, d.department_name

from employees e

left outer join departments d

on (e.department_id = d.department_id);

等價於

select e.last_name, e.department_id, d.department_name

from employees e, departments d

where e.department_id=d.department_id(+)

結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄。

right outer join:右外關聯

select e.last_name, e.department_id, d.department_name

from employees e

right outer join departments d

on (e.department_id = d.department_id);

等價於

select e.last_name, e.department_id, d.department_name

from employees e, departments d

where e.department_id(+)=d.department_id

結果為:所有員工及對應部門的記錄,包括沒有任何員工的部門記錄。

full outer join:全外關聯

select e.last_name, e.department_id, d.department_name

from employees e

full outer join departments d

on (e.department_id = d.department_id);

結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄和沒有任何員工的部門記錄。

oracle8i是不直接支援完全外連線的語法,也就是說不能在左右兩個表上同時加上(+),下面是在oracle8i可以參考的完全外連線語法

select t1.id,t2.id from table1 t1,table t2 where t1.id=t2.id(+)

union

select t1.id,t2.id from table1 t1,table t2 where t1.id(+)=t2.id

連線型別定義圖示例子

內連線只連線匹配的行

select a.c1,b.c2 from a join b on a.c3 = b.c3;

左外連線

包含左邊表的全部行(不管右邊的表中是否存在與它們匹配的行)以及右邊表中全部匹配的行

select a.c1,b.c2 from a left join b on a.c3 = b.c3;

右外連線

包含右邊表的全部行(不管左邊的表中是否存在與它們匹配的行)以及左邊表中全部匹配的行

select a.c1,b.c2 from a right join b on a.c3 = b.c3;

全外連線

包含左、右兩個表的全部行,不管在另一邊的表中是否存在與它們匹配的行

select a.c1,b.c2 from a full join b on a.c3 = b.c3;

(theta)連線

使用等值以外的條件來匹配左、右兩個表中的行

select a.c1,b.c2 from a join b on a.c3 != b.c3;

交叉連線

生成笛卡爾積——它不使用任何匹配或者選取條件,而是直接將乙個資料來源中的每個行與另乙個資料來源的每個行一一匹配

select a.c1,b.c2 from a,b;

Oracle表連線方式

實用記憶方法 在哪邊,哪邊就是外來鍵,該錶的資料就 少 無 那邊檢索的就是全表資料。oracle 8i,9i 表連線方法。一般的相等連線 select from a,b where a.id b.id 這個就屬於內連線。對於外連線 oracle中可以使用 來表示,9i可以使用left right f...

oracle 表連線方式

一 連線方式 巢狀迴圈 nested loops nl 雜湊 雜湊連線 hash join hj 歸併 排序合併連線 sort merge join smj 二 連線說明 1.oracle一次只能連線兩個表。不管查詢中有多少個表,oracletable 和內部表 inner table 在巢狀迴圈連...

Oracle表連線方式之等值連線 外部連線

oracle 8i,9i 表連線方法。一般的相等連線 select from a,b where a.id b.id 這個就屬於內連線。對於外連線 oracle中可以使用 來表示,9i可以使用left right full outer join left outer join 左外關聯 select...