一、概念
從多個表中查詢資料時,需要在表和表間建立連線,一般使用主外來鍵建立連線
二、連線種類
1.等連線:連線條件使用等號
非等連線:連線條件使用等號以外的其它符號
2.內連線:根據指定的連線條件進行連線查詢,滿足連線條件的資料才會出現在結果集(最常見的等值連線)
外連線:在內連線的基礎上,將某個連線表不符合連線條件的記錄加入結果集
3.自連線:自身表中的列關聯自身表中的其它列
4.集合操作符
union:兩個集合的並集,去掉重複內容
union all:兩個集合的並集,重複內容取2次
minus:第乙個集合減去和第二個集合相交的內容
intersect:兩個集合的交集
三、連線查詢操作
1).連線查詢語法
select last_name,name
from s_emp,s_dept
where s_emp.dept_id=s_dept.id;
左外連線:a left outer join b-----中的
(a為基準,遇到
a中不符合條件的也加入, b中用
null
填充,包含左邊表的全部行)
基本寫法:
1. select e.last_name,d.name
from s_emp e left outer join s_dept d
on e.dept_id=d.id;
oracle特有寫法:
2. select e.last_name,d.name
from s_emp e ,s_dept d
where e.dept_id(+)=d.id;
右外連線:a right outer join b -----(b為基準,遇到
b中不符合條件的也加入
, a中用
null
填充,包含右邊表的全部行)
全外連線(包含左、右兩個表的全部行,不管另外一邊的表中是否存在與它們匹配的行)
查詢所有員工名、員工部門名(員工沒有分配部門、部門沒有員工)?
select e.last_name,d.name
from s_emp e full outer join s_dept d
on e.dept_id=d.id;
select e.last_name,d.name
from s_emp e,s_dept d
where e.dept_id(+)=d.id(+); //error,oracle
沒有全外連線特有寫法
2)集合操作符
eg:union:兩個集合的並集,去掉重複內容
select e.last_name,d.name
from s_emp e,s_dept d
where e.dept_id=d.id(+)
union
select e.last_name,d.name
from s_emp e,s_dept d
where e.dept_id(+)=d.id;
Oracle之多表查詢
多表查詢的基礎語法 select 查詢列 1 別名1,查詢列 2 別名2,from 表名稱1 別名1 名稱2 別名2 給出幾個例子吧。1.select e.ename,e.sal,d.dname,s.grade,m.ename,m.sal,ms.grade from emp e,dept d,sal...
oracle高階查詢之多表查詢
多張表查詢產生的表的列數等於所有表的列數之和,行數等於多張表之積 等值連線 select e.empno,e.ename from emp e,dept d where e deptno d.deptno 不等值連線 select e.empno,e.ename e.sal from emp e,d...
Oracle 表複雜查詢之多表合併查詢
本文使用到的是oracle資料庫scott方案所帶的表,scott是oracle資料庫自帶的方案,使用前請確保其解鎖 oracle合併查詢一共有四種方式,分別使用不同的關鍵字 union union all minus intersect 使用union all,表示取a b的合集,不過濾重複的資料...