標籤:表串連 等值串連 自串連 不等值串連 (左右)外串連
表串連的類型:等值串連、自串連、不等值串連、(左右)外串連
一、等值串連:通過兩個表具有相同意義的列,可以建立相等串連條件。
============================================================
1、只有串連列上在兩個表中都出現且滿足串連條件的行才會出現在查詢結果中。
eg:
create table emp_1 as select * from emp;
create table dept_1 as select * from dept;
insert into emp_1(empno,deptno) values (1231,88);
insert into dept_1(deptno,dname) values (77,‘ss‘);
commit;
2、存在歧義的列需要添加表名
eg:
desc emp
desc dept 找到相同的表
SQL> select ename,DEPTNO
2 from emp a,dept b
3 where a.deptno=b.deptno;
select ename,DEPTNO
*
ERROR at line 1:
ORA-00918: column ambiguously defined
二、自串連:等同於等值串連,只不過是把一張表當成兩張表
============================================================
如:需要查詢每個僱員的管理者是什麼名字?
select e.ename,m.ename
from emp e,emp m
where e.mgr=m.empno;
三、不等值串連:兩個表中的相關的兩列進行不等串連,比較符號一般為>,<,...,BETWEEN.. AND..
============================================================
eg:查詢出每一個員工的工資等級
select ename,grade,sal,losal,hisal
from emp,salgrade
where sal between losal and hisal;
四、外串連
左外串連:左條件(+) = 右條件,除了顯示滿足串連條件的行之外,還顯示右條件所在的表中無法匹配串連條件的資訊
右外串連:左條件 = 右條件(+),除了顯示滿足串連條件的行之外,還顯示左條件所在的表中無法匹配串連條件的資訊
============================================================
eg:
其中dept表中,有一行40號部門根本沒辦法顯示,因為emp表中沒有任何一行資料能與之匹配,如:
select ename,loc
from emp,dept
where emp.deptno(+)=dept.deptno;
五、笛卡爾乘積
當兩個表(多張表)相關聯但是他們又沒有有效串連條件,那麼這個時候就會出現一個笛卡爾乘積
本文出自 “菜鳥達人” 部落格,請務必保留此出處http://omphy.blog.51cto.com/7921842/1895369
Oracle-表串連