美文网首页程序园
Oracle SQL 学习笔记5 - 集合操作符

Oracle SQL 学习笔记5 - 集合操作符

作者: 赵阳_c149 | 来源:发表于2020-02-05 10:21 被阅读0次

什么是集合操作符

集合操作符将两个查询的结果组合成一个结果,常见集合操作符:MINUS(减去),INTERSECT(交集)和UNION ALL(并集)【1】。

UNION

Union.png

实例1,利用列配对

SQL> SELECT e.employee_id, e.job_id, e.salary
FROM hr.employees e
UNION
SELECT j.employee_id, j.job_id, 0
FROM hr.job_history j;   

EMPLOYEE_ID JOB_ID     SALARY
----------- ---------- ----------
    100 AD_PRES     24000
    101 AC_ACCOUNT      0
    101 AC_MGR      0
    101 AD_VP       17000
    102 AD_VP       17000
    102 IT_PROG     0
    103 IT_PROG      9000
    104 IT_PROG      6000
    105 IT_PROG      4800
    106 IT_PROG      4800
    107 IT_PROG      4200

实例2,为集合操作匹配列:

SQL> SELECT e.department_id, TO_NUMBER(null) location, e.hire_date
FROM HR.employees e
UNION 
SELECT d.department_id, d.location_id, TO_DATE(null)
FROM HR.departments d;  

DEPARTMENT_ID   LOCATION HIRE_DATE
------------- ---------- ---------
       10       1700
       10        17-SEP-03
       20       1800
       20        17-FEB-04
       20        17-AUG-05
       30       1700
       30        07-DEC-02
       30        18-MAY-03
       30        24-JUL-05
       30        24-DEC-05
       30        15-NOV-06

UNION ALL

UNION ALL 操作符返回两个查询结果集的合并,但不去重复值,也不排序。

Oracle UNION操作符特点
  1. 除了UNION ALL其他集合操作都自动剔除重复值
  2. 结果列名自动继承第一个SELECT语句的列名
  3. 除了UNION ALL语句其他集合操作都自动对结果排序
  4. 多个SELECT表达式列表必须在类型和个数上匹配
  5. 可以用括号来改变执行顺序
  6. ORDER BY子句只能出现在整个语句的最后。可以使用第一个SELECT语句的列名、列别名和位置号

INTERSECT

Intersect.png

实例,找到工作title和初始受雇时一样的员工,并显示他们的员工号和工作号。

SQL> SELECT e.employee_id, e.job_id
FROM HR.employees e
INTERSECT
SELECT j.employee_id, j.job_id
FROM HR.job_history j;    

EMPLOYEE_ID JOB_ID
----------- ----------
    176 SA_REP
    200 AD_ASST

MINUS

Minus.png

实例,显示从来没有改变过工作的员工的员工号:

SQL> SELECT e.employee_id
FROM HR.employees e
MINUS
SELECT h.employee_id
FROM HR.job_history h;    

EMPLOYEE_ID
-----------
    100
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112

控制返回行的顺序

如果需要在集合操作的结果中体现不同集合的顺序,可以加入一个虚拟的列,并用ORDER BY 子句对行按照虚拟列排序。

SQL> 
COLUMN a_dummy NOPRINT
SELECT 'sing' AS "My dream", 3 a_dummy 
FROM dual
UNION SELECT 'I''d like to teach', 1 a_dummy
FROM dual
UNION
SELECT 'the world to', 2 a_dummy
FROM dual
ORDER BY a_dummy;

My dream
-----------------
I'd like to teach
the world to
sing

本文涉及到的表

本文涉及到的表来自于Oracle数据库自带的HR shema 下的:

  1. EMPLOYEES:员工信息
  2. JOB_HISTORY:员工工作变动历史信息

【1】Oracle——集合操作符(MINUS、INTERSECT、UNION ALL)

相关文章

  • Oracle SQL 学习笔记5 - 集合操作符

    什么是集合操作符 集合操作符将两个查询的结果组合成一个结果,常见集合操作符:MINUS(减去),INTERSECT...

  • Oracle操作符,函数

    SQL 操作符 Oracle 支持的 SQL 操作符分类如下: 操作符介绍(一) 算术操作符 用于执行数值计算 可...

  • oracle学习笔记4: SQL与面向集合

    列出定单之间的平均天数 SQL是基于集合理论的,集合中的行没有预先确定顺序,排序就必须在符合查询条件的数据行都从集...

  • Oracle 集合处理sql

    /根据一组坐标+半径+生成的坐标精度生成一组圆形集合数据/SELECT SDO_UTIL.CIRCLE_POLYG...

  • Oracle和SQL学习笔记

    所写博客来自网课视频、本网站或其他网站,只属于资料整理、用于个人学习,如有侵权行为可联系删除。 --创建表空间 c...

  • Oracle SQL 学习笔记31 - Oracle优化

    PL/SQL代码优化 可以从以下几个方面优化PL/SQL 写相似或相同的代码以便于复用 在SQL和PLSQL之间做...

  • Oracle SQL 学习笔记6 - Oracle SQLPLU

    Oracle SQLPLUS 下可以设置编辑模式。 接下来就可以以vi的方式编辑上一次执行过的SQL脚本。 可以将...

  • Oracle SQL 学习笔记25 - 动态SQL

    执行动态SQL语句的两种方法 SQL语句执行阶段 SQL语句的执行主要分为Parse、Bind、Execute和F...

  • Oracle SQL 学习笔记18 - PL/SQL

    PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序...

  • 001--Oracle自带的sql语句

    1、将Oracle的sql语句进行简化 2、在学习Oracle的时候,我们学习了三门语言 SQL:最基本的数据库编...

网友评论

    本文标题:Oracle SQL 学习笔记5 - 集合操作符

    本文链接:https://www.haomeiwen.com/subject/fiqdxhtx.html