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

2021-12-30 02:03:29 字數 2222 閱讀 4300

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 full outer join left outer join 左外關聯 select...

自然連線和等值連線

1 自然連線 naturaljoin 是一種特殊的等值連線,它要求兩個關係中進行比較的分量必須是相同的屬性組,並且在結果中把重複的屬性列去掉。而等值連線並不去掉重複的屬性列。2 自然連線 在連線條件中使用等於 運算子比較被連線列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,並刪除連線表中的重...

sql等值連線,左右連線

inner join 等值連線 語法 select from 表1 inner join 表2 on 表1.欄位號 表2.欄位號 作用 返回兩個表中字段相等的行,a與b交集 三表連線語法 select from 表1 inner join 表2 on 表1.欄位號 表2.欄位號 inner join...