当前位置: 首页 > news >正文

数据集合

目录

并集

union

union all

区别

交集 

intersect

差集

minus

错误操作


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

常用的数学集合有:交集并集差集补集

每一次查询实际上都会返回数据集合,所以返回的结果可以使用 unionunion allminusintsect实现集合操作,此时的语法为以下形式,即把若干个查询操作结果融合实现集合

select [distinct] * | 列 [ 别名 ] , 列 [ 别名 ] ...
from 表名称 [ 别名 ], 表名称 [ 别名 ],...
[where 限定条件 (s)]
[order by  排序字段 [asc | desc], 排序字段 [asc | desc],...] union | union all | intersect | minus
select [distinct] * | 列 [ 别名 ] , 列 [ 别名 ] ...
from 表名称 [ 别名 ], 表名称 [ 别名 ],...
[where 限定条件 (s)]
[order by  排序字段 [asc | desc], 排序字段 [asc | desc],...] 

并集

union

SQL> select * from emp2  union3  select * from emp where deptno=10;EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH                CLERK                    7902 17-12月-80            800                    207499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         307521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         307566 JONES                MANAGER                  7839 02-4月 -81           2975                    207654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         307698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    307782 CLARK                MANAGER                  7839 09-6月 -81           2450                    107839 KING                 PRESIDENT                     17-11月-81           5000                    107844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         307900 JAMES                CLERK                    7698 03-12月-81            950                    307902 FORD                 ANALYST                  7566 03-12月-81           3000                    207934 MILLER               CLERK                    7782 23-1月 -82           1300                    108989 HELLO

此时的查询结果已经连接在一起了,但是union的处理过程是取消重复元素。因为在这个查询中,查询语句“select * from emp where deptno=10 ”的查询结果全部包含在查询语句“select * from emp”的查询结果中,所以还是显示“select * from emp”的查询结果

union all

SQL> select * from emp2  union all3  select * from emp where deptno=10;EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH                CLERK                    7902 17-12月-80            800                    207499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         307521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         307566 JONES                MANAGER                  7839 02-4月 -81           2975                    207654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         307698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    307782 CLARK                MANAGER                  7839 09-6月 -81           2450                    107839 KING                 PRESIDENT                     17-11月-81           5000                    107844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         307900 JAMES                CLERK                    7698 03-12月-81            950                    307902 FORD                 ANALYST                  7566 03-12月-81           3000                    207934 MILLER               CLERK                    7782 23-1月 -82           1300                    108989 HELLO7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    107839 KING                 PRESIDENT                     17-11月-81           5000                    107934 MILLER               CLERK                    7782 23-1月 -82           1300                    10

可以发现,这个查询语句的运行结果和union的运行结果不一样union all将两个查询结果合并到一起,而 union的运行结果会把重复的结果取消

区别

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

Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

交集 

intersect

SQL> select * from emp2  intersect3  select * from emp where deptno=10;EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    107839 KING                 PRESIDENT                     17-11月-81           5000                    107934 MILLER               CLERK                    7782 23-1月 -82           1300                    10

我们可以看出,运行结果是两个查询共有的结果,也就是两个集合的交集

差集

minus

SQL> select * from emp2  minus3  select * from emp where deptno=10;EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH                CLERK                    7902 17-12月-80            800                    207499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         307521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         307566 JONES                MANAGER                  7839 02-4月 -81           2975                    207654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         307698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    307844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         307900 JAMES                CLERK                    7698 03-12月-81            950                    307902 FORD                 ANALYST                  7566 03-12月-81           3000                    208989 HELLO

可以看出这次的查询结果返回的是查询语句“select * from emp”有而查询语句“select * from emp where deptno=10”没有的结果,即二者之间的差集

在使用集合操作时有一件非常重要的注意事项,由于集合的操作最终需要将若干个查询结果合并为 一个查询,所以要求这若干个查询结果所返回的数据结构必须相同

错误操作

select ename,job from emp where deptno=10;intersect
select empno,sal from emp;

此时执行必定出现问题,大家可以自行试试

这个错误的出现是因为两个查询结果所返回的数据结构不相同

http://www.lryc.cn/news/301146.html

相关文章:

  • php基础学习之作用域和静态变量
  • SP1:基于Plonky3构建的zkVM
  • Python爬虫之文件存储#5
  • Spring Boot 笔记 012 创建接口_添加文章分类
  • Spring-面试题
  • Flink理论—容错之状态
  • 【数据结构】链表OJ面试题5《链表的深度拷贝》(题库+解析)
  • 智慧校园规划建设方案
  • 003 - Hugo, 创建文章
  • HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-GPIO
  • 《Java 简易速速上手小册》第7章:Java 网络编程(2024 最新版)
  • 用keras对电影评论进行情感分析
  • 每日OJ题_算法_递归④力扣24. 两两交换链表中的节点
  • 110 C++ decltype含义,decltype 主要用途
  • PYTHON 120道题目详解(85-87)
  • 【Linux】Linux编译器-gcc/g++ Linux项目自动化构建工具-make/Makefile
  • sqlserver 子查询 =,in ,any,some,all的用法
  • 基于MapVGL的地理信息三维度数据增长可视化
  • 天锐绿盾|防泄密系统|计算机文件数据\资料安全管理软件
  • leetcode刷题(罗马数字转数字)
  • 什么是NAT网关?联通云NAT网关有什么优势
  • CVE-2023-41892 漏洞复现
  • 【每日一题】06 排序链表
  • 【精品】关于枚举的高级用法
  • Vue2学习第一天
  • HAL STM32通过multi_button库处理按键事件
  • 随机过程及应用学习笔记(一)概率论(概要)
  • 洛谷_P1059 [NOIP2006 普及组] 明明的随机数_python写法
  • 爆火的人工智能开源open-interpreter源码解析
  • POM设计模式思路,详解POM:概述与介绍,POM思路梳理+代码示例(全)