09-多表查询

笛卡尔积

select * from emp,dept d;

等值连接

select * 
from emp e,dept d
where e.deptno=d.deptno

内连接

select * 
from emp e inner join dept d
on e.deptno=d.deptno
---查询出所有部门,以及部门下的员工信息【外连接】
select *
from emp e right join dept d
on e.deptno=d.deptno;
--查询出所有员工的信息,以及员工所属部门
select * from emp e left join dept d
on e.deptno=d.deptno;

oralce中专用外连接

select * from emp e,dept d
where e.deptno(+)=d.deptno;

自连接

自连接:自连接其实就是站在不同的角度吧一张表看成多张表
---查询出员工姓名,员工部门名称,员工领导姓名
select e1.ename, e2.ename
from emp e1, emp e2
where e1.mgr = e2.empno;
--查询出员工姓名,员工部门名称,员工领导姓名,员工领导部门名称
select e1.ename, d1.dname, e2.ename, d2.dname
from emp e1, emp e2, dept d1, dept d2
where e1.mgr = e2.empno
and e1.deptno=d1.deptno
and e2.deptno=d2.deptno;

你可能感兴趣的:(数据库-oracle,数据库,oracle)