oracle多表查询

(本文章内容仅在windows10下经测试能够运行,不能保证其他环境下的可靠性)

笛卡尔积使用案例代码如下:

---笛卡尔积
select *
from emp e, 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 A right/left join B on ...; (此时A在左,B在右,A、B的左右位置关系只由出现在查询语句的顺序决定)
----则外连接的运算过程为:
----1、A与B求交集
----2、过程1的结果与查询语法中的left/right所指向的集合(在这个案例中left指向A、right指向B)求并集

左外连接使用案例代码如下:

---查询emp表每个员工及其所在部门的信息
select * 
from emp e left join dept d
on e.deptno = d.deptno;

右外连接使用案例代码如下:

---查询dept表每个部门的所有员工信息
----右外连接
select * 
from emp e right join dept d
on e.deptno = d.deptno;

oracle(+)使用案例代码如下:

---oracle自带的外连接
----(+)出现位置和作用
----出现在where的条件判断的不需要保留所有数据的表的列之后, 使得该表不需显示所有数据(即标志该表为补充表)
select * 
from emp e, dept d
where e.deptno(+) = d.deptno;

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

相关推荐