집합 연산자 개념? SQL의 4가지 집합 연산자 종류

집합 연산자 개념에 대한 설명
집합 연산자 개념에 대한 설명

집합 연산자 개념에 대해서 이야기해봅시다.




집합 연산자 개념에 대해 알기

집합 연산자(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