Oracle 內連線,左連線 右連線 全連線

2021-09-01 08:54:38 字數 1747 閱讀 5436

此處用到兩張表 員工表和部門表

一般的相等連線:

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

這個就屬於內連線。

內連線1)等值連線

sql> select emp.empno, emp.ename, emp.deptno,

2 dept.deptno, dept.loc

3 from emp, dept

4 where emp.deptno=dept.deptno;

empno ename deptno deptno loc

----- ------ ------ ------ ---------

7839 king 10 10 new york

7698 blake 30 30 chicago

7782 clark 10 10 new york

7566 jones 20 20 dallas

...14 rows selected.

2)非等值連線

外連線:

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的員工記錄和沒有任何員工的部門記錄。

Oracle 內連線,左連線 右連線 全連線

此處用到兩張表 員工表和部門表 一般的相等連線 select from a,b where a.id b.id 這個就屬於內連線。內連線 1 等值連線 sql select emp.empno emp.ename emp.deptno,2 dept.deptno dept.loc 3from emp...

內連線 左連線 右連線

弄個例題,直觀一點。兩個表 表stu id name 1,jack 2,tom 3,kity 4,nono 表exam id grade 1,56 2,76 11,89 內連線 顯示兩表id匹配的 select stu.id,exam.id,stu.name,exam.grade from stu ...

內連線 左連線 右連線

1.內連線 利用內連線可獲取兩表的公共部分的記錄,即圖3的記錄集c 語句如下 select from a join b on a.aid b.bnameid 執行結果如下圖4所示 其實select from a,b where a.aid b.bnameid與select from a join b...