SQL> --什么是集合运算?
SQL> --查询10号部门和20号部门的员工
SQL> --第一种
SQL> select *
  2  from emp
  3  where deptno=10 or deptno=20;

EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                  
---------- ---------- --------- ---------- -------------- ----- ---------- ----------                                  
      7369 SMITH      CLERK           7902 17-12月-80       800                    20                                  
      7566 JONES      MANAGER         7839 02-4月 -81      2975                    20                                  
      7782 CLARK      MANAGER         7839 09-6月 -81      2450                    10                                  
      7788 SCOTT      ANALYST         7566 13-7月 -87      3000                    20                                  
      7839 KING       PRESIDENT            17-11月-81      5000                    10                                  
      7876 ADAMS      CLERK           7788 13-7月 -87      1100                    20                                  
      7902 FORD       ANALYST         7566 03-12月-81      3000                    20                                  
      7934 MILLER     CLERK           7782 23-1月 -82      1300                    10

已选择8行。

SQL> --第二种
SQL> select *
  2  from emp
  3  where deptno in (10,20);

EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                  
---------- ---------- --------- ---------- -------------- ----- ---------- ----------                                  
      7369 SMITH      CLERK           7902 17-12月-80       800                    20                                  
      7566 JONES      MANAGER         7839 02-4月 -81      2975                    20                                  
      7782 CLARK      MANAGER         7839 09-6月 -81      2450                    10                                  
      7788 SCOTT      ANALYST         7566 13-7月 -87      3000                    20                                  
      7839 KING       PRESIDENT            17-11月-81      5000                    10                                  
      7876 ADAMS      CLERK           7788 13-7月 -87      1100                    20                                  
      7902 FORD       ANALYST         7566 03-12月-81      3000                    20                                  
      7934 MILLER     CLERK           7782 23-1月 -82      1300                    10

已选择8行。

SQL> --第三种:集合运算
SQL> -- select * from emp where deptno=10;
SQL> -- select * from emp where deptno=20;
SQL> -- 集合的三种运算:并,交,差
SQL> select * from emp where deptno=10
  2  union
  3  select * from emp where deptno=20;

EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                  
---------- ---------- --------- ---------- -------------- ----- ---------- ----------                                  
      7369 SMITH      CLERK           7902 17-12月-80       800                    20                                  
      7566 JONES      MANAGER         7839 02-4月 -81      2975                    20                                  
      7782 CLARK      MANAGER         7839 09-6月 -81      2450                    10                                  
      7788 SCOTT      ANALYST         7566 13-7月 -87      3000                    20                                  
      7839 KING       PRESIDENT            17-11月-81      5000                    10                                  
      7876 ADAMS      CLERK           7788 13-7月 -87      1100                    20                                  
      7902 FORD       ANALYST         7566 03-12月-81      3000                    20                                  
      7934 MILLER     CLERK           7782 23-1月 -82      1300                    10

已选择8行。

SQL> --关于并集,讨论性能
SQL> --group by的增强
SQL> select deptno,job,sum(sal)
  2  from emp
  3  group by rollup(deptno,job);

DEPTNO JOB         SUM(SAL)                                                                                        
---------- --------- ----------                                                                                        
        10 CLERK           1300                                                                                        
        10 MANAGER         2450                                                                                        
        10 PRESIDENT       5000                                                                                        
        10                 8750                                                                                        
        20 CLERK           1900                                                                                        
        20 ANALYST         6000                                                                                        
        20 MANAGER         2975                                                                                        
        20                10875                                                                                        
        30 CLERK            950                                                                                        
        30 MANAGER         2850                                                                                        
        30 SALESMAN        5600

DEPTNO JOB         SUM(SAL)                                                                                        
---------- --------- ----------                                                                                        
        30                 9400                                                                                        
                          29025

已选择13行。

SQL> break on deptno skip 2
SQL> /

DEPTNO JOB         SUM(SAL)                                                                                        
---------- --------- ----------                                                                                        
        10 CLERK           1300                                                                                        
           MANAGER         2450                                                                                        
           PRESIDENT       5000                                                                                        
                           8750                                                                                        
                                                                                                                       
                                                                                                                       
        20 CLERK           1900                                                                                        
           ANALYST         6000                                                                                        
           MANAGER         2975                                                                                        
                          10875

DEPTNO JOB         SUM(SAL)                                                                                        
---------- --------- ----------                                                                                        
                                                                                                                       
        30 CLERK            950                                                                                        
           MANAGER         2850                                                                                        
           SALESMAN        5600                                                                                        
                           9400                                                                                        
                                                                                                                       
                                                                                                                       
                          29025

