oracle 多表查詢

2022-08-14 03:30:11 字數 1939 閱讀 4045

1、等值連線:取關係列相同的記錄

select * from emp e,dept d where e.deptno=d.deptno;

查出emp、dept表中deptno列相同的記錄

2、非等值連線:取關係列不相同的記錄

select * from emp e,dept d where e.deptno>d.deptno;

查出emp表中deptno大於dept表中的記錄

3、外連線:左左外連線以左表為主,右外連線以右表為主

右連線,以右表為主,右表所有記錄多查詢出來,左表只查出復合條件的記錄

select * from emp e,dept d where e.deptno(+)=d.deptno;

select * from emp e right outer join dept d on e.deptno=d.deptno;

左連線,以左表為主,左表所有記錄多查詢出來,右表只查出復合條件的記錄

select * from emp e,dept d where e.deptno=d.deptno(+);

select * from emp e left outer join dept d on e.deptno=d.deptno;

全連線 ,所有記錄來自於兩張表,用null值來匹配缺失值

select * from emp e full join dept d on e.deptno=d.deptno;

4、自連線:特殊等值連線,取同一張表不同角度看待的記錄

select e1.ename || ' 領導是' || e2.ename from emp e1, emp e2 where e1.mgr = e2.empno;

5、交叉連線產生乙個笛卡爾積 cross join

笛卡爾積:多表查詢時,查詢記錄的行數等於所有錶行數的乘積,列數等於所有表列數之和

select * from emp ,dept;

select * from emp cross join dept;

6、自然連線 natural join (注)所有相同列等值連線

natural join 子句是基於兩個表中列名完全相同的列產生連線,查詢連線列的值相等的記錄,不保留重複的屬性。

natural join 子句中的列不能使用表別名做字首。如:e.deptno='10' 或 d.deptno='10'

查出兩表中相同列值相同的記錄

select * from emp e natural join dept d;

查出兩表中指定列值相同的記錄

select * from emp e natural join dept d where deptno='10';

7、using(x)建立連線

using子句引用的列在sql任何地方都不能使用表名或別名做字首

查出兩表中相同列值相同的記錄

select * from emp e join dept d using(deptno);

查出兩表中指定列值相同的記錄

select * from emp e join dept d using(deptno) where deptno='30';

8、join on 建立連線 ,不同於自然連線,使用join on 可以指定連線列和設定任意的連線條件

select * from emp e join dept d on e.deptno=d.deptno where e.deptno='10';

join on 可以進行兩張以上的表連線查詢

select * from emp e join dept d on e.deptno=d.deptno join salgrade s on e.sal between s.losal and s.hisal where e.deptno='10';

Oracle 多表查詢

sql 外連線 sql 按部門統計員工人數 部門號 部門名稱 人數 sql select d.deptno,d.dname,count e.empno 2 from dept d,emp e 3 where d.deptno e.deptno 4 group by d.deptno,d.dname ...

Oracle 多表查詢

等值和不等值連線查詢 為了避免笛卡爾集,可以在 where 加入有效的連線條件。oracle 連線多表查詢 在 where 子句中寫入連線條件。在表中有相同列時,在列名之前加上表名字首 select table1.column,table2.column from table1,table2 whe...

oracle 多表查詢

多表查詢 多表查詢,又稱表聯合查詢,即一條sql語句涉及到的表有多張,資料通過特定的連線進行聯合顯示.笛卡爾積 在數學中,兩個集合x和y的笛卡尓積 cartesian product 又稱直積,表示為x y.假設集合a 集合b 則兩個集合的笛卡爾積為。在資料庫中,如果直接查詢倆張表,那麼其查詢結果就...