oracle之多表查询

多表查询的基本概念
多表查询的语法:
oracle之多表查询

查询经验:
1.新手做法:
oracle之多表查询
缺点:如果数据量过大 可能造成系统的死机


推荐!!
2.老手做法: 先看一下哟多少条记录
oracle之多表查询

笛卡尔积
本问题在数据库的操作之中被称为笛卡尔积,就表示多张表的数据乘积的意思,
这种查询不是我们想要的
oracle之多表查询
最简单的方式是才用关联字段的形式 emp表和dept表之间现在存在了deptno的关联字段
所以现在可以从这个字段上的判断开始

当在查询之中,不同的表中有了相同字段名称的时候,访问这些字段必须加上表名称
即“表.字段”
例:
oracle之多表查询
oracle之多表查询
如果表名称很长 那么我们一般在进行多表查询时,
通常我们会为他起一个别名,通过别名.字段的方式进行查询
例:
oracle之多表查询oracle之多表查询
oracle之多表查询
左右连接:
--(+)代表连接方向
--主表的数据可以完全查出来
--左连接:左边的表是主表
--如果(+)在左边那就是右连接
select e.ename,e.job, m.ename FROM emp e, emp m WHERE e.mgr= m.empno(+)
--右连接:右边的表是主表
--如果(+)在右边那就是左连接
select e.ename,e.job, m.ename FROM emp e, emp m WHERE e.mgr(+)= m.empno


SQL: 1999语法
例:
--交叉连接:用于产生笛卡尔积
SELECT * FROM EMP CROSS JOIN DEPT
--自然连接:自动找寻表与表之间的外键关联关系, 消除笛卡尔积
SELECT * FROM EMP NATURAL JOIN DEPT
-- JOIN USING子句,相同字段名称可以使用
SELECT * FROM EMP JOIN DEPT using(DEPTNO)
-- JOIN ON 子句
SELECT * FROM EMP JOIN DEPT ON(EMP.DEPTNO=DEPT.DEPTNO)
--左外连接 left outer join...on
SELECT * FROM EMP LEFT OUTER JOIN DEPT ON
EMP.DEPTNO=DEPT.DEPTNO
--右外连接 right outer join...on
SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO
--全连接
SELECT * FROM EMP FULL OUTER JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO

分组查询:
必须明确一点:当数据重复的时候分组才有意义,一个人也可以一组(没有什么意义)
分组查询语法
oracle之多表查询