1. 集合的概念

    与数学中的全集、交集、补集的概念是一样的

  2. 常用的集合运算符

    集合运算符的作用:把两个查询构造为一个联合查询

    1. 全集:求连个查询的全集

    union all:将两个查询的所有数据全部列出,不进行排序,不去掉重复的部分

    SQL> create table t1 as select * from emp where deptno in (,);
    
    Table created.
    
    SQL> create table t2 as select * from emp where deptno in (,);
    
    Table created.
    SQL> select * from t1; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
    ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
    SMITH CLERK -DEC-
    JONES MANAGER -APR-
    CLARK MANAGER -JUN-
    SCOTT ANALYST -APR-
    KING PRESIDENT -NOV-
    ADAMS CLERK -MAY-
    FORD ANALYST -DEC-
    MILLER CLERK -JAN- rows selected. SQL> select * from t2; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
    ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
    SMITH CLERK -DEC-
    ALLEN SALESMAN -FEB-
    WARD SALESMAN -FEB-
    JONES MANAGER -APR-
    MARTIN SALESMAN -SEP-
    BLAKE MANAGER -MAY-
    SCOTT ANALYST -APR-
    TURNER SALESMAN -SEP-
    ADAMS CLERK -MAY-
    JAMES CLERK -DEC-
    FORD ANALYST -DEC- rows selected. SQL> select * from t1
    union all
    select * from t2; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
    ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
    SMITH CLERK -DEC-
    JONES MANAGER -APR-
    CLARK MANAGER -JUN-
    SCOTT ANALYST -APR-
    KING PRESIDENT -NOV-
    ADAMS CLERK -MAY-
    FORD ANALYST -DEC-
    MILLER CLERK -JAN-
    SMITH CLERK -DEC-
    ALLEN SALESMAN -FEB-
    WARD SALESMAN -FEB-
    JONES MANAGER -APR-
    MARTIN SALESMAN -SEP-
    BLAKE MANAGER -MAY-
    SCOTT ANALYST -APR-
    TURNER SALESMAN -SEP-
    ADAMS CLERK -MAY-
    JAMES CLERK -DEC-
    FORD ANALYST -DEC- rows selected.

    union:将两个查询的所有数据进行显示,但是重复的部分只显示一次,而且要按照第一个查询的第一列进行升序排序

    SQL> select * from t1
    union
    select * from t2; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
    ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
    SMITH CLERK -DEC-
    ALLEN SALESMAN -FEB-
    WARD SALESMAN -FEB-
    JONES MANAGER -APR-
    MARTIN SALESMAN -SEP-
    BLAKE MANAGER -MAY-
    CLARK MANAGER -JUN-
    SCOTT ANALYST -APR-
    KING PRESIDENT -NOV-
    TURNER SALESMAN -SEP-
    ADAMS CLERK -MAY-
    JAMES CLERK -DEC-
    FORD ANALYST -DEC-
    MILLER CLERK -JAN- rows selected.

    union all与union的性能哪个更高?

    union all性能更高:因为union all 不进行排序,也不去重

    2. 交集:INTERSECT

    SQL> select * from t1
    intersect
    select * from t2; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
    ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
    SMITH CLERK -DEC-
    JONES MANAGER -APR-
    SCOTT ANALYST -APR-
    ADAMS CLERK -MAY-
    FORD ANALYST -DEC-

    3. 补集:MINUS
    查询select * from e2的补集:

    SQL> select * from t1
    minus
    select * from t2; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
    ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
    CLARK MANAGER -JUN-
    KING PRESIDENT -NOV-
    MILLER CLERK -JAN-
  3. SET运算符规则

    1. 每个查询列表中的表达式的个数和数据类型必须相匹配

    select后面的列的个数必须要一致:

    select empno,ename,deptno,sal from e1
    union all
    select empno,ename,deptno from e2; select empno,ename,deptno,sal from e1
    *
    第 行出现错误:
    ORA-: 查询块具有不正确的结果列数 select empno,ename,deptno,sal from e1
    union all
    select empno,ename,deptno,null from e2 null是可以的
    数据类型必须一致: select empno,ename,deptno,sal from e1
    union all
    select empno,ename,deptno,'abc' from e2 第 行出现错误:
    ORA-: 表达式必须具有与对应表达式相同的数据类型

    2. 可以使用括号来改变执行的顺序

    select * from e1
    intersect
    select * from e2
    union
    select * from e2; ENAME EMPNO SAL DEPTNO
    ------ ----- ----- ------
    ADAMS
    ALLEN
    BLAKE
    FORD
    JAMES
    JONES
    MARTIN
    SCOTT
    SMITH
    TURNER
    WARD 已选择11行。 select * from e1
    intersect
    (select * from e2
    union
    select * from e2); ENAME EMPNO SAL DEPTNO
    ------ ----- ----- ------
    ADAMS
    FORD
    JONES
    SCOTT
    SMITH

    3. ORDER BY 子句的使用:

    除了union all之外,其他的集合运算符都要按照第一个查询的第一列,进行升序

    只可以在语句的最后出现:

    select empno,ename,sal,deptno from e2
    union
    select empno,ename,sal,deptno from e2
    order by ename desc; EMPNO ENAME SAL DEPTNO
    ----- ------ ----- ------
    WARD
    TURNER
    SMITH
    SCOTT
    MARTIN
    JONES
    JAMES
    FORD
    BLAKE
    ALLEN
    ADAMS

    可以使用第一个查询语句的列名、别名、或位置(号)

    select empno,ename name1,sal,deptno from e2
    union
    select empno,ename name2,sal,deptno from e2
    order by name1 desc; EMPNO NAME1 SAL DEPTNO
    ----- ---------- ----- ------
    WARD
    TURNER
    SMITH
    SCOTT
    MARTIN
    JONES
    JAMES
    FORD
    BLAKE
    ALLEN
    ADAMS 已选择11行。 select empno,ename name1,sal,deptno from e2
    union
    select empno,ename name2,sal,deptno from e2
    order by name2 desc; order by name2 desc
    *
    第 行出现错误:
    ORA-: "NAME2": 标识符无效 select empno,ename,sal,deptno from e2
    union
    select empno,to_char(sal) salary, null,deptno from e2
    order by ; EMPNO ENAME SAL DEPTNO
    ----- ------ ----- ------ ADAMS
    ALLEN
    BLAKE
    FORD
    JAMES
    JONES
    MARTIN
    SCOTT
    SMITH
    TURNER
    WARD

    第一个查询语句的列名出现在结果中

    select empno,to_char(sal) salary, null,deptno from e2
    union
    select empno,ename,sal,deptno from e2
    order by
    / EMPNO SALARY NULL DEPTNO
    ----- ---------------------------------------- ---------- ------ ADAMS
    ALLEN
    BLAKE
    FORD
    JAMES
    JONES
    MARTIN
    SCOTT
    SMITH
    TURNER
    WARD

    查询语句的匹配:个数和数据类型的匹配

    select empno,ename,sal,deptno from e1
    union
    select ,to_char(sal),null, from e2; EMPNO ENAME SAL DEPTNO
    ----- ------ ----- ------ SMITH
    JONES
    CLARK
    SCOTT
    KING
    ADAMS
    FORD
    MILLER

