前言:

学习oracle差不多有一年了,但是老长时间不用,基本上已经把学的东西全部还给老师了。正好这几天做的项目是使用oracle数据库,
趁这个机会好好的复习一把。下面复习的是oracle的交集,并集,差集,做了一点案例。今天记录一下,哪里有不对的地方,
欢迎大神指点!

准备工作:创建数据表 PERSON,插入数据

创建person表:
CREATE TABLE PERSON
(ID NUMBER NOT NULL
, PERSON_NAME VARCHAR2(20) NOT NULL
, CONSTRAINT PRESON_PK PRIMARY KEY (ID )ENABLE
);
插入测试数据:
INSERT INTO  PERSON (ID,PERSON_NAME) VALUES (1,'张三');
INSERT INTO  PERSON (ID,PERSON_NAME) VALUES (2,'李四');
INSERT INTO  PERSON (ID,PERSON_NAME) VALUES (3,'王五');
INSERT INTO  PERSON (ID,PERSON_NAME) VALUES (4,'赵六');
INSERT INTO  PERSON (ID,PERSON_NAME) VALUES (5,'钱八');
INSERT INTO  PERSON (ID,PERSON_NAME) VALUES (6,'李九');
INSERT INTO  PERSON (ID,PERSON_NAME) VALUES (7,'高十');
INSERT INTO  PERSON (ID,PERSON_NAME) VALUES (8,'笑十一');

知识点一:求交集(使用关键字 INTERSECT 用法:INTERSECT两边都是查询语句)

测试思路:
1.取出PERSON表中前5条数据2.取出PERSON表中前8条数据3.两者取交集
测试SQL:
  1. 取出前5条记录:
SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=5;--取表中的前5条数据


2. 取出前8条记录:

SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=8;--取表中的前5条数据


3. 取交集

--单列
SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=5 INTERSECT SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=8; --交集(结果为前五条数据)

总结:

1.使用INTERSECT后确实取到了交集,结果为前五条,结果正确。
上面只是单列取交集,那么多列呢?
--多列也是可以的
SELECT PERSON_NAME,ID FROM PERSON WHERE ROWNUM <=5 INTERSECT SELECT PERSON_NAME,ID FROM PERSON WHERE ROWNUM <=8; --交集(结果为前五条数据)

结果为:

知识点二:取并集(使用关键字 UNION 或者 UNION ALL 注意两者区别)

测试思路:
 1.取出PERSON表中前5条数据2.取出PERSON表中前8条数据3.两者取并集
测试一:使用 UNION
--使用UNION(合并相同项)
SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=5 UNION SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=8 ;

结果为:

总结:
1.结果和查询前八条相同,只是前后顺序发生了改变。
2.也就是说UNION会合并相同的项

测试二:使用 UNION ALL
--使用UNION ALL(不合并相同项)
SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=5 UNION ALL SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=8 ;

结果为:

总结:
1.UNION ALL 不合并相同项,而是把两个查询结果做合并

知识点三:取差集(使用关键字 minus 注意:前后位置的区别)

测试思路:
 1.取出PERSON表中前5条数据2.取出PERSON表中前8条数据3.两者取差集(注意:这里交换了1,2的位置,结果不同)
测试一:前五条记录在前,前八条记录在后
SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=5 MINUS SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=8 ;

结果为:

总结:
1.可以看到没有查询出来结果
2.前五条 minus 前八条 相当于 前五条数据 减去 前八条数据 结果肯定为空

测试二:前八条记录在前,前五条记录在后
SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=8  MINUS  SELECT PERSON_NAME FROM PERSON WHERE ROWNUM <=5;

结果为:

总结:
1.结果为前八条的后三条数据,也就是第六条到第八条数据
2. 前八条 差集(minus) 前五条 相当于 前八条 减去 前五条 得到后三条结果

知识点四:注意事项

1. 取交集的时候,INTERSECT 两边必须是select语句得到的结果集
2. 使用UNION做并集会合并相同项
3. 使用UNION ALL做并集不会合并相同项
4. 取差集注意在MINUS的前后位置,会影响到结果。得到的结果总是:MINUS前面的结果集 减去 MINUS后面的结果集

