DATABASE(oracleDB 11g)/SQL

[SQL]집합연산자의 기초

SEUNGSAMI 2019. 1. 30. 14:08

집합연산자의 기초


집합연산자는

UNION : 합집합

UNION ALL : 합집합+겹치는 것까지 중복표현

INTERSECT : 교집합

MINUS : 차집합

로 나뉜다.


- 실행 순서를 변경할 때 괄호를 사용한다.

- ORDER BY절은 명령문의 맨 끝에만 한번 올 수 있다.

- SELECT 의 리스트 표현식은 개수가 같아야한다.

* 개수가 안맞을 경우 NULL을 사용할 수도 있다.

다음의 예시를 참고하자.

1
2
3
4
5
6
7
SELECT DEPTNO, NULL, SUM(SAL)
FROM EMP 
GROUP BY DEPTNO  
UNION ALL 
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP 
GROUP BY DEPTNO, JOB; 
cs


주의할 점으로는 두 개이상의 쿼리문을 사용해야 하면, 각 쿼리문의 데이터 타입을 일치 시켜야한다.


다음의 예시를 보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
select last_name, salary, department_id from employees where salary >= 10000
union
select last_name, salary, department_id from employees where department_id = 80 order by last_name;
 
select last_name, salary, department_id from employees where salary >= 10000
intersect
select last_name, salary, department_id from employees where department_id = 80;
 
select last_name, salary, department_id from employees where salary >= 10000
union all
select last_name, salary, department_id from employees where department_id = 80 order by last_name;
 
select last_name, salary, department_id from employees where salary >= 10000
minus
select last_name, salary, department_id from employees where department_id = 80;
cs




SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.