집합 연산자 개념에 대해서 이야기해봅시다.
집합 연산자 개념에 대해 알기
집합 연산자(Set Operator)는 SQL(Structured Query Language)에서 각 쿼리의 결과 집합을 가지고 연산을 하는 명령어를 의미합니다.
집합 연산자(Set Operator)는 4가지 종류가 있습니다. 집합 연산자의 4가지 종류는 UNION ALL, UNION, INTERSECT, MINUS/EXCEPT입니다.
[집합 연산자의 4가지 종류]
구분 | 내용 |
UNION ALL | 각 쿼리 결과 집합의 합집합, 중복된 행도 그대로 출력 |
UNION | 각 쿼리 결과 집합의 합집합, 중복된 행은 한 줄로 출력 |
INTERSECT | 각 쿼리 결과 집합의 교집합, 중복된 행은 한 줄로 출력 |
MINUS/EXCEPT | 앞 쿼리의 결과 집합에서 뒤 쿼리 결과 집합을 뺀 차집합, 중복된 행은 한 줄로 출력 |
집합 연산자 개념에 대한 설명
집합 연산자(Set Operator)는 SQL(Structured Query Language)의 조회 쿼리의 결과 집합을 대상으로 연산을 수행하는 연산자입니다. 집합 연산자에는 UNION ALL, UNION, INTERSECT, MINUS/EXCEPT 의 연산자가 있습니다.
UNION ALL은 쿼리1의 결과(집합A)와 쿼리2의 결과(집합B)를 그대로 합하는 연산자이며 중복된 행도 그대로 출력 되는 형태입니다.
[UNION ALL 사용 예시]
SELECT * FROM 테이블 A
UNION ALL
SELECT * FROM 테이블 B
UNION은 쿼리1의 결과(집합 A)와 쿼리2의 결과(집합 B)를 합한 다음 중복된 데이터는 없애고 출력하는 연산자입니다. UNION은 합집합의 개념입니다.
[UNION 사용 예시]
SELECT * FROM 테이블 A
UNION
SELECT * FROM 테이블 B
UNION ALL과 UNION은 각 쿼리의 결과 집합의 합집합에서 중복된 데이터 행이 없을 경우 모두 같은 결과로 출력 되지만 UNION을 사용하게 되면 데이터베이스(DataBase) 안에서 중복된 행을 없애는 과정을 한번 더 거쳐야 하기 때문에 성능적인 관점에서는 불리할 수 있습니다.
INTERSECT는 쿼리1의 결과(집합 A)와 쿼리2의 결과(집합 B)에서 공통된 부분만 중복 데이터를 없애고 출력하는 연산자입니다. INTERSECT 연산자는 2개의 집합에서 교집합을 출력하는 개념입니다.
[INTERSECT 사용 예시]
SELECT * FROM 테이블 A
INTERSECT
SELECT * FROM 테이블 B
MINUS/EXCEPT는 쿼리1의 결과(집합 A)에서 쿼리2의 결과(집합 B)를 빼고 출력하는 연산자입니다. MINUS는 차집합의 개념입니다.
[MINUS/EXCEPT 사용 예시]
SELECT * FROM 테이블 A
MINUS
SELECT * FROM 테이블 B
SELECT * FROM 테이블 A
EXCEPT
SELECT * FROM 테이블 B