Oracle的連線查詢

2021-06-14 08:18:45 字數 1812 閱讀 5320

連線查詢指基於兩個或兩個以上表或檢視的查詢,在實際應用中,可能僅僅查詢單個表無法滿足應用程式的實際需求,例如顯示sales部門位置以及雇員名,這種情況就需要進行連線查詢(dept和emp表)。

☆相等連線:用 = 指定連線條件

select e.name,e.sal,d.dname from emp e,dept d

where e.deptno = d.deptno and d.deptno=10;

☆不等連線:其實是between...and...

select a.ename,a.sal,b.grade from emp a,salgrade b

where a.sal between b.losal and b.hisal;

☆自連線

指同一張表之間的連線查詢,主要用在自參照表上顯示上下級關係或者層次關係。(自慘表指在不同列之間具有參照關係或主從關係的表),例如,emp表包含有empno(雇員號)和mgr(管理者號),二者就有參照關係。

select manager.enamec from emp manager,emp worker

where manager.empno = worker.mgr

and worker.ename='blake';

☆內連線和外連線

1.內連線,預設情況下,在執行連線查詢時如果沒有指定任何連線操作符,都屬於內連線

select a.dname,b.ename from dept a,emp b

where a.deptno=b.deptno and a.deptno=10;

另外,通過在from子句中指定inner join也可以指定內連線

select adname,b.ename from dept a inner join emp b

on a.deptno = b.deptno and a.deptno=10;

如果主表的主鍵列和從表的外部鍵列名相同,那麼還可以使用natural join 關鍵字自動執行內連線操作

select dname,ename from dept natural join emp;

2.左外連線

左外連線是通過指定left[outer]join選項來實現的。不僅會返回滿足連線條件的所有記錄,而且還會返回不滿足連線條件的連線操作符左別表的其他行。

select a.dname,b.ename from dept a left join emp b

on a.deptno=b.deptno and a.deptno=10;

3.右外連線

跟左外連線一樣

4.完全外連線

通過full[outer]join選項來實現的,不僅會返回滿足連線條件的所有行,而且還會返回不滿足連線條件的所有其他行。

select a.dname,b.ename from dept a full join emp b

on a.deptno=b.deptno and a.deptno=10;

5.使用(+)操作符

當執行外連線時,儘管可以用連線操作符(+)來完成,但還是建議用outer join執行外連線。

1.使用(+)操作符執行左外連線

select a.dname,b.ename from dept a,emp b

where a.deptno=b.deptno(+)

and b.deptno(+)=10;

2.使用(+)操作符執行右外連線

select a.dname,b.ename from dept a,emp b

where a.deptno(+)=b.deptno and a.deptno(+)=10

order by a.dname;

oracle的連線查詢

oracle的連線查詢分如下幾種 內連線 inner join 外連線 全連線 full join 左連線 left join 右連線 right join 交叉聯接 cross join 外連線與內連線不一樣,外連線返回的查詢結果中不僅包含符合條件的行,還包括左表 左外連線 右表 右外連線 或者兩...

oracle的連線查詢

連線查詢指基於兩個或兩個以上表或檢視的查詢,在實際應用中,可能僅僅查詢單個表無法滿足應用程式的實際需求,例如顯示sales部門位置以及雇員名,這種情況就需要進行連線查詢 dept和emp表 相等連線 用 指定連線條件 select e.name,e.sal,d.dname from emp e,de...

oracle查詢連線

select from emp select from dept 左連線 1 查詢與左邊表dept 4 相關聯的資料,如deptno 40在右邊沒有對應的資料,則顯示為空 select from dept left join emp on dept.deptno emp.deptno 查詢與左邊表相...