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 則兩個集合的笛卡爾積為。在資料庫中,如果直接查詢倆張表,那麼其查詢結果就...