"UNION"은 여러 개의 결과 집합을 아래로(수직으로) 이어 붙여서 더 많은 행을 가진 하나의 집합으로 만드는 기술이다.
"우리 쇼핑몰은 현재 활동 중인 고객을 "users" 테이블에, 과거에 탈퇴한 고객을"retired_users"라는 별도의 테이블에 보관하고 있다. 연말을 맞아 모든 고객(활동+탈퇴)에게 감사 이메일을 보내기 위해, 두 테이블에 흩어져 있는 이름과 이메일을 합쳐서 하나의 전체 목록을 만들어야 한다."
retired_users 생성
-- 본 실습을 위한 탈퇴 고객 테이블 생성
DROP TABLE IF EXISTS retired_users;
CREATE TABLE retired_users (
id BIGINT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
retired_date DATE NOT NULL
);
-- 탈퇴 고객 데이터 입력
INSERT INTO retired_users (id, name, email, retired_date) VALUES
(1,'션', 'sean@example.com', '2024-12-31'),
(7,'아이작 뉴턴', 'newton@example.com', '2025-01-10');
UNION의 개념과 사용법
select name, email from users
union
select name, email from retired_users
;

- "UNION" 연산자는 이 두 개의 "SELECT" 문의 결과를 하나로 합쳐준다. 두 "SELECT" 문 사이에 "UNION" 키워드를 넣어주기만 하면 된다.
- 결과를 자세히 살펴보자. "션"은 "users" 테이블에도 있고 "retired_users" 테이블에도 있었다. 하지만 최종 결과 목록에는 단 한 번만 나타난다.
- "UNION"은 기본적으로 두 결과 집합을 합친 뒤, 완전히 중복되는 행은 자동으로 제거하여 고유한 값만 남긴다.
UNION 사용의 핵심 규칙
"UNION"을 사용할 때는 반드시 지켜야 할 중요한 규칙이 있다.
- "UNION"으로 연결되는 모든 "SELECT"문은 컬럼의 개수가 동일해야 한다.
- 각 "SELECT"문의 같은 위치에 있는 컬럼들은 서로 호환 가능한 데이터 타입이어야 한다.
- 예: 숫자 타입은 숫자 타입끼리, 문자 타입은 문자 타입끼리
- 최종 결과의 컬럼 이름은 첫 번째 "SELECT" 문의 컬럼 이름을 따른다.
'데이터 베이스 > 데이터베이스 기본' 카테고리의 다른 글
| Ch05. CASE문 - 그룹핑 (0) | 2026.06.02 |
|---|---|
| Ch05. CASE문 - CASE문 기본 (0) | 2026.06.02 |
| Ch04. UNION - UNION 정렬 (0) | 2026.05.31 |
| Ch04. UNION - UNION ALL (0) | 2026.05.31 |
| Ch03. 서브쿼리 - 서브쿼리 VS Join (0) | 2026.05.30 |