--两张表联合查询
select * from emp e, dept d where e.deptno = d.deptno ; --寻找两张表的关联处,也就是都有deptno使之相等
select e.empno, e.ename , d.deptno, d.dname, d.loc from emp e, dept d where e.deptno = d.deptno; --按照给定的列显示
--查询员工的上级领导 自己关联自己
select e.empno, e.ename, e1.empno, e1.ename from emp e,emp e1 where e.mgr= e1.empno;
select * from dept;
--查询员工的上级领导和部门名称
select e.empno, e.ename, e1.empno, e1.ename,d.dname
from emp e, emp e1, dept d
where e.empno = e1.mgr and e.deptno = d.deptno;
--查询每个员工的员工编号,姓名,部门名称,工资等级和他的上级的姓名,工资等级
select e.empno,
e.ename,
d.dname,
decode(s.grade,'1','一级','2','二级','3','三级','4','四级','5','五级','无级'),
e1.empno,
e1.ename,
decode(s1.grade,'1','一级','2','二级','3','三级','4','四级','5','五级','无级')
from emp e, dept d, salgrade s, emp e1, salgrade s1
where e.deptno = d.deptno
and e.mgr = e1.empno
and e.sal between s.losal and s.hisal
and e1.sal between s1.losal and s1.hisal;
--查询每一个员工的部门
--两张表做关联查询时,其中一张表要查询全量的数据,并且不会因为另一张表的关联而被筛选掉
--在两张表关联的时候,非全量表的关联字段后面加上 “(+)” 就可以做外连接查询
select * from dept d,emp e where d.deptno = e.deptno(+);
select * from dept
--左连接/ 做外连接查询时,全量表在左边就是左连接
select * from dept d,emp e where d.deptno = e.deptno(+);
--右连接 做外连接查询时,全量表在右边就是右连接
select * from emp e, dept d where e.deptno(+) = d.deptno;
--查询员工的编号,姓名和他的上级领导的编号,姓名
select e.empno, e.ename, e1.empno, e1.ename from emp e , emp e1 where e.mgr = e1.empno;
--这样的话总裁没有查出来 可以采取外连接的方式
select e.empno 员工编号,
e.ename 员工姓名,
e1.empno 上级领导编号 ,
e1.ename 领导姓名
from emp e, emp e1
where e.mgr= e1.empno(+) ;