[DB] 07. JOIN의 종류와 동작 원리
1. JOIN이 필요한 이유
관계형 데이터베이스에서는 데이터를 여러 테이블로 나눠 저장한다. 그래서 원하는 정보를 얻으려면, 여러 테이블의 데이터를 함께 조회해야 하는 경우가 많다.
이때 사용하는 문법이 JOIN이다. JOIN은 테이블을 물리적으로 합치는 것이 아니라, 조회 시점에 논리적으로 연결하는 방식이다.
2. JOIN의 기본 개념
JOIN은 공통된 기준 컬럼을 통해 두 개 이상의 테이블을 연결해 조회한다.
보통 기본 키(PK)와 외래 키(FK) 관계를 기준으로 JOIN을 수행한다.
3. INNER JOIN
INNER JOIN은 두 테이블 모두에 존재하는 데이터만 조회한다. 가장 기본적인 JOIN 방식이다.
SELECT u.id, u.name, o.id AS order_id FROM users u INNER JOIN orders o ON u.id = o.user_id;
위 쿼리는 주문을 한 회원만 조회한다. 주문이 없는 회원은 결과에서 제외된다.
4. LEFT JOIN
LEFT JOIN은 왼쪽 테이블의 모든 데이터를 기준으로 조회한다. 오른쪽 테이블에 매칭되는 데이터가 없어도 결과에 포함된다.
SELECT u.id, u.name, o.id AS order_id FROM users u LEFT JOIN orders o ON u.id = o.user_id;
이 쿼리는 주문이 없는 회원도 함께 조회한다. 주문이 없는 경우, 주문 관련 컬럼은 NULL로 표시된다.
5. RIGHT JOIN
RIGHT JOIN은 RIGHT 테이블을 기준으로 조회한다. LEFT JOIN과 동작은 동일하지만 기준 테이블이 반대다.
실무에서는 LEFT JOIN을 주로 사용하고, RIGHT JOIN은 거의 사용하지 않는다.
6. FULL OUTER JOIN
FULL OUTER JOIN은 양쪽 테이블의 데이터를 모두 조회한다. 매칭되지 않는 데이터도 결과에 포함된다.
일부 DBMS(MySQL 등)에서는 FULL OUTER JOIN을 직접 지원하지 않는다. 이 경우 LEFT JOIN과 RIGHT JOIN을 조합해 사용한다.
7. JOIN 조건이 중요한 이유
JOIN 조건이 잘못되면, 데이터 개수가 예상보다 크게 늘어나는 경우가 있다.
이를 카테시안 곱(Cartesian Product)이라고 한다.
그래서 JOIN을 사용할 때는 ON 절의 조건이 정확한지 항상 확인해야 한다.
8. WHERE와 JOIN 조건의 차이
JOIN 조건은 ON 절에 작성하고, 조회 조건은 WHERE 절에 작성하는 것이 기본이다.
특히 OUTER JOIN을 사용할 때, 조건을 WHERE에 잘못 넣으면 JOIN 결과가 달라질 수 있다.
9. 정리
- JOIN은 여러 테이블을 조회 시점에 연결하는 방법이다
- INNER JOIN은 교집합, LEFT JOIN은 기준 테이블 전체 조회다
- JOIN 조건은 ON 절에 명확히 작성해야 한다
- 잘못된 JOIN은 데이터 폭증 문제를 만든다
'Computer Science > Database' 카테고리의 다른 글
| [DB] 09. 동시성 문제와 격리 (0) | 2026.02.07 |
|---|---|
| [DB] 08. 트랜잭션(Transaction)과 ACID (0) | 2026.02.07 |
| [DB] 06. SQL 기본 구조와 SELECT 실행 순서 (0) | 2026.02.07 |
| [DB] 05. 정규화(Normalization) (0) | 2026.02.04 |
| [DB] 04. 무결성과 제약조건 (0) | 2026.02.04 |