已选择13行。

SQL> host cls

SQL> select deptno,job,sum(sal) from emp group by deptno,job
  2  union
  3  select deptno,sum(sal) from emp group by deptno
  4  union
  5  select sum(sal) from emp;
select deptno,sum(sal) from emp group by deptno
*
第 3 行出现错误:
ORA-01789: 查询块具有不正确的结果列数

SQL> --使用集合操作的 注意事项:
SQL> --1.  参与运算的集合必须列数相同
SQL> --2.  运算后的结果的表头为第一个集合的表头
SQL> select deptno,job,sum(sal) from emp group by deptno,job
  2  union
  3  select deptno,to_char(null),sum(sal) from emp group by deptno
  4  union
  5  select to_number(null),to_char(null),sum(sal) from emp;

DEPTNO JOB         SUM(SAL)                                                                                        
---------- --------- ----------                                                                                        
        10 CLERK           1300                                                                                        
           MANAGER         2450                                                                                        
           PRESIDENT       5000                                                                                        
                           8750                                                                                        
                                                                                                                       
                                                                                                                       
        20 ANALYST         6000                                                                                        
           CLERK           1900                                                                                        
           MANAGER         2975                                                                                        
                          10875

DEPTNO JOB         SUM(SAL)                                                                                        
---------- --------- ----------                                                                                        
                                                                                                                       
        30 CLERK            950                                                                                        
           MANAGER         2850                                                                                        
           SALESMAN        5600                                                                                        
                           9400                                                                                        
                                                                                                                       
                                                                                                                       
                          29025

已选择13行。

SQL> --打开sql运行时间开关
SQL> set timing on
SQL> /

DEPTNO JOB         SUM(SAL)                                                                                        
---------- --------- ----------                                                                                        
        10 CLERK           1300                                                                                        
           MANAGER         2450                                                                                        
           PRESIDENT       5000                                                                                        
                           8750                                                                                        
                                                                                                                       
                                                                                                                       
        20 ANALYST         6000                                                                                        
           CLERK           1900                                                                                        
           MANAGER         2975                                                                                        
                          10875

DEPTNO JOB         SUM(SAL)                                                                                        
---------- --------- ----------                                                                                        
                                                                                                                       
        30 CLERK            950                                                                                        
           MANAGER         2850                                                                                        
           SALESMAN        5600                                                                                        
                           9400                                                                                        
                                                                                                                       
                                                                                                                       
                          29025

已选择13行。

已用时间:  00: 00: 00.56
SQL> select deptno,job,sum(sal)
  2  from emp
  3  group by rollup(deptno,job);

DEPTNO JOB         SUM(SAL)                                                                                        
---------- --------- ----------                                                                                        
        10 CLERK           1300                                                                                        
           MANAGER         2450                                                                                        
           PRESIDENT       5000                                                                                        
                           8750                                                                                        
                                                                                                                       
                                                                                                                       
        20 CLERK           1900                                                                                        
           ANALYST         6000                                                                                        
           MANAGER         2975                                                                                        
                          10875

DEPTNO JOB         SUM(SAL)                                                                                        
---------- --------- ----------                                                                                        
                                                                                                                       
        30 CLERK            950                                                                                        
           MANAGER         2850                                                                                        
           SALESMAN        5600                                                                                        
                           9400                                                                                        
                                                                                                                       
                                                                                                                       
                          29025

已选择13行。

已用时间:  00: 00: 00.50
SQL> set timing off
SQL> break on null
SQL> host cls

SQL> --交集:
SQL> -- 查询工资属于1000~2000这个区间和1500~2500这个区间
SQL> select * from emp where sal between 1000 and 2000
  2  intersect
  3  select * from emp where sal between 1500 and 2500;

EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                  
---------- ---------- --------- ---------- -------------- ----- ---------- ----------                                  
      7499 ALLEN      SALESMAN        7698 20-2月 -81      1600        300         30                                  
      7844 TURNER     SALESMAN        7698 08-9月 -81      1500          0         30

SQL> --差集:
SQL> --查询工资属于1000~2000,但不属于1500~2500
SQL> ed
已写入 file afiedt.buf

1  select * from emp where sal between 1000 and 2000
  2  minus
  3* select * from emp where sal between 1500 and 2500
SQL> /

EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                  
---------- ---------- --------- ---------- -------------- ----- ---------- ----------                                  
      7521 WARD       SALESMAN        7698 22-2月 -81      1250        500         30                                  
      7654 MARTIN     SALESMAN        7698 28-9月 -81      1250       1400         30                                  
      7876 ADAMS      CLERK           7788 13-7月 -87      1100                    20                                  
      7934 MILLER     CLERK           7782 23-1月 -82      1300                    10

