oracle关联查询语句整理

一、多表连接查询

1、内连接:(inner join)

返回符合查询条件以及连接条件的结果集

select e.empno as 员工编号,e.ename as 员工名称,d.dname as 部门
from emp e [inner] join dept d
on e.deptno=d.deptno;
注意:一旦制定别名,整个句子就只能使用别名

2、左外连接:(left join on)

除了返回查询条件以及连接条件的结果集,还会返回左表中不符合连接条件的行,右侧表dept用null填充

select e.empno as 员工编号,e.ename as 员工名称,d.dname as 部门
from emp e left join dept d
on e.deptno=d.deptno;

3、右外连接:(right join on)

除了返回查询条件以及连接条件的结果集,还会返回右表中不符合连接条件的行,左侧表emp用null填充

select e.empno as 员工编号,e.ename as 员工名称,d.dname as 部门
from emp e right join dept d
on e.deptno=d.deptno;
4、全外连接:(full join)

在内连接的基础上,将左右两表不符合条件的记录加入结果集

select e.empno as 员工编号,e.ename as 员工名称,d.dname as 部门
from emp e right join dept d
on e.deptno=d.deptno;
5、自然连接(natural join)

自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件按的结果。

select emp.ename,dept.dname
from emp natural join dept;
相当于
select emp.ename,dept.dname
from emp join dept on emp.deptno = dept.deptno;

因为这两张表的这两个字段deptno的类型个名称完全相同。所以使用natural join时被自然的连接在一起了。

6、交叉连接

笛卡尔儿积

方式一

select emp.ename,dept.dname
from emp,deptno;
方式二

select emp.ename,dept.dname
from emp cross join deptno;

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值