Oracle連線查詢詳解

2021-06-20 21:21:19 字數 2072 閱讀 1950

連線查詢指基於兩個或兩個以上表或檢視的查詢,在實際應用中,可能僅僅查詢單個表無法

滿足實際的需求,例如顯示sales部門位置以及雇員名,這種情況就需要進行連線查詢(dept和emp表)。

當使用連線查詢時,必須在from後指定兩個或兩個以上的表。

當使用連線查詢時,應該在列名前加表名作字首,如果不同表之間的列名不同就不用,但不同表之間存在相同列名時就要加字首,

當使用連線查詢時,必須在where子句中指定有效地連線條件,如果有錯失,可能會造成笛卡爾集。

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

select name,sal,dname from emp,dept

where emp.deptno = dept.deptno and dept.deptno=10;

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

select ename,sal,grade from emp,salgrade

where emp.sal between salgrade.losal and salgrade.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 a.dname,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執行外連線。使用(+)進行外連線時,where條件中,對於附表的字段都應帶上(+)。

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查詢連線

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

Oracle連線查詢

1 內連線 select e.d.dname from emp e,dept d where e.deptno d.deptno 隱式內連線查詢實際的語句可以為 select e.d.dname from emp e inner join dept d on d.deptno e.deptno 2 ...

oracle連線查詢

8i create table dali.test1 a int,b int create table dali.test2 a int,b int insert into dali.test1 values 1,456 insert into dali.test1 values 2,427 ins...