SQL> --1.列数相同
SQL> --2. 采用第一个集合的表头
SQL> spool off

Oracle集合运算相关推荐

  1. 【学亮IT手记】oracle集合运算

    [学亮IT手记] oracle集合运算 union做并集运算: ①union集合运算的结果不包括去掉重复记录. ②union all集合运算的结果包括重复记录. intersect进行交集运算 min ...

  2. Oracle学习XII —— Oracle集合运算

    Oracle集合运算 Oracle集合运算就是把多个查询结果组合成一个查询结果,oralce的集合运算包括:INTERSECT(交集).UINION ALL(交集重复).UINION(交集不重复).M ...

  3. Oracle——集合运算

    集合运算 示例 1:查询10和20号部门的员工 1. select * from emp where deptno=10 or deptno=20; 2. select * from emp wher ...

  4. oracle union all写法,【oracle】-集合运算:UNION,UNION ALL...

    在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:求并,重复记录只显示一次. UNION ALL:求并集,显示所有记录信息. INT ...

  5. 5.创建表,使用alter进行表信息的增删改,Oracle回收站,集合运算

     1  Oracle基于用户的管理方案 2 DDL语句可以管理数据库的对象有:视图   索引  序列  同义词   约束 3  创建一个表,有2个条件(1 有权限:2有表空间) Oracle给你提 ...

  6. Oracle(二):查询、函数、集合运算

    一.单表查询 (一)简单条件查询 1.精确查询 需求:查询水表编号为 30408 的业主记录,查询语句: select * from T_OWNERS where watermeter='30408' ...

  7. 318分组聚合,关联查询(多表连接查询)(连接查询),连接查询oracle写法,集合运算ld

    ----------分组聚合:对表里面的数据进行各个维度/角度的统计 -------------统计:需要用 聚合函数 max(目标字段):求最大值 min(目标字段) :求最小值 avg(目标字段) ...

  8. Oracle 多表查询与集合运算

    select * from bonus;select * from salgrade;/*多表查询:笛卡尔积: 实际上是两张表的乘积,但是在实际开发中没有太大意义格式: select * from 表 ...

  9. Oracle数据库之集合运算

    集合运算符 集合运算符查询组合两个组件查询的结果到一个结果,包含集合运算符的查询称为复合查询.SQL集合运算符如下: 集合运算符 UNION:All distinct rows selected by ...

最新文章

  1. python内置函数教程_Python内置函数详解
  2. python redis模块_python redis 模块 官方文档(中)
  3. 多线程与高并发(四):LockSupport,高频面试题,AQS源码,以及源码阅读方法论
  4. 记得重用layout
  5. NBU计算机专业期末考试记录
  6. 黑色30s高并发IIS设置
  7. 腾讯阿里美团相继搞事,渣本程序员的出路在哪?
  8. WPF设计の自定义窗体
  9. Drawable转换为Bitmap两种方法
  10. excel清空sheet内容 poi_Excel隐藏了一个sheet表,java poi中是可以读出来的,现在我不想读取隐藏的sheet表。...
  11. MEncoder的基础用法—6.7. 媒体流复制
  12. CSS(刷漆)学习总结
  13. 初中计算机知识ppt,初中信息技术操作考试系统题库PowerPoint部分
  14. 原子结构示意图全部_所有原子结构示意图
  15. 技术指南 | 理解零知识证明算法之Zk-stark
  16. 一个并肩战斗的同事将离开团队,去家乡追寻梦想
  17. 安大计算机学院导师有姓汪的,汪西莉-陕西师范大学计算机科学学院
  18. 苹果手机上网很慢_手机4G信号满格,上网速度却很慢?原来都是它们在“搞鬼”...
  19. 惠普暗影精灵II代pro进入biso
  20. 跳槽的新公司,我直接让项目的性能提升了一半

热门文章

  1. JavaScript实现Knapsack problem背包问题算法(附完整源码)
  2. OpenCASCADE绘制测试线束:拓扑命令之纹理映射到形状
  3. OpenCASCADE:绘制演示脚本
  4. wxWidgets:wxCollapsiblePane类用法
  5. boost::variant2模块转换构造抛出相关的测试程序
  6. boost::assertion_failed_msg相关的测试程序
  7. boost::regex模块用于测试特定于语言环境的表达式的帮助程序类
  8. BOOST使用 proto::extends 扩展终端类型的简单示例
  9. boost::gil::compute_hessian_responses用法的测试程序
  10. boost::coroutine2模块实现协程的测试程序