Union
Union은 2개 이상의 쿼리 결과 값을 한 번에 조회하기 위해 사용한다.
이때, 중복된 결과는 한 번만 나온다.
(※ Union Distinct은 Union과 동일하다.)
사용 방법은 간단하다.
쿼리 사이를 Union을 써서 연결해주기만 하면된다. (SQL은 대소문자 구분X)
select dept_id from employees
union
select dept_id from departments;
Union을 쓸 때는 다음 규칙을 따라야 한다.
→ 쿼리의 컬럼 개수가 같아야 한다!
그 외의 권장 사항 및 규칙은 다음과 같다.
- 컬럼의 각 순서마다 데이터 타입이 동일하도록 하는 것이 좋다.
⇒ 타입이 달라도 결과는 함께 나오지만, 의도한 결과를 명확히 나타내기 위해서는 일치시키는 것이 좋다. - 쿼리에서 동일한 순서의 컬럼명이 다르다면, 가장 첫 쿼리의 컬럼명을 사용한다.


Union All
Union All 역시 2개 이상의 쿼리 결과 값을 한 번에 조회하기 위해 사용한다.
하지만 중복된 결과를 제거하지 않고, 모두 그대로 보여준다.
사용 방법은 쿼리 사이마다 Union All을 써주면 된다.
select dept_id from employees
union all
select dept_id from departments;
Union All 결과는 다음과 같다. 중복된 결과가 그대로 결과에 반영된다.

Union과 Union All은 왜 사용할까?
지금까지 Union과 Union All에 대해서 각각 살펴보았다.
그렇다면 이러한 기능은 왜 사용할까?
Join은 책임 분리가 명확한 두 개 이상의 테이블을 하나로 결합하여, 서로 연관된 데이터를 함께 조회할 수 있도록 해준다.
반면 Union과 Union All은 구조가 동일한 데이터를 모아, 분리되어 있는 여러 데이터 집합을 한꺼번에 조회할 수 있게 해준다.
예를 들어, 국내 상품 테이블과 해외 상품 테이블이 있다고 하자.
국적 컬럼을 추가하여 한 테이블로 합칠 수도 있지만, 비즈니스 로직상 국내/해외 상품을 분리하여 관리해야 하는 경우도 있다.
이때, Union을 사용하면 두 테이블을 유지하면서도 전체 상품을 한 번에 조회할 수 있다.
👏
'Computer Science > 데이터베이스' 카테고리의 다른 글
| [DB] 트랜잭션 고립 수준(Transaction Isolation Level) (0) | 2025.09.19 |
|---|---|
| [DB] 공통 테이블 식(CTE) (0) | 2025.09.19 |
| [DB] 트랜잭션(Transaction) (2) | 2025.08.22 |
| [MySQL] JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN (4) | 2025.08.07 |
| [DB] RDBMS vs NoSQL (0) | 2025.06.10 |