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;
--结果为:两个表中所有员工交叉排列组成的笛卡尔集。
/*左外连接和右外连接的两种写法返回的结果相同,但排列的方式不同*/