--=============================================
-- SQL 基础--> 集合运算(UNION 与UNION ALL)
--=============================================
集合运算操作符可以将两个或多个查询返回的行组合起来,即集合属于纵向连接运算
一、常用的集合运算符
UNION ALL 返回各个查询检索出的所有的行,不过滤掉重复记录
UNION 返回各个查询检索出的过滤掉重复记录的所有行,即并集
INTERSECT 返回两个查询检索出的共有行,即交集
MINUS 返回将第二个查询检索出的行从第一个查询检索出的行中减去之后剩余的行,即差集
二、集合运算的原则
1.所有选择列表的表达式数目必须相同
2.对于结果集中各列,或个别子查询中的任意列的子集必须具有相同的数据类型,或是可以隐式转化为相同的数据类型,否则需显示转换
3.各个查询中对应的结果集列出现的顺序必须相同
4.生成的结果集中的列名来自UNION语句中第一个单独的查询
三、演示各个集合运算符
--为集合运算生成环境,生成有相同结构的emp表,且命名为emp2
SQL> conn scott/tiger;
Connected.
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
14 rows selected.
SQL> create table emp2 tablespace tbs1 as select * from emp where empno in (7369,7654,7839,7876);
Table created.
SQL> insert into emp2 (empno,ename,sal) select 8001,'ROBINSON',3500 from dual;
1 row created.
SQL> insert into emp2 (empno,ename,sal) select 8002,'HENRY',3700 from dual;
1 row created.
SQL> insert into emp2 (empno,ename,sal) select 8004,'JOHNSON',4000 from dual;
1 row created.
SQL> select * from emp2;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7839 KING PRESIDENT 17-NOV-81 5000 10
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
8001 ROBINSON 3500
8002 HENRY 3700
8004 JOHNSON 4000
--1.UNION 过滤了重复记录
SQL> select empno,ename,job,hiredate,sal from emp
2 union
3 select empno,ename,job,hiredate,sal from emp2;
EMPNO ENAME JOB HIREDATE SAL
---------- ---------- --------- --------- ----------
7369 SMITH CLERK 17-DEC-80 800
7499 ALLEN SALESMAN 20-FEB-81 1600
7521 WARD SALESMAN 22-FEB-81 1250
7566 JONES MANAGER 02-APR-81 2975
7654 MARTIN SALESMAN 28-SEP-81 1250
7698 BLAKE MANAGER 01-MAY-81 2850
7782 CLARK MANAGER 09-JUN-81 2450
7788 SCOTT ANALYST 19-APR-87 3000
7839 KING PRESIDENT 17-NOV-81 5000
7844 TURNER SALESMAN 08-SEP-81 1500
7876 ADAMS CLERK 23-MAY-87 1100
EMPNO ENAME JOB HIREDATE SAL
---------- ---------- --------- --------- ----------
7900 JAMES CLERK 03-DEC-81 950
7902 FORD ANALYST 03-DEC-81 3000
7934 MILLER CLERK 23-JAN-82 1300
8001 ROBINSON 3500
8002 HENRY 3700
8004 JOHNSON 4000
17 rows selected.
--2.UNION ALL 并集,不去重复记录
SQL> select empno,ename,job,hiredate,sal from emp
2 union all
3 select empno,ename,job,hiredate,sal from emp2;
EMPNO ENAME JOB HIREDATE SAL
---------- ---------- --------- --------- ----------
7369 SMITH CLERK 17-DEC-80 800
7499 ALLEN SALESMAN 20-FEB-81 1600
7521 WARD SALESMAN 22-FEB-81 1250
7566 JONES MANAGER 02-APR-81 2975
7654 MARTIN SALESMAN 28-SEP-81 1250
7698 BLAKE MANAGER 01-MAY-81 2850
7782 CLARK MANAGER 09-JUN-81 2450
7788 SCOTT ANALYST 19-APR-87 3000
7839 KING PRESIDENT 17-NOV-81 5000
7844 TURNER SALESMAN 08-SEP-81 1500
7876 ADAMS CLERK 23-MAY-87 1100
EMPNO ENAME JOB HIREDATE SAL
---------- ---------- --------- --------- ----------
7900 JAMES CLERK 03-DEC-81 950
7902 FORD ANALYST 03-DEC-81 3000
7934 MILLER CLERK 23-JAN-82 1300
7369 SMITH CLERK 17-DEC-80 800
7654 MARTIN SALESMAN 28-SEP-81 1250
7839 KING PRESIDENT 17-NOV-81 5000
7876 ADAMS CLERK 23-MAY-87 1100
8001 ROBINSON 3500
8002 HENRY 3700
8004 JOHNSON 4000
21 rows selected.
--3.INTERSECT 交集,返回两个结果集中共有了部分
SQL> select empno,ename,job,hiredate,sal from emp
2 intersect
3 select empno,ename,job,hiredate,sal from emp2;
EMPNO ENAME JOB HIREDATE SAL
---------- ---------- --------- --------- ----------
7369 SMITH CLERK 17-DEC-80 800
7654 MARTIN SALESMAN 28-SEP-81 1250
7839 KING PRESIDENT 17-NOV-81 5000
7876 ADAMS CLERK 23-MAY-87 1100
--4.MINUS 补集,前一个结果集减后一个结果集后的结果
SQL> select empno as "EmployeeNo" ,ename "EmployeeName",job "Job" ,hiredate as "HireDate",sal "Sal" from emp
2 minus
3 select empno,ename,job,hiredate,sal from emp2
4 order by "Sal";
EmployeeNo EmployeeNa Job HireDate Sal
---------- ---------- --------- --------- ----------
7900 JAMES CLERK 03-DEC-81 950
7521 WARD SALESMAN 22-FEB-81 1250
7934 MILLER CLERK 23-JAN-82 1300
7844 TURNER SALESMAN 08-SEP-81 1500
7499 ALLEN SALESMAN 20-FEB-81 1600
7782 CLARK MANAGER 09-JUN-81 2450
7698 BLAKE MANAGER 01-MAY-81 2850
7566 JONES MANAGER 02-APR-81 2975
7788 SCOTT ANALYST 19-APR-87 3000
7902 FORD ANALYST 03-DEC-81 3000
10 rows selected.
四、更多
Oracle 数据库实例启动关闭过程
Oracle 10g SGA 的自动化管理
使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例
Oracle实例和Oracle数据库(Oracle体系结构)
SQL 基础-->常用函数
SQL基础-->过滤和排序
分享到:
相关推荐
集合运算包括联合(UNION)、完全联合(UNION ALL)、相交(INTERSECT)和相减(MINUS)四种基本操作。 1. **联合(UNION)**: 联合操作用于合并两个或更多查询的结果,去除重复行,并按第一列默认升序排序。联合...
Oracle 集合操作是指在数据库中对数据进行集合运算的操作,包括 union、union all、intersect 和 minus 等操作。这些操作可以对数据进行合并、交叉、差异等处理,提高数据处理效率。 union 操作 Union 操作是将两...
在SQL语言中,最基本的集合运算符包括UNION、UNION ALL、INTERSECT和MINUS。每个运算符都有其特定的用途和规则: 1. UNION运算符:此运算符用于合并两个或多个SELECT语句的结果集,并且会自动去除重复的行,只保留...
SQL Union 并集运算是一种集合操作,用于将两个或多个 SELECT 语句的结果结合在一起,生成一个新的结果集。Union 并集运算的结果是一个无重复的记录集,具有唯一的记录。 二、SQL Union 并集运算语法 SQL Union ...
第1章 数据库与sql基础 1 1.1 数据库的基本概念 1 1.1.1 数据库的由来 1 1.1.2 数据库系统的概念 3 1.2 数据库系统的结构、组成及工作流程 3 1.2.1 数据库的体系结构 3 1.2.2 数据库系统的组成 4 1.2.3 ...
SQL集合运算 - 表的加减法和 Join 等 SQL 集合运算是指对数据库中的数据进行操作,以获得所需的结果。这种操作可以分为两大类:集合运算和 Join 运算。 集合运算是指对数据库中的表进行加减法操作,以获得所需的...
6.1 UNION(并集)集合运算 6.2 INTERSECT(交集)集合运算 6.3 EXCEPT(差集)集合运算 6.4 集合运算的优先级 6.5 避开不支持的逻辑查询处理 6.6 总结 6.7 练习 6.8 解决方案 第7章 透视、逆透视...
SQL循序渐进(2)-------表的基础知识 SQL循序渐进(3)-------数据检索 SQL循序渐进(4)-------创建表 SQL循序渐进(5)-------插入数据到表 SQL循序渐进(6)-------删除表 SQL循序渐进(7)-------更新记录 SQL...
SQL循序渐进(2)-------表的基础知识 SQL循序渐进(3)-------数据检索 SQL循序渐进(4)-------创建表 SQL循序渐进(5)-------插入数据到表 SQL循序渐进(6)-------删除表 SQL循序渐进(7)-------更新记录 SQL...
SQL Server中的集合运算包括UNION(合并),EXCEPT(差集)和INTERSECT(相交)三种。 集合运算的基本使用 1.UNION(合并两个查询结果集,隐式DINSTINCT,删除重复行) --合并两个提取表/派生表(derived table), 返回结果为:...
6.1 UNION(并集)集合运算 6.2 INTERSECT(交集)集合运算 6.3 EXCEPT(差集)集合运算 6.4 集合运算的优先级 6.5 避开不支持的逻辑查询处理 6.6 总结 6.7 练习 6.8 解决方案 第7章 透视、逆透视及分组集 ...
6. **OR与UNION ALL** - **OR替代**:在索引列上用UNION ALL替换OR,避免全表扫描。 - **去重处理**:UNION ALL不去除重复,UNION会,若需去重,可在外围使用DISTINCT。 7. **其他优化点** - **索引选择**:创建...
内容包括但不限于:数据库系统、SQL语言的结构、表的操作、查询基础、数据更新、函数和谓词、复杂查询、集合运算、SQL高级处理等知识点。接下来将详细说明这些知识点。 ### 数据库和SQL - **DBMS(数据库管理系统)...
如果希望保留所有数据,可以使用`UNION ALL`。 **23. EXCEPT 运算符** ```sql SELECT * FROM table1 EXCEPT SELECT * FROM table2; ``` 此命令用于找出`table1`中有但在`table2`中没有的行。如果希望保留所有数据,...
《Pro Oracle SQL》是Oracle数据库查询的一本权威指南,Chapter 5主要探讨了与数据相关的问题,特别是关于NULL值的处理。在Oracle SQL中,NULL是一个特殊的值,表示未知或缺失的信息,它与任何其他值都不相等,包括...
首先,SQL Server环境下交与差运算的设计与实现主要探讨的是在关系数据库管理系统SQL Server中,如何设计SQL查询语句来实现关系代数中集合运算的交和差。 关系代数是关系数据库标准语言SQL的理论基础。关系代数中...
【SQL语句】是数据库开发中的基础语言,用于与数据库进行交互,包括创建、修改、查询和管理数据。以下是对标题和描述中涉及的SQL语句的详细解释: 1. **创建数据库**: - `CREATE DATABASE database-name` 用于...
SQL提供了三种主要的集合运算符:UNION、INTERSECT和EXCEPT,它们分别用于合并、找到共同元素和排除特定元素。 UNION操作符用于合并两个或多个查询的结果,去除重复的行。例如,如果有一个产品表`product`和一个...