集合操作符:
--union、union all、intersect、minus
--集合操作符的作用是把两个或者多个查询的结果集合并成一个。
--对于所有的集合操作,必须满足:
--两个查询的select列表在数量上以及对应列的数据类型上相匹配。
1、union
--直接合并两个查询的结果集。
--特点:
--1)会去掉重复的行
--2)默认结果集以第一个查询的第一个列做升序排序
--查询所有雇员现在的以及曾经干过的工作
select employee_id,job_id
from employees
union
select employee_id,job_id
from job_history;
2、union all
--直接合并两个查询的结果集。
--特点:
--1)不会去掉重复的行
--2)默认结果集不排序
--查询所有雇员现在的以及曾经工作过的部门
select employee_id,job_id,department_id
from employees
union all
select employee_id,job_id,department_id
from job_history
order by employee_id;
3、intersect:交集
--返回两个查询结果集中的共有的行。
--特点:
--1)默认结果集以第一个查询的第一个列做升序排序
--查询所有雇员:他现在干的工作和曾经换过的某个工作相同
from employees
intersect
select employee_id,job_id
from job_history
;
4.minus减法
--返回第一个查询的结果集减去第二个查询的结果集中共有的行之后
--所剩下的行
--特点:
--1)默认结果集以第一个查询的第一个列做升序排序
--查询从未换过工作的雇员的编号
select employee_id
from employees
minus
select employee_id
from job_history
;
--匹配select列表
--假设想把以下两个查询的结果集进行合并,应该怎么做?
select location_id,department_name
from departments;
select location_id,state_province
from locations;
--解决办法:
selectlocation_id,department_name,to_char(null) "Warehouse Location"
from departments
union all
select location_id,to_char(null),state_province
from locations;
--注意:
--合并后的结果集的列标题是由第一个查询的select列表来决定,
--和第二个查询的列名没有任何关系