Oracle各种连接写法介绍

1、左连接

左连接(左外连接):
基表全部查出来,外连接表有的匹配,没有则为null;
记录数与基表的记录数相同,前提是where后未加条件过滤;
两种写法(left  join)或(left outer join)外连接时将过滤条件

2、外连接(全外连接)

外连接(全外连接):全外连接返回参与连接的两个数据集合中的全部数据,无论它们是否具有与之相匹配的行;
写法(full  outer  join)在功能上,它等价于对这两个数据集合分别进行左外连接和右外连接,然后再使用消去重复行的并操作将上述两个结果集合并为一个结果集。
(前提时where后未加条件过滤,个人测试结果:全外连接条数=左连接条数+右连接条数-内连接条数)

3、外连接与条件配合使用

当在内连接查询中加入条件时,无论是将它加入到on后面还是加在where后面,其效果都是完全一样的。
但对于外连接情况就不同了,当把条件加入到on后面时,数据库会先返回基表全部记录,然后与外连接表中指定条件的记录进行匹配,记录数与基表的记录数相同;
如果将条件放到where后面,会先进行连接操作,然后使用where子句对连接后的数据进行筛选。

4、自身连接

指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。
例如:在机构表中查找本机构和上级机构的信息
select * from  A a1  jion  A a2 on a1.parent_orgid=a2.orgid

5、交叉(无限连接)

交叉连接用于对两个源表进行纯关系代数的乘运算。它不使用连接条件来限制结果集合,而是将分别来自两个数据源中的行以所有可能的方式进行组合。
数据集合1中的每个行都要与数据集合2中的每一个行分别组成一个新的行。人们将这种类型的结果集称为笛卡尔乘积。写法:
select * from A  cross  join  B
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值