集合运算符之全集、交集、补集【weber出品必属精品】的更多相关文章

  1. 全世界最详细的图形化VMware中linux环境下oracle安装(二)【weber出品必属精品】

    <ORACLE 10.2.05版本的升级补丁安装> 首先我们解压 $ unzip p8202632_10205_LINUX.zip 解压后我们会发现多出了个文件夹,他是:Disk1,进入D ...

  2. 全世界最详细的图形化VMware中linux环境下oracle安装(一)【weber出品必属精品】

    安装流程:前期准备工作--->安装ORACLE软件--->安装升级补丁--->安装odbc创建数据库--->安装监听器--->安装EM <前期准备工作> 安装 ...

  3. 控制用户的访问之权限、角色【weber出品必属精品】

    权限的作用 限制用户对数据的访问 权限的分类 1. 系统权限:能够存取数据库的权限 2. 对象权限:操作数据库对象的内容 系统权限  1.1 如何创建用户: SQL> create user t ...

  4. 创建和管理表【weber出品必属精品】

    创建表 必须有 : 1. CREATE TABLE 的权限 SQL> conn /as sysdba 已连接. SQL> create user test default tablespa ...

  5. 使用DML语句【weber出品必属精品】

    DML语句包含以下语法: INSERT:往一个表中增加新行 DELETE:从一个表中删除掉现有的行 UPDATE:更改一个表中现有的行 INSERT语句语法:INSERT INTO TABLE(COL ...

  6. 静默安装ORACLE【weber出品必属精品】

    安装配置系统环境安装linux ,所有服务都不选择,只是选择安装开发工具,不要安装防火墙(当然也可以在后面关闭) 打开终端,执行如下命令,检查安装包,没有的都要安装 make, glibc, liba ...

  7. ORACLE SQL单行函数(三)【weber出品必属精品】

    16.L:代表本地货币符,这个和区域有关.这个时候我们想来显示一下人民币的符号:¥ $ vi .bash_profile ---写入如下内容: export NLS_LANG='SIMPLIFIED ...

  8. 创建存储过程和函数【weber出品必属精品】

    一.什么是存储过程和函数 1. 是被命名的pl/sql块 2. 被称之为pl/sql子程序 3. 与匿名块类似,有块结构: 声明部分是可选的(没有declare关键字) 必须有执行部分 可选的异常处理 ...

  9. 初识数据字典【weber出品必属精品】

    数据字典结构 有两部分组成: 1. 基表:以$结尾的系统表,在创建数据库的时候,oracle自动创建的表 2. 用户可以访问的视图 数据字典的种类 DICTIONARY:简称DICT,所有的数据字典, ...

随机推荐

  1. java优势

    跨平台,只要有JVM(Java虚拟机)的操作系统就可以运行JAVA程序: 安全: 弃用危险的指针: 自动内在管理机制,垃圾回收机制,由垃圾回收器回收,减轻程序负担,也避免了手动回收的危险性: 完全面向 ...

  2. 使用angularjs中ng-repeat的$even与$odd属性时的注意事项

    JavaScript中数组的索引是从0开始的,因此我们再取奇偶的时候需要用!$even和!$odd来将$even和$odd的布尔值反转 下面给出一个实例: 使用$odd和$even来制作一个红蓝相间的 ...

  3. (搬运工)推荐!国外程序员整理的 C++ 资源大全

    标准库 C++标准库,包括了STL容器,算法和函数等. C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分. Standard Tem ...

  4. ZOJ3549 Little Keng(快速幂)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Little Keng Time Limit: 2 Seconds      Me ...

  5. List容器

    List 容器 list是C++标准模版库(STL,Standard Template Library)中的部分内容.实际上,list容器就是一个双向链表,可以高效地进行插入删除元素. 使用list容 ...

  6. Android中实现全屏、无标题栏的两种办法(另附Android系统自带样式的解释)

    在进行UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏.要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置. 1.在xml文件中进行配置 在项目的清单文件AndroidManife ...

  7. android 让图片充满整个屏幕

    方法1: <ImageView android:id="@+id/imageView1" android:layout_width="fill_parent&quo ...

  8. centerOS安装chkrootkit

    Chkrootkit是一个在本地系统检查rootkit痕迹的工具,它是检查系统二进制文件是否被rootkit病毒修改的一个shell脚本. (1)centerOS安装chkrootkit 安装gcc编 ...

  9. [转载]date命令时间转换

    Linux时间戳和标准时间的互转 在LINUX系统中,有许多场合都使用时间戳的方式表示时间,即从1970年1月1日起至当前的天数或秒数.如/etc/shadow里的密码更改日期和失效日期,还有代理服务 ...

  10. 单片微机原理P4:80C51串口与串行总线拓展

    0. 串口通讯 0. 串口通讯的数据传输方式:单工(单向传输数据),半双工(非同时双向传输),全双工(同时,双向传输) 1. 根据通信方式的不同又分为同步通讯和异步通讯. 同步通讯:所有设备都使用同一 ...