关联查询 / 多表查询 / 多表关联查询
什么时候需要用关联查询
- 当查询的结果来自多张表的时候
- 查询结果的过滤条件来自其他表的时候,也可以选择多表关联
内关联
2个表取相同的部分,把他们显示出来
--ORACLE 内关联写法
SELECT E.*,D.*
FROM EMP E , DEPT D
WHERE E.DEPTNO = D.DEPTNO;
--SQL 内关联写法
SELECT E.*,D.*
FROM EMP E INNER JOIN DEPT D --INNER 可写可不写
ON E.DEPTNO = D.DEPTNO;
--查询 NEW YORK 地区工作的所有员工的信息
--Oracle写法
SELECT E.*,D.*
FROM EMP E , DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND D.LOC = 'NEW YORK';
--SQL写法
SELECT E.*,D.*
FROM EMP E INNER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO
WHERE D.LOC = 'NEW YORK';
总结
在SQL查询中 ON 和 WHERE 的区别:
ON后面跟的是关联字段
WHERE后面跟的是过滤条件
外关联
- 左外关联/右外关联
本质上是一样的,以其中一张表作为主表,用从表的数据跟主表进行匹配
匹配上的数据正常显示
匹配不上的数据则自动补空(NULL) - 全外关联
查询出来的结果集相比 内关联和左外/右外关联的结果 是最大的
把2个表的结果集互相比较
匹配到的数据正常显示
匹配不到数据互相补空(NULL)
最终的结果是 多个表的数据都会全部显示
--Oracle 外关联写法
SELECT