본문 바로가기

Database

9. 집합연산자

집합연산자

두 개 이상의 쿼리 결과를 하나로 결합시키는 연산자

 

1. UNION

여러개의 SQL문의 결과(중복 제거)에 대한 합집합

예제: salesman과 mamger의 결과 결합

SELECT ename, job FROM emp_table WHERE job = 'SALESMAN'
UNION
SELECT ename, job FROM emp_table WHERE job = 'MANAGER';

예제 결과

 

2. UNION ALL

여러개의 SQL문의 결과(중복 포함)에 대한 합집합

예제: 급여가 1000 미만인 직원, 2000 미만인 직원을 조회하여 결합

SELECT ename, sal FROM emp_table WHERE sal < 1000
UNION ALL
SELECT ename, sal FROM emp_table WHERE sal < 2000
ORDER BY sal;

예제 결과

 

* UNION과 UNION ALL의 차이

- UNION은 쿼리의 결과를 합치며 중복된 row의 값은 제거하는 것에 반하여

  UNION ALL은 쿼리의 결과를 합치며 중복된 결과도 모두 보여준다. 즉 단순 합치는 것으로 속도가 더 빠르다.

3. INTERSECT

여러개의 SQL문의 결과에 대한 교집합(중복은 하나의 결과로 출력)

→ EXISTS, IN 서브쿼리를 이용하여서도 가능하다.

예제: 급여가 1000 초과 2000미만인 직원을 조회

SELECT ename, sal FROM emp_table WHERE sal > 1000
INTERSECT
SELECT ename, sal FROM emp_table WHERE sal < 2000
ORDER BY sal;

예제 결과

 

4. MINUS

여러개의 SQL문의 결과에 대한 차집합 (합집합 부분을 뺀 나머지 한쪽)

예제: 급여가 2000 초과인 사원을 제외하여 조회

SELECT ename, sal FROM emp_table 
MINUS 
SELECT ename, sal FROM emp_table WHERE sal > 2000;

예제 결과

'Database' 카테고리의 다른 글

11. 그룹함수: ROLLUP/CUBE/GROUPING SET  (0) 2023.05.04
10. 시퀀스/뷰  (0) 2023.05.04
8. 서브쿼리  (0) 2023.05.04
7. JOIN  (0) 2023.05.04
6. DML/TRANSACTION  (0) 2023.05.04