[sql] JOIN vs UNION

[sql] JOIN vs UNION

·

2 min read

1️⃣ JOIN (조인)

  • 두 테이블의 행(Row)들을 연결하여 하나의 결과 집합을 만듦

  • 두 테이블 간의 공통된 키(Foreign Key 또는 Primary Key)를 기반으로 데이터를 결합

  • 결과는 여러 개의 컬럼(Column)으로 확장됨

예제

SELECT A.id, A.name, B.order_date
FROM Customers A
JOIN Orders B ON A.id = B.customer_id;

Customers 테이블과 Orders 테이블을 customer_id를 기준으로 조인
➡ 하나의 행(row)에서 두 테이블의 데이터를 합친 결과를 반환


2️⃣ UNION (유니온)

  • 두 개 이상의 결과 집합을 위아래로 합침

  • 각 SELECT의 컬럼 개수와 데이터 타입이 동일해야 함

  • 기본적으로 중복된 데이터를 제거 (UNION ALL을 사용하면 중복 허용)

예제

SELECT name, email FROM Customers
UNION
SELECT name, email FROM Employees;

CustomersEmployees 테이블에서 같은 컬럼을 가져와 합침
➡ 두 테이블에서 공통된 name, email을 위아래로 합친 결과를 반환
➡ 중복 값은 제거됨 (UNION ALL을 사용하면 중복 포함)


🔥 핵심 차이

JOINUNION
🔹 데이터 결합 방식행(Row)들을 연결하여 확장 (가로 확장)결과 집합을 위아래로 추가 (세로 확장)
🔹 테이블 수최소 2개 이상의 테이블 필요같은 컬럼 구조를 가진 여러 개의 SELECT 결과
🔹 중복 데이터관계된 데이터만 결합UNION은 중복 제거, UNION ALL은 중복 포함
🔹 컬럼 개수 조건각 테이블의 컬럼 개수 달라도 됨SELECT 절의 컬럼 개수와 데이터 타입이 같아야 함

🚀 비유로 이해하기

  • JOIN: 두 개의 테이블을 가로로 합쳐서 새로운 테이블을 만든다.
    → 🏠 Customers(고객 정보) + 📦 Orders(주문 정보) → 고객이 주문한 내역을 연결

  • UNION: 같은 구조의 데이터를 위아래로 합친다.
    → 🏢 서울 지점 직원 명단 + 🏢 부산 지점 직원 명단 → 전체 직원 명단


정리

  • JOIN은 여러 테이블에서 관계를 맺고 데이터를 조합하는 데 사용

  • UNION은 같은 형식의 데이터를 한 줄씩 추가하여 합치는 데 사용