集合

本文详细介绍了数据库中的集合运算,包括加法union、乘法intersect、减法except,以及联结(join)的概念和用法。强调了这些运算对记录行数的影响,以及在实际业务中的应用。此外,还提到了内联结的正确使用方式和避免使用过时语法的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1、加法union
表的加法union(并集),会对表数据进行除重,如果要包含重复项则加all
注意:
(1)作为运对象的记录的列数必须相同
(2)作为运算对象的记录中列的类型必须一致
(3)可以使用select语句,但是order by子句只能在最后使用一次

2、乘法intersect
表的乘法intersect(交集),应用于两张表,选取出它们当中公共的记录,如果保留重复行则加all,mysql尚不支持

3、减法
记录的减法except,mysql尚不支持,oracle中使用的是minus

4、union、intersect等集合运算是以行方向为单位进行操作,进行这些集合操作时会导致记录行数的增减,使用union会增加记录行数,而使用intersec或者except会减少记录行数

5、联结(join)是将其他表中的列添加过来,进行添加列的集合运算,以列为单位进行运算

6、联结运算就是以A表中的列为桥梁,将B表中满足同样条件的列汇集到同一结果中

7、联结的on之后指定两张表联结所使用的列(联结键),on是专门用来指定联结条件的,它能起到与where相同的作用

8、使用联结时select子句中的列需要按照<表的别名>.<列名>的格式进行书写

9、交叉联结(cross join)是对两张表中的全部记录进行交叉结合,因此结果中的记录数通常是两张表中行数的乘积

10、交叉联结没有应用到实际业务之中有两个原因:一是其结果没有实用价值,二是由于其结果行数太多,需要花费大量的运算时间和高性能设备的支持

11、不要使用过时语法的内联结,比如select * from A,B where A.id=B.id and A.id=‘001’,这样的语法无法马上判断出到底是内联结还是外联结,且联结条件都写在where子句之中,因此无法在短时间内分辨出哪部分是联结条件,哪部分是用来取数的限制条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值