Home SQL의 집합 연산자
Post
Cancel

SQL의 집합 연산자

SQL에서 집합 연산자는 두 개 이상의 쿼리 결과를 하나로 합치거나 공통된 부분을 찾거나 차집합을 구하는데 사용되는 것으로 이번 글에서는 UNION, UNION ALL, MINUS, INTERSECT의 개념과 예제에 대해 설명하겠다

1. UNION

UNION 연산자는 두 개의 쿼리 결과를 합친 후 중복된 행을 제거하는 집합 연산자로 각 쿼리는 동일한 수의 열을 가져야 하고 각 열의 데이터 타입이 호환되어야 한다 즉 합집합을 의미한다

1
2
3
SELECT first_name, last_name FROM employees
UNION
SELECT first_name, last_name FROM customers;

위의 쿼리 코드는 employees 테이블과 customers 테이블에서 first_name과 last_name을 가져와 중복을 제거한 후 하나의 결과 집합으로 만든다

2. UNION ALL

UNION ALL 연산자는 두 개의 쿼리 결과를 합친 후 중복된 행을 포함하는 코드로 UNION과 비슷한 역할을 하지만 중복된 행을 제거하지 않기 때문에 UNION보다 더 빠르다 즉 합집합을 의미한다

1
2
3
SELECT first_name, last_name FROM employees
UNION ALL
SELECT first_name, last_name FROM customers;

위의 쿼리는 employees 테이블과 customers 테이블에서 first_name과 last_name을 가져와 중복을 제거하지 않고 하나의 결과 집합으로 만든다

3. MINUS (EXCEPT)

MINUS 연산자는 첫 번째 쿼리 결과에서 두 번째 쿼리 결과를 뺀 나머지 행을 반환하는 집합 연산자로 일부 데이터베이스 시스템에서는 MINUS 대신 EXCEPT라는 키워드를 사용한다 즉 차집합을 의미한다

1
2
3
SELECT first_name, last_name FROM employees
MINUS
SELECT first_name, last_name FROM customers;

위의 쿼리는 employees 테이블에서 customers 테이블에 존재하지 않는 first_name과 last_name을 가져온다

4. INTERSECT

INTERSECT 연산자는 두 개의 쿼리 결과에서 공통된 행만 반환한다 즉 교집합을 의미한다

1
2
3
SELECT first_name, last_name FROM employees
INTERSECT
SELECT first_name, last_name FROM customers;

위의 쿼리는 employees 테이블과 customers 테이블에서 공통된 first_name과 last_name을 가져온다

This post is licensed under CC BY 4.0 by the author.