oracle集合操作

时间:2019-03-25
本文章向大家介绍oracle集合操作,主要包括oracle集合操作使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

概述

union , intersect , minus

示意图

  • union 会排序(第一列的结果进行升序排序,下同)、去重
  • union all 不排序、不去重
  • intersect 排序、去重
  • minus 排序、去重

说明

  1. 集合操作的的对象,类型、列数必须匹配;
  2. order by 只能放在最后,可以按第一个语名的列名、别名、列号进行排序;
  3. 无优先级之分,从上到下执行;

例子


create table employees
(
  employee_id number(8) not null,
  first_name varchar2(20) ,
  last_name varchar2(25) not null,
  email varchar2(25) ,
  phone_number varchar2(20),
  hire_date date not null,
  job_id varchar2(10),
  salary number(8,2),
  commission_pct number(2,2),
  manager_id number(6),
  department_id number(4)
);


insert into employees(employee_id,manager_id,salary,last_name,hire_date) values (1000,100,20000,'Stone',sysdate -200);
insert into employees(employee_id,manager_id,salary,last_name,hire_date) values (1001,101,20000,'Strange',sysdate -100);
insert into employees(employee_id,manager_id,salary,last_name,hire_date) values (1002,101,9000,'Atlas',sysdate -100);
insert into employees(employee_id,manager_id,salary,last_name,hire_date) values (1003,102,9000,'Farley',sysdate -200);
insert into employees(employee_id,manager_id,salary,last_name,hire_date) values (1004,102,9000,'Lake',sysdate -200);
insert into employees(employee_id,manager_id,salary,last_name,hire_date) values (1005,102,9000,'Lance',sysdate -200);
insert into employees(employee_id,manager_id,salary,last_name,hire_date) values (1006,100,9000,'Zoo',sysdate -200);
insert into employees(employee_id,manager_id,salary,last_name,hire_date) values (100,null,80000,'Val',sysdate -100);

select t.* from employees t;

select last_name, manager_id, hire_date, salary from employees
    where manager_id = 100
union
select last_name, manager_id, hire_date, salary from employees
    where hire_date > sysdate - 180
intersect
select last_name, manager_id, hire_date, salary from employees
where salary > 10000

rollback;
;