SQL에서 LEFT JOIN, RIGHT JOIN, 그리고 FULL JOIN은 두 개 이상의 테이블을 결합할 때 사용하는 중요한 조인 유형들이다. 이들 조인을 사용할 때 한 테이블의 데이터를 다른 테이블과 비교하여 원하는 데이터를 가져온다.
LEFT JOIN은 왼쪽 테이블의 모든 행을 반환하고, 오른쪽 테이블에서 일치하는 값이 있으면 함께 반환한다. 일치하는 값이 없으면 NULL이 반환된다.
customers| id | name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
orders| order_id | customer_id |
|---|---|
| 101 | 1 |
| 102 | 2 |
| 103 | 4 |
예시:
SELECT a.id, a.name, b.order_id
FROM customers a
LEFT JOIN orders b ON a.id = b.customer_id;

customers 테이블의 모든 데이터가 반환되며, orders 테이블에 일치하는 주문이 없으면 order_id는 NULL이 반환된다.
RIGHT JOIN은 오른쪽 테이블의 모든 행을 반환하고, 왼쪽 테이블에서 일치하는 값이 있으면 함께 반환한다. 일치하는 값이 없으면 NULL이 반환된다.
customers| id | name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
orders| order_id | customer_id |
|---|---|
| 101 | 1 |
| 102 | 2 |
| 103 | 4 |
예시:
SELECT a.id, a.name, b.order_id
FROM customers a
RIGHT JOIN orders b ON a.id = b.customer_id;

orders 테이블의 모든 데이터가 반환되며, customers 테이블에 일치하는 고객이 없으면 name과 같은 값들이 NULL로 반환된다.
FULL JOIN은 왼쪽 테이블과 오른쪽 테이블의 모든 행을 반환하고, 일치하는 값이 있으면 함께 반환한다. 일치하는 값이 없으면 해당 위치는 NULL이 반환된다.
customers| id | name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
orders| order_id | customer_id |
|---|---|
| 101 | 1 |
| 102 | 2 |
| 103 | 4 |
예시:
SELECT a.id, a.name, b.order_id
FROM customers a
FULL OUTER JOIN orders b ON a.id = b.customer_id;

customers 테이블과 orders 테이블의 모든 데이터가 반환되며, 일치하는 값이 없는 경우는 NULL이 반환된다.
이 조인은 두 테이블의 일치하는 데이터만 반환한다. 두 테이블에 모두 일치하는 데이터가 있어야만 결과에 포함된다.
customers| id | name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
orders| order_id | customer_id |
|---|---|
| 101 | 1 |
| 102 | 2 |
| 103 | 4 |
예시:
SELECT a.id, a.name, b.order_id
FROM customers a
INNER JOIN orders b ON a.id = b.customer_id;

customers와 orders에서 일치하는 데이터만 반환된다.