oracle 表的连接(交叉连接 ,内连接,自然连接,外连接,全外连接)

核心:交叉连接

select A.column1,A.column2,B.column1,B.column2 from A cross join B;

交叉连接就是做笛卡尔积 计算 原理如下 具体原理百度
解读示例: A表有2行数据 , B表有3行数据 交叉连接后,产生一个新表 C。
A ----------B
1 a2 —1 b2
2 a4 —2 b4
------ —3 b6
C
1 a2 1 b2
1 a2 2 b4
1 a2 3 b6
2 a4 1 b2
2 a4 2 b4
2 a4 3 b6

表C左边为 A表数据, 右边为B表数据。 一共产生6行数据(2*3=6)。其实就是排列组合。

内连接

在表C中 根据on 关键字后的条件 找行数据,然后 显示出来,显示的列就是select后的指定列;
特殊点:on 的两个判断列 名字可以不同 类型大致相同

select A.column1,A.column2,B.column1,B.column2 from A inner join B on A.column1=B.column1

在C表中找 到
1 a2 1 b2
2 a4 2 b4

自然连接

就是一种内连接
select A.column1,A.column2,B.column1,B.column2 from A natural join B
特殊在于:
1、省略了 on 语句 (条件语句) 系统会自动找 判断列
2、表A和表2中 至少有各自有一列 作为判断列,名称相同,类型大致相同()

外连接(左外 右外)

先根据on 语句的条件 进行内连接 得到一个结果,然后在结果的基础上 ,添加行,把A侧没有显示的 行数据,显示出来,B侧 显示为NULL;

全外连接

此连接 先根据on 语句的条件 进行内连接 得到一个结果,然后在结果的基础上,添加行,把A侧没有显示的 行数据,显示出来,B侧 显示为NULL; 把B侧没有显示的 行数据,显示出来,A侧 显示为NULL;

感兴趣的 可以自己做几个例子写一写
on 后面 可以用大于 小于 等于做判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值