oracle笔记之交集(INTERSECT)、并集(UNION UNION ALL )、差集(MINUS)相关推荐

  1. 日常python学习笔记DAY 8---集合运算(交集、并集、超集和差集)

    日常python学习笔记DAY 8-集合运算(交集.并集.超集和差集) ''' 集合的运算有交并超差以及堆成差集合 ''' #求交集 & .intersection() .intersecti ...

  2. mysql union minus_MySQL实现差集(Minus)和交集(Intersect)

    MySQL没有实现Minus和Intersect功能,就像它也没有实现cube的功能一样. 可以用SQL实现同样的功能,就是麻烦了点. drop table t1; drop table t2; cr ...

  3. SQL查询交集、并集、差集

     两个表A  和表 T          交集 intersect 并集   UNION SQL:select df from A union select sd from T; 在Union后不加A ...

  4. Oracle 集合操作详解(并集 union、交集 intersect、差集 minus)

    文章目录 1 概述 2 示例 1 概述 1. Oracle 中有三种集合操作(1) 并集 union all -- 不去重,不排序,效率高union -- 去重,默认排序,效率低 (2) 交集 int ...

  5. R函数:交集intersect、并集union、找不同setdiff、判断相同setequal

    R语言基础系列: 你知道R中的赋值符号箭头(<-)和等号(=)的区别吗? 1数据类型(向量.数组.矩阵. 列表和数据框) 2读写数据所需的主要函数.与外部环境交互 3数据筛选--提取对象的子集 ...

  6. es6 --- set实现并集(Union)、交集(Intersect)和差集(Difference)

    Set:类似于数组,但是成员的值都是唯一的 let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]);// 并集 let union = new S ...

  7. oracle+union+连接,Oracle中union/union all/Intersect/Minus用法

    Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序: Union All,对两个结果集进行并集操作,包括重复行,不进行排序: Intersect,对两个结果集进行交集操作,不包 ...

  8. oracle 并集 时间_oracle 交集和并集

    今天研究了一下oracle 交集和并集,下面把我经过查找资料,测试后,整理如下: 1.并集 表1: insert into student1 values(1,'学生1'); insert into ...

  9. oracle 交集和并集

    今天研究了一下oracle 交集和并集,下面把我经过查找资料,测试后,整理如下: 1.并集 表1: insert into student1 values(1,'学生1'); insert into ...

最新文章

  1. 特斯拉AI团队招兵买马:“英雄不问出处”
  2. 中国联通:基于SOC的MSS实践
  3. Qt Creator常用快捷键及技巧提升编码效率
  4. 贪心+单调栈——去除重复字母(Leetcode 316)
  5. 安卓-08-布局管理器
  6. linux MISC 驱动模型分析
  7. DotNetTextBox编辑器
  8. 机械设计基础课程设计详细步骤(说明书)
  9. 软件测试——决策表法
  10. 系统还原点设置被系统管理员禁用
  11. 利用Q-learning解决Cliff-walking问题
  12. Git 提交提示 src refspec develop does not match any.
  13. OpenCV4.3 Java 编程入门:灰度映射
  14. 中国第一大微商TST涉嫌传销案听证会结束
  15. cmd中文输入和显示问题
  16. MikTex+texworks插入数学公式示例
  17. 51单片机通过驱动器精准控制步进电机
  18. DOS界面下的翻译软件制作
  19. 深度学习-np.pad 填充详解
  20. Rascal Flatts乐队简介

热门文章

  1. Linux终端连接redis数据库【重点】
  2. DevExpress VCL for Delphi 各版本收集下载
  3. 三角函数补充(反三角函数与 sec)
  4. Launcher3---Hotseat 应用图标
  5. 【单片机毕业设计】【mcuclub-jj-019】基于单片机的油烟机的设计
  6. 南京欣威视通信息科技股份有限公司
  7. 强化学习(Reinforcement learning)综述
  8. XGBoost 原理
  9. Python学习第四周第一次作业——用户输入和while循环
  10. 有线无线一体化网络设计原则