ORACLE SQL SET运算符
**
ORACLE SQL SET运算符
**
开发工具与关键技术:Oracle sql*plus PLSQL Developer
作者:何任贤
撰写时间:2019年01月01日
SET运算符,主要是对两个查询或多个查询的结果进行运算,不过只有加减,意思是能把结果进行加减,不过该加减不是数字的加减而是集的加减。
SET运算符四大关键字(UNION 、 UNION ALL、INTERSECT、MINUS),意思分别是并集
(去重复)、并集(不去重复)、交集、差集。
注意事项:使用SET运算符时,要保证两个查询或多个查询数据数据类型一致,列数一致,但必须保证列数和数据类型一致,若列名不一致则默认为第一个查询的列名。
1、 UNION,合并数据并且把重复的数据去掉
2、 UNION ALL, 只合并数据不会把重复的数据去掉
可以理解为UNION只是比UNION ALL多了一个去重复,具体如示例一
示例一:
图1 图2
图1是表数据 、图2是表结构,其中SNO代表学号、CNO代表科目号、SCORE代表成绩。
题目:获取每个科目成绩的最小值和每个科目成绩的最大值,并且要求把成绩的最大值和成绩的最小值合并,然后再列出科目号、成绩。
代码1:
SELECT CNO,MAX(SCORE) as SCORE FROM SC GROUP BY CNO
UNION
SELECT CNO,MIN(SCORE) as SCORE FROM SC GROUP BY CNO
代码2:
SELECT CNO,MAX(SCORE) as SCORE FROM SC GROUP BY CNO
UNION ALL
SELECT CNO,MIN(SCORE) as SCORE FROM SC GROUP BY CNO
图3 图4
代码一的结果为图3 ,代码二的结果为图4,由此可以看出UNION和UNION ALL区别,明显的可以看到UNION不仅会把数据合并,并且会把重复的数据去掉,只保留重复数据中的其中一条,而UNION ALL只是合并数据不并会把数据进行任何的改动。
这就是UNION和UNION ALL的特点,我们可以根据自己的需求来应用。
3、 INTERSECT,获取两个查询或多个查询的数据的相同的数据,意思是保留相同的数据不同的去掉,且只保留一条相同的。
示例二:
图1是表数据 、图2是表结构,其中SNO代表学号、CNO代表科目号、SCORE代表成绩。
题目:获取每个科目成绩的最小值和每个科目成绩的最大值,并且要求把它们之间相同的数据保留出来,然后再列出科目号、成绩。
代码:
SELECT CNO,MAX(SCORE) as SCORE FROM SC GROUP BY CNO
INTERSECT
SELECT CNO,MIN(SCORE) as SCORE FROM SC GROUP BY CNO
结果为图5
图5
从结果可以看到INTERSECT的特点,它代表交集,它是把相同的部分保留一份出来,不同的全部去掉,该特点跟数学的交集非常相似。
4、 MINUS,差集,意思是集合一减去集合二所剩下的数据,叫做差集,差是被减数-减数=差,集是集合的意思。
示例三:
图1是表数据 、图2是表结构,其中SNO代表学号、CNO代表科目号、SCORE代表成绩。
题目:获取每个科目成绩的最小值和每个科目成绩的最大值,并且要求将最大值的数据减去最小值的数据,然后再列出科目号、成绩。
代码:
SELECT CNO,MAX(SCORE) as SCORE FROM SC GROUP BY CNO
MINUS
SELECT CNO,MIN(SCORE) as SCORE FROM SC GROUP BY CNO
结果为图6、最大值的数据为图7、最小值数据为图8
图6 图7 图8
由图6、图7、图8,我们可以明显的看出MINUS的特点,图7减去图8等于图6,可以看到的是科目C003被去掉了,只保留了科目C001和C002的最大值,MINUS的特点就是把相同的数据去掉只保留第一个查询的数据,而第二个查询的数据不管有没有重复都不要。
上面我们说到SET 运算符是加减法,由示例一、二、三,我们可以看到的是UNION和UNION ALL都是加法,只不过是UNION只保留一条相同的数据,UNION ALL保留两条或多条相同的数据,而INTERSECT和MINUS是减法,INTERSECT则是减去不同的数据,且只保留一条相同的数据,而MINUS则是把数据一的数据减去和数据二相同的数据,保留和数据二不同的数据,不保留数据二的任何数据。
ORACLE SQL SET运算符相关推荐
- sql 两个表列包含_Oracle数据库扩展语言PL/SQL之运算符
[本文详细介绍了Oracle数据库扩展语言PL/SQL的运算符,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 运算符是一个符号,告诉编译器执行特定的数学或逻辑操作. PL/SQL 语言有丰富的内置 ...
- oracle入门语,Oracle SQL 语言从入门到精通
Oracle SQL 语言从入门到精通 作者:网络 佚名 2005-10-27 00:00 评论 分享 [IT168 服务器学院]数据库对象包括表.视图.索引.同义词.簇.触发器.函数.过程.包.数据 ...
- Oracle SQL 基础要点
Oracle SQL 基础要点 本文是学习<程序员的SQL金典>时的读书摘要,记录一些自己不太熟悉或者很重要的知识点.方便后期对照复习. 1.各种主流数据库的优缺点比较 - DB2由IBM ...
- oracle查询sql走索引吗,Oracle SQL不走索引小记
sql执行计划不走索引 一.优化器认为走全表扫描更优. 在这种情况下,需要重新分析一遍表,更新表的状态,有助于优化器分析出正确的执行计划. analyze table tablename comput ...
- oracle sql以及性能调优
目 录 1.选用适合的ORACLE优化器 2 2.访问Table的方式 3 3.共享SQL语句 3 4.选择最有效率的表名顺序(只在基于规则的优化器中有效) 5 5.WHERE子句中的连接顺序. 6 ...
- 查询所有表、索引、视图信息的SQL语句-Mysql/oracle/sql server的不同实现方式
注:所有查询默认在管理员用户下进行 ----------------------------------Mysql中------------------------------------------ ...
- 名师讲坛 php 光盘内容,《名师讲坛——Oracle SQL入门与实战经典 配光盘 》怎么样_目录_pdf在线阅读 - 课课家教育...
第0章 Oracle的安装及相关配置 0.1 Oracle的安装 0.2 Oracle 11g中的SQL*Plus 0.3 scott用户及其对象维护 0.4 本书中将用到的表 0.5 SQL(Str ...
- Oracle SQL学习笔记
参考:FreeIT-Oracle教程 实用sql 0.1.update内容中含有单引号 方案:用两个单引号代替一个单引号 select to_char('aa''否''aa') from dual;- ...
- oracle sql语句序列,Oracle SQL之 序列使用限制
Restrictions on Sequence Values You cannot use CURRVAL and NEXTVAL in the following constructs: ■ A ...
最新文章
- python os system用法_Python调用系统命令os.system()和os.popen()的实现
- Unity新手教程:Roll-a-Ball游戏开发中的使用
- MSSQL 2005数据库与SP4补丁安装
- 机器学习实战之K近邻算法
- 计算机未来发展趋势四个字概括,授课教师-世界大学城.doc
- python中argmin函数_Python numpy.argmin()用法及代码示例
- oracle里面如何查询sqlid,Oracle SQL查询:如何使用count
- 微课计算机教学研究案例,《微课在中学信息技术教学中有效运用的案例研究》的开题报告...
- HFSS----微带天线设计实例之模型建立
- JAVA发送HttpClient请求及接收请求完整代码实例
- linux mysql ip_Linux下配置mysql允许指定IP远程访问
- 如何写好一份数据分析报告?
- @ConfigurationProperties(prefix = )异常报错解决方案:
- python怎么编辑excel_python 修改excel表格数据-关于如何用python 编辑 excel表格
- FlyAI小课堂:python机器学习笔记:深入学习决策树算法原理
- 数据库 —— mycat 代理
- 新概念英语2如何背诵啊?
- GO 发送邮件,官方连包都帮我们写好了
- 四足爬行机器人运动_四足爬行机器人控制研究
- 用zrender实现工作流图形化设计(附范例代码)
热门文章
- [转载自简书] ASPNetCore上传大文件碰到的一些问题总结
- Leetcode-937-Reorder Log Files-(Easy)
- Android开发 - 设置DialogFragment全屏显示
- Linux bridge 资料链接
- logstash 利用drop 丢弃过滤日志
- 使用 NodeJS + Express 從 GET/POST Request 取值 -摘自网络
- 重装系统后软件安装 ----一直更新
- js实时获取系统当前时间
- Hypertable hbase hdfs kfs java与c++的较量
- 程设13次作业总结--运算符重载