关联查询

关联查询

从多张表中查询对应记录的信息
关联查询的重点在于这些表中的记录的对应关系,这个关系也成为连接条件
SELECT ename,dname,sal
FROM emp e,dept d
WHERE
e.deptno=d.deptno
AND
sal>2500

关联查询要添加连接条件,否则会产生笛卡尔积,笛卡尔积通常是一个无意义的结果集,它记录
书是所有产于查询的表的记录数乘积的结果。要避免出现,数据量大时极易出现内存溢出等现象
n张表关联查询要有至少n-1个连接条件

内连接也是用来完成关联查询的 不满足条件的不显示
select a.ename,d.dname from emp a join dept d
on a.deptno=d.deptno
join ---on

外连接除了会将满足连接条件的记录查询出来之外,还会将不满足连接条件的记录也查询出来
外连接分为;
左外连接:以join 左侧表作为驱动表(所有数据都被会查询出来),那么当该表中的某条记录
不满足连接条件时来自右侧表中的字段全部填null
left join---on
select a.ename,d.dname from emp a join dept d
on a.deptno=d.deptno(+)
右外连接
right join---on
select a.ename,d.dname from emp a join dept d
on a.deptno(+)=d.deptno
全外连接
full join---on
select a.ename,d.dname from emp a full join dept d
on a.deptno=d.deptno

 

自连接

自连接即:当前表的一条记录可以对应当前表自己的多条记录
自连接是为了解决同类型数据但是又存在上下级关系的梳妆结构
数据时使用
自己连自己
select e.ename,m.ename,m.deptno,d.loc
from emp e join emp m on e.mgr=m.empno
join dept d
on m.deptno=d.deptno
where e.ename='smith'

 

自然连接会自动寻找两张表列名相同的做等值
连接。注意,两张表中应当只有一列名字相同
才可以使用自然连接。


外连接的应用场景:
当我们查看部门表时,因为在进行与emp连接查询
时,40号部门不存在任何员工,导致查询结果该
记录被忽略。这时若我们需要主要查看部门有哪些
时,就使用外连接。

 

posted @ 2017-09-21 10:10  Big_hua  阅读(425)  评论(0编辑  收藏  举报