SQL의 JOIN은 두 개 이상의 테이블을 연결해 하나의 결과로 보여주는 기능입니다.
여러 테이블에서 관련 데이터를 가져올 때 필수적으로 사용되며, 특히 INNER JOIN, LEFT JOIN, RIGHT JOIN, OUTER JOIN은 관계형 데이터베이스의 핵심입니다.
예시 테이블
customers 테이블
customer_id | name |
1 | Alice |
2 | Bob |
3 | Charlie |
orders 테이블
order_id | customer_id | product |
101 | 1 | Keyboard |
102 | 1 | Mouse |
103 | 2 | Monitor |
104 | 4 | Headset |
1. INNER JOIN
교집합과 같이 양쪽 테이블에서 조건이 일치하는 행만 조회합니다.
SELECT *
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id;
customer_id | name | order_id | product |
1 | Alice | 101 | Keyboard |
1 | Alice | 102 | Mouse |
2 | Bob | 103 | Monitor |
2. LEFT JOIN
왼쪽 테이블을 기준으로 모든 행을 유지하고 오른쪽 데이블은 일치하는 값만 붙입니다.
※ 아래 코드 기준으로 customers 테이블이 왼쪽입니다.
SELECT *
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;
customer_id | name | order_id | product |
1 | Alice | 101 | Keyboard |
1 | Alice | 102 | Mouse |
2 | Bob | 103 | Monitor |
3 | Charlie | NULL | NULL |
→ Charlie는 주문이 없지만 왼쪽 테이블에 있기 때문에 유지됩니다.
※ RIGHT JOIN의 경우, LEFT JOIN에서 테이블 순서만 변경하면 되므로, 설명은 생략하도록 하겠습니다.
3. FULL OUTER JOIN
양쪽 모든 데이터를 포함하며, 일치하지 않으면 NULL로 표시합니다.
MySQL은 FULL OUTER JOIN을 직접 지원하지 않으므로, UNION을 사용합니다.
※ 다음 글에서 계속 설명하도록 하겠습니다.
'SQL' 카테고리의 다른 글
[DB Optimization#1] DB 성능 최적화란? (0) | 2025.04.16 |
---|---|
[SQL#12] UNION / UNION ALL (0) | 2025.04.16 |
[SQL#10] CASE (0) | 2025.04.16 |
[SQL#9] GROUP BY / HAVING (0) | 2025.04.16 |
[SQL#8] COUNT / SUM / AVG / MIN / MAX (0) | 2025.04.16 |