Oracle中表连接的方式有哪些

内连接(自然连接)

等值连接、自然连接和不等值连接

{内连接是join 关键字连接两个表,语法为 table1 join table2 on 条件。

  根据使用的比较方式不同,内连接又分为等值连接、自然连接和不等值连接。

等值连接:所谓等值连接,是指在连接条件中使用等于(=)运算符比较被连接的值,也就是通过相等的列值连接起来的查询。

例子:Select empno,ename,sal,emp.deptno,dname from emp,dept where emp.deptno=dept.deptno;

非等值连接: 所谓不等连接,就是在连接条件中使用除等号(=)外的其他比较运算符,构成非等值连接查询。可以使用的比较运算符包括:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、<>(不等于)、!=(不等于)、LIKE、IN和BETWEEN等。

例子:select e.ename,e.sal,s.grade from emp e join salgrade s  on e.sal between s.losal and s.hisal; 查询所有员工的薪水等级

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

例子:select * from emp natural join dept;

外连接

外连接的结果集  = 内连接的结果集  + 驱动表在匹配表中找不到匹配记录的数据和空值

使用一张表中的所有记录去和另一张表中的记录按条件匹配(空值也会匹配),这个表中的所有记录都会显示。

左外连接,右外连接,全外连接   

LEFT/RIGHT/FULL OUTER JOIN

  1. 左外连接 (左边的表不加限制)

【例】t1 left outer join t2 --其中t1是驱动表,t2是匹配表

       等价于:t2 right outer join t1

【例】查询每个员工的经理的名字?

select worker.ename,manager.ename from emp worker left outer join emp manager on worker.mgr=manager.empno;

  1. 右外连接(右边的表不加限制)

t1 right outer join t2 --t2是驱动表,t1是匹配表

 等价于: t2 left outer join t1

【例】-哪些员工没有下属(不是别人的领导)? 外连接+匹配表PK is null 表示否定问题,不是,不包括,等等。

select manager.ename from emp worker

right outer join emp manager on worker.mgr = manager.empno

(首先找到所有经理下面的员工是哪些)

where worker.empno is null;

(然后将员工为空的过滤出来)

  1. 全外连接(左右两表都不加限制)full outer join

{

左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充。

【例】

select e.ename, d.loc from emp e full outer join dept d on (e.deptno = d.deptno);

}

自连接(同一张表内的连接)自连接是等值连接的一种。表中的列外键关联自己表的主键列。

自连接(self join)是SQL语句中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。

【例】查询每个员工的经理的名字?

select worker.ename,manager.ename from emp worker join emp manager on worker.mgr=manager.empno;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江添*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值