EMP表中員工與老闆的關係
內串連:
內串連也叫自然串連,它是組合兩個表的常用方法。自然串連將兩個表中的列進行比較,將兩個表中滿足串連條件的行組合起來,作為結果。自然串連有兩種形式的文法。
select e1.ename,e1.mgr,e2.ename aa from emp e1,emp e2 where e1.mgr=e2.empno;
select e1.ename,e1.mgr,e2.ename aa from emp e1 inner join
emp e2 on
e1.mgr=e2.empno;
--結果為:所有有上級的員工及對應上級姓名。
外串連:
在自然串連中,只有在兩個表中匹配的行才能在結果集中出現。而在外串連中可以只限制一個表,而對另外一個表不加限制(即所有的行都出現在結果集中)。
外串連分為左外串連、右外串連和全外串連。左外串連是對串連條件中左邊的表不加限制;右外串連是對右邊的表不加限制;全外串連對兩個表都不加限制,所有兩個表中的行都會包括在結果集中。
左外串連的文法為:
SELECT 列 from 表1 LEFT [OUTER]JOIN 表2 ON 表1.列1=表2.列2
右外串連的文法為:
SELECT select_list from 表1 RIGHT[OUTER]JOIN 表2 ON 表1.列1=表2.列2
全外串連(完整外部聯結)的文法為:
SELECT select_list from 表1 FULL[OUTER] JOIN 表2 ON 表1.列1=表2.列2
左外串連:
左外串連是對串連條件中左邊的表不加限制
select e1.ename,e1.mgr,e2.ename aa from emp e1,emp e2 where e1.mgr=e2.empno(+)
;
select e1.ename,e1.mgr,e2.ename aa from emp e1 left
outer join
emp e2 on
e1.mgr=e2.empno;
--結果為:所有員工及對應上級姓名(包括沒有上級的員工記錄)。
右外串連:
右外串連是對右邊的表不加限制
select e1.ename,e1.mgr,e2.ename aa from emp e1,emp e2 where e1.mgr(+)
=e2.empno;
select e1.ename,e1.mgr,e2.ename aa from emp e1 right outer join
emp e2 on
e1.mgr=e2.empno;
--結果為:所有員工及對應上級姓名,加上沒有下級員工的上級記錄。
全外串連:
全外串連對兩個表都不加限制,所有兩個表中的行都會包括在結果集中
*/
select e1.ename,e1.mgr,e2.ename aa from emp e1 full outer join
emp e2 on
e1.mgr=e2.empno;
--結果為:所有員工及對應上級姓名(包括沒有上級的員工記錄),加上沒有下級員工的上級記錄。
交叉聯結:
沒有 WHERE 子句的交叉聯結將產生聯結所涉及的表的笛卡爾積。第一個表的行數乘以第二個表的行數等於笛卡爾積結果集的大小。
select e1.ename,e1.mgr,e2.ename aa from emp e1 cross join
emp e2;
select e1.ename,e1.mgr,e2.ename aa from emp e1 ,emp e2;
--結果為:兩個表中所有員工交叉排列組成的笛卡爾集。
/*左外串連和右外串連的兩種寫法返回的結果相同,但排列的方式不同*/