SQL에서 JOIN, INNER JOIN, LEFT JOIN은 여러 테이블의 데이터를 조합해서 하나의 결과로 만들기 위한 문법입니다. 각각의 차이점은 조인 조건에 맞는 행이 없을 때 해당 행을 포함하느냐에 달려 있습니다.
users 테이블 (회원 정보)
| id | name |
| 1 | Alice |
| 2 | Bob |
| 3 | Carol |
orders 테이블 (주문 정보)
| id | user_id | product |
| 1 | 1 | Keyboard |
| 2 | 1 | Monitor |
| 3 | 2 | Mouse |
| 4 | 4 | Headphones |
다음과 같은 두 개의 테이블이 있다고 할 때
1. INNER JOIN (또는 그냥 JOIN)
- 조인 조건을 만족하는 행만 반환
- user_id가 users.id와 일치하는 경우만 결과에 포함
SELECT users.name, orders.product
FROM users
INNER JOIN orders ON users.id = orders.user_id;
Carol은 주문이 없어서 제외되고
user_id = 4는 users에 없는 id이므로 제외됩니다.
| name | product |
| Alice | Keyboard |
| Alice | Monitor |
| Bob | Mouse |
2. LEFT JOIN (또는 LEFT OUTER JOIN)
- 왼쪽 테이블의 모든 행을 포함하고,
- 조인 조건에 맞지 않으면 오른쪽 테이블 컬럼은 NULL
SELECT users.name, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
| name | product |
| Alice | Keyboard |
| Alice | Monitor |
| Bob | Mouse |
| Carol | NULL |
Carol은 주문이 없어도 포함됨 (product는 NULL).
orders 테이블에만 있고 users에 없는 user_id = 4는 포함되지 않습니다.
정리하자면,
- 사용자가 반드시 주문을 한 것은 아닐 수 있습니다.
- INNER JOIN은 관계가 있는 데이터만,
- LEFT JOIN은 모든 사용자 + 주문 여부 관계까지 보고 싶을 때 사용합니다.
'SQL' 카테고리의 다른 글
| RDBMS (1) | 2025.05.09 |
|---|---|
| 데이터베이스에서 다양한 유형의 관계 (0) | 2025.05.08 |
| 정규화에 대하여 (4) | 2025.05.01 |
| 기본 키(primary key)와 외래 키(foreign key) (0) | 2025.05.01 |
| SQL 함수 (2) | 2025.01.16 |