1. 92语法多表关联
1.1笛卡尔积
-- 笛卡尔积 select * from emp,dept
1.2等值连接
-- 等值连接 -- 需求:查询雇员的部门名称 select e.ename,e.deptno,d.dname from emp e,dept d where e.deptno = d.deptno
1.3不等值连接
-- 不等值连接 -- 查询每个雇员的薪资等级 select e.ename,e.sal,sg.grade from emp e,salgrade sg where e.sal >= sg.losal and e.sal <= sg.hisal -- where e.sal between sg.losal and sg.hisal
1.4外连接
左外连接:左边的表作为主表,右边表作为从表,主表数据都显示,从表数据没有,用null填充,用+号表示。
-- 左外连接(B) -- 需求:查询所有部门的雇员 select * from dept d,emp e where d.deptno = e.deptno(+)
右外连接: 右边的表作为主表,左边表作为从表,主表数据都显示,从表数据没有,用null填充,用+号表示。
-- 右外连接(B) select * from emp e,dept d where e.deptno(+) = d.deptno;
1.5自连接
-- 查询每个雇员的上级领导 select e.ename "雇员",m.ename "领导" from emp e,emp m where e.mgr = m.empno -- 优化king select e.ename "雇员",nvl(m.ename,'boss') "领导" from emp e,emp m where e.mgr = m.empno(+)
1.6多余两张表的连接
如果有多个表参与查询,先把t1xt2笛卡尔积得到一个大表T1,再把T1xt3笛卡尔积得到一个另外的大表T2,依次类推。
所有的多表查询最终都是两种表的查询。
-- 查询SCO%T管理者的薪资等级 select