oracle集合运算
来源:互联网 发布:samplitude mac 编辑:程序博客网 时间:2024/06/05 16:36
集合运算
主要运用 : 数据统计
并集: union
交集 :interset
差集:minus
使用oracle提供的scott用户进行演示
– 工资大于1500 或者是20号部门下的员工(并集运算)
1.使用unionselect * from emp where sal > 1500 union select * from emp where deptno = 20;
2.使用union allselect * from emp where sal > 1500 union all select * from emp where deptno = 20;
这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。
而union all只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,union all要比union快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all
–工资大于1500 并且是20号部门下的员工(交集运算)
select * from emp where sal > 1500
intersect
select * from emp where deptno = 20;
—- 工资大于1500 并且不是20号部门下的员工(差集运算)
-- 工资大于1500 并且不是20号部门下的员工select * from emp where sal > 1500minus select * from emp where deptno = 20;
注意事项演示
demo
select ename,sal from emp where sal > 1500unionselect ename from emp where deptno = 20;
出错原因,参数数量不匹配,oracle要求参数数量要一致
解决方案: 如果没有相同的列的话就是用null填充,
demo
出错原因 ,
参数类型不一致, sal 是 number 类型, job是varchar2类型 ,
解决方案,
使用 0 或 “” 或 null代替
建议的话使用null代替,因为null是万能的 , 0 只能代替 数字 , “”只能代替varchar类型
demo
还有一点要注意的是
问题归总
- 查询类型要一致
- 查询参数个数要一致
- 列的含义要求一致
总结 :
union 跟 union all 的区别
- union 可去重,但是效率效率相对于较低
- union all 不可去重,但是效率相对于较高
union: 其实就相当于或的意思
intersect : 其实就相当是并且的意思
minus :其实就相当是取反的意思,
以上就是oracle的集合运算,
- Oracle集合运算符
- Oracle(八)--------------------集合运算
- oracle集合运算
- oracle集合运算
- Oracle 集合运算
- Oracle集合运算
- oracle集合运算详解
- Oracle:集合运算
- Oracle 集合运算符
- Oracle集合运算
- oracle 集合运算
- oracle 集合运算
- Oracle集合运算
- Oracle的集合运算
- 【Oracle数据库】集合运算
- Oracle集合运算
- oracle集合运算
- oracle--9.集合运算
- GitHub配置SSH key
- 搭建远程仓库(源)来托管 Sencha 包(Pacakge)
- PHP之redis
- 布局与日历
- 静态方法和成员变量
- oracle集合运算
- JAVA的数组①
- dp专题:合并石子
- 安装ubuntu
- 【CF 897C】Nephren gives a riddle
- struts2核心配置文件名称及加载
- JVM内存区域(二)
- 折半查找、快速排序
- MySQL数据库优化的八种方式(经典必看)