Oracle集合操作大致分爲三種 : 並集–交集–差集
數據庫測試數據:
create table employees
(
employee_id number(8) not null, --員工id
manager_id number(6), --經理id
salary number(8,2), --工資
employees_name varchar2(25) not null, --員工名字
entry_date date not null --入職時間
);
insert into employees values (1000,100,10000,'jack1',sysdate -365);
insert into employees values (1001,101,10000,'jack2',sysdate -200);
insert into employees values (1002,101,8000,'jack3',sysdate -100);
insert into employees values (1003,102,8500,'jack4',sysdate -150);
insert into employees values (1004,102,8000,'jack5',sysdate -100);
insert into employees values (1005,102,8000,'jack6',sysdate -100);
insert into employees values (1006,100,8000,'jack7',sysdate -100);
insert into employees values (100,null,20000,'jack8',sysdate -800);
--查詢所有
select * from employees;
數據內容:
1.查詢數據,經理是編號爲100的:
select employees_name, manager_id, entry_date, salary from employees where manager_id = 100
1.查詢數據,兩百天前入職的:
select employees_name, manager_id, entry_date, salary from employees where entry_date > sysdate - 200
1.查詢數據,工資大於等於8000的:
select employees_name, manager_id, entry_date, salary from employees where salary >= 8000
注意事項:
1.集合操作的的對象,類型、列數必須匹配,不然會報錯,因爲數據範圍不一樣.
2.order by 只能放在最後,可以按第一個語名的列名、別名、列號進行排序.
(沒有優先級,執行順序就是查詢順序)
1.並集:以屬於A或者屬於B的數據合稱爲A與B的並集.
代碼:
select employees_name, manager_id, entry_date, salary from employees where manager_id = 100
union
select employees_name, manager_id, entry_date, salary from employees where entry_date > sysdate - 200
2.交集:以屬於A並且屬於B的數據合稱爲A與B的並集.
代碼:
select employees_name, manager_id, entry_date, salary from employees where entry_date > sysdate - 200
intersect
select employees_name, manager_id, entry_date, salary from employees where salary > 8000
3.差集,這個就比較噁心了看效果.
代碼:
select employees_name, manager_id, entry_date, salary from employees where entry_date > sysdate - 200
minus
select employees_name, manager_id, entry_date, salary from employees where salary > 8000