[sql] JOIN vs UNION
![[sql] JOIN vs UNION](https://cdn.hashnode.com/res/hashnode/image/upload/v1739711017564/5d33d16d-e6d4-485b-a748-32d5a824242e.png)
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;
➡ Customers와 Employees 테이블에서 같은 컬럼을 가져와 합침
➡ 두 테이블에서 공통된 name, email을 위아래로 합친 결과를 반환
➡ 중복 값은 제거됨 (UNION ALL을 사용하면 중복 포함)
🔥 핵심 차이
| JOIN | UNION | |
| 🔹 데이터 결합 방식 | 행(Row)들을 연결하여 확장 (가로 확장) | 결과 집합을 위아래로 추가 (세로 확장) |
| 🔹 테이블 수 | 최소 2개 이상의 테이블 필요 | 같은 컬럼 구조를 가진 여러 개의 SELECT 결과 |
| 🔹 중복 데이터 | 관계된 데이터만 결합 | UNION은 중복 제거, UNION ALL은 중복 포함 |
| 🔹 컬럼 개수 조건 | 각 테이블의 컬럼 개수 달라도 됨 | SELECT 절의 컬럼 개수와 데이터 타입이 같아야 함 |
🚀 비유로 이해하기
JOIN: 두 개의 테이블을 가로로 합쳐서 새로운 테이블을 만든다.
→ 🏠Customers(고객 정보) + 📦Orders(주문 정보) → 고객이 주문한 내역을 연결UNION: 같은 구조의 데이터를 위아래로 합친다.
→ 🏢서울 지점 직원 명단+ 🏢부산 지점 직원 명단→ 전체 직원 명단
✅ 정리
JOIN은 여러 테이블에서 관계를 맺고 데이터를 조합하는 데 사용
UNION은 같은 형식의 데이터를 한 줄씩 추가하여 합치는 데 사용