Oracle学习之集合运算

一、集合运算操作符

 UNION:(并集)返回两个集合去掉重复值的所有的记录

 UNION ALL:(并集)返回两个集合去掉重复值的所有的记录

INTERSECT:(交集)返回两个集合的所有记录,重复的只取一次

 MINUS:(差集)返回属于第一个集合,但不属于第二个集合的所有

                       记录

集合运算中各个集合必须有相同的列数,且类型一致,集合运算的结

       果采用第一个集合的表头作为最终的表头,order by必须放在每个

       集合后

二、集合运算

使用UNION操作符查询scott表中10部门和20部门的员工信息

Sql代码  

  1. SQL> select * from emp
  2. 2  where deptno=10
  3. 3  union
  4. 4  select * from emp
  5. 5  where deptno=20;
  6. EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
  7. ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
  8. 7369 SMITH      CLERK           7902 17-12月-80            880                    20
  9. 7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
  10. 7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
  11. 7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20
  12. 7839 KING       PRESIDENT            17-11月-81           5000                    10
  13. 7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20
  14. 7902 FORD       ANALYST         7566 03-12月-81           3000                    20
  15. 7934 MILLER     CLERK           7782 23-1月 -82           1300                    10
  16. 已选择8行。

使用UNION操作符统计scott用户下emp表中得各个部门的总工资,

       和各部门各职位的工资

Sql代码  

  1. SQL> break on deptno skip 2;
  2. SQL> select deptno,job,sum(sal) from emp group by deptno,job
  3. 2  union
  4. 3  select deptno,to_char(null),sum(sal) from emp group by deptno
  5. 4  union
  6. 5  select to_number(null),to_char(null),sum(sal) from emp;
  7. DEPTNO JOB         SUM(SAL)
  8. ---------- --------- ----------
  9. 10 CLERK           1300
  10. MANAGER         2450
  11. PRESIDENT       5000
  12. 8750
  13. 20 ANALYST         6000
  14. CLERK           1980
  15. MANAGER         2975
  16. 10955
  17. 30 CLERK            950
  18. MANAGER         2850
  19. SALESMAN        5600
  20. 9400
  21. 29105
  22. 已选择13行。

使用UNION ALL操作符查询scott用户下dept表中的信息

Sql代码  

  1. SQL> select * from dept
  2. 2  union all
  3. 3  select * from dept;
  4. DEPTNO DNAME          LOC
  5. ---------- -------------- -------------
  6. 10 ACCOUNTING     NEW YORK
  7. 20 RESEARCH       DALLAS
  8. 30 SALES          CHICAGO
  9. 40 OPERATIONS     BOSTON
  10. 10 ACCOUNTING     NEW YORK
  11. 20 RESEARCH       DALLAS
  12. 30 SALES          CHICAGO
  13. 40 OPERATIONS     BOSTON
  14. 已选择8行。

使用INTERSECT操作符查询scott用户下dept表和emp表中都存在的

        部门号

Sql代码  

  1. SQL> select deptno from emp
  2. 2  intersect
  3. 3  select deptno from dept;
  4. DEPTNO
  5. ----------
  6. 10
  7. 20
  8. 30

使用MINUS操作符查询scott用户下dept表中存在而emp表中

不存在的部门号

Sql代码  

  1. SQL> select deptno from dept
  2. 2  minus
  3. 3  select deptno from emp;
  4. DEPTNO
  5. ----------
  6. 40

使用MINUS操作符查询scott用户下emp表中的员工工资属于

          (1200-2000)这个档,而不属于(1400-3000)这个档的员工

Sql代码  

  1. SQL> select empno,ename,job,sal
  2. 2  from emp
  3. 3  where sal between 1200 and 2000
  4. 4  minus
  5. 5  select empno,ename,job,sal
  6. 6  from emp
  7. 7  where sal between 1400 and 3000;
  8. EMPNO ENAME      JOB              SAL
  9. ---------- ---------- --------- ----------
  10. 7521 WARD       SALESMAN        1250
  11. 7654 MARTIN     SALESMAN        1250
  12. 7934 MILLER     CLERK           1300
时间: 2024-10-15 05:26:12

Oracle学习之集合运算的相关文章

oracle学习之集合运算和数据处理

集合运算主要有三种方式: 并集,union 两个集合相同的部份只保留一份,不同部份全部保留 union  all 两个集合全部保留 交集,intersect 两个集合保留相同的部份 差集,minus A差集B 保留 A中不在B中出现的部份 集合运算的注意事项: 1,参与运算的各个集合必须列数相同,且类型一致! 2,采用第一个集合的表头作为最终使用的表头,(别名也只能在第一个集合上起) 3,可以使用括号(),先执行后面的语句. 使用示例: select * from emp where deptn

SQL基础学习_06_集合运算和联结

集合运算 1. 并集:UNION ? ? 例: ? ? SELECT shohin_id, shohin_mei? ? FROM Shohin? ? UNION? ? SELECT shohin_id, shohin_mei? ? FROM Shohin2; ? ? 将Shohin和Shohin2两张表的shohin_id和shohin_mei两列取并集: ? ? 注意,UNION操作时,列数必须相等,且每列的数据类型应该相同 ? ? 保留重复行: UNION ALL 2. 交集:INTERSE

oracle学习笔记比较运算

<  >=  <= >=  <>(不等于)  !=(不等于)   :=(赋值) between--and  (在一个区间 包含边界) --查询工资在2000到5000的工资 select salary from employees where salary between2000and5000 in() --查询80,90,70,50,部门编号的人 Select last_name from employees where department_id in(80,90,

Oracle学习(七):集合运算

1.知识点:能够对比以下的录屏进行阅读 SQL> -- 查询10和20号部门的员工的3种方法 SQL> --1. select * from emp where deptno in (10,20); SQL> --2. select * from emp where deptno=10 or deptno=20; SQL> --3. 集合运算:union/union all并集.intersect 交集:minus差集 SQL> -- select * from emp wh

Oracle学习(7):集合运算

集合运算 小例子 SQL> --查询部门号10和20的员工 SQL> --1. select * from emp where deptno=10 or deptno=20; SQL> --2. select * from emp where deptno in (10,20); SQL> --3.集合运算(要将上述两语句执行结果合并起来) SQL> select * from emp where deptno=10 2  union 3   select * from em

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

 1  Oracle基于用户的管理方案 2 DDL语句可以管理数据库的对象有:视图   索引  序列  同义词   约束 3  创建一个表,有2个条件(1 有权限:2有表空间) Oracle给你提供了默认的resource. 4 创建表,表信息的增删改,Oracle回收站 DDL 管理数据库的对象 表 视图 索引 序列 同义词 约束(..... ) oracle基于用户的管理方案 借助于管理工具可以方便 看到数据库各个对象.... 1 创建一个表 2个条件(1 有权限  2 有表空间) or

oracle 集合运算

集合运算就是将两个或者多个结果集组合成为一个结果集.集合运算包括: INTERSECT(交集),返回两个查询共有的记录. UNION ALL(并集),返回各个查询的所有记录,包括重复记录. UNION(并集),返回各个查询的所有记录,不包括重复记录. MINUS(补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录. 当使用集合操作的时候,要注意:查询所返回的列数以及列的类型必须匹配,列名可以不同. 代码演示:查询出dept表中哪个部门下没有员工.只需求出dept表中的部门

Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age),max(age),min(age),avg(nvl(age,0)) from b_user 1       260     70      10      37.1428571428571 group by:如果前面定义了该字段名  则groupby必须也写上该字段 select name,pw

Sql学习笔记3——集合运算、空值和聚集函数

1.集合运算 SQL作用在关系上的union.intersect和except(Oracle中用minus代替except)运算,对应于数学集合论中的并.交和差运算.这三个运算都自动去除重复. eg: 找出在2009年秋季学期开课但不在2010年春季开课的所有课程 (select course_id from section where semester=‘Fall’ and year=2009) except (select course_id from section where semes