多表連線:
查詢的一種,資料**不再是單一的乙個表,我們可以重多個表中提取相關聯的資料,比如,從emp和dept表中找出人員 所在的部門名稱,----多個表來聯合查詢
1.查詢的時候,可以from多個表
select * from emp,dept
這樣會產生乙個笛卡爾集
表示:兩個表任何組合的結果
2.需求:取關聯資料
我的部門20號,我想要20號部門的名稱====連線條件
select emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno
3.語法格式:
select 字段 from 表1,表2 where 表1.列=表2.列
select empno,ename,d.deptno,dname from emp e,dept d where e.deptno=d.deptno
當然,你可以為表定義乙個別名,但是不能使用as(字段重新命名可以使用)
不同的連線條件可以使用and或or
select empno,ename,d.deptno,dname,e.sal from emp e,dept d where e.deptno=d.deptno and sal>1600
4.使用不等值連線
連線條件:乙個表中的記錄,在另乙個表中能夠找到匹配的記錄即可
select e.*,g.grade from emp e,salgrade g where e.sal between g.losal and g.hisal
5.外連線:把不滿足條件的資料顯示出來
select * from emp e,dept d where e.deptno=d.deptno(+)
外連線可以在左表,也可以在右表
6.自連線
從同乙個表中聯合查詢
select e.ename,p.ename from emp e,emp p where e.mgr=p.empno
-----sql1999:
7.交叉連線:
其結果是笛卡爾集,是沒加任何條件所產生出來的資料集合
8.自然連線:預設情況下,以兩個表中有相同名稱的列來進行連線查詢
select * from emp natural join dept
其效果相當於
select * from emp,dept where emp.deptno=dept.deptno
9.使用using子句來查詢
select * from emp join dept using(deptno)
10.使用on子句
使用on來指定連線具體條件
select * from emp join dept on emp.deptno=dept.deptno and emp.deptno=20
多個表連線查詢
select e.ename,e.sal,d.dname,s.grade
from emp e join dept d on e.deptno=d.deptno
join salgrade s on e.sal between s.losal and s.hisal
11.外連線:
與內連線的區別:
內連線*****===查詢條件相等的記錄(能夠匹配的)
外連線*****===條件相等 的+沒匹配的
select * from emp e left outer join dept d on e.deptno=d.deptno
select * from emp e right outer join dept d on e.deptno=d.deptno
select * from emp e full outer join dept d on e.deptno=d.deptno
Oracle 多表連線
oracle 多表連線 oracle優化器會自動選擇以下三種方式的一種執行表連線,但在資料環境上配合強化選擇合適的方式或強制使用某種方式是sql優化的需要 nested loop 對於被連線的資料子集較小的情況,nested loop連線是個較好的選擇。nested loop就是掃瞄乙個表,每讀到一...
Oracle 多表連線
多表連線 第五章 1.select from emp 1.寫乙個查詢,顯示所有員工姓名,部門編號,部門名稱。select e.ename e.deptno d.dname from emp e,dept d where e.deptno d.deptno select e.ename e.deptn...
Oracle 多表連線
通過連線條件把相關表關聯起來 select from emp n個表相連會有n 1個關聯關係,先寫關聯條件,再寫限制條件 為什麼會產生笛卡爾積 沒有連線條件會產生笛卡爾積 select emp.ename,emp.empno,dept.deptno,dept.dname from emp,depts...