데이터베이스/MYSQL

MySQL JOIN 완벽 가이드: INNER, LEFT, RIGHT, FULL 이해하기

CodeCaine Explorer 2024. 12. 19. 16:25
728x90
반응형
SMALL

안녕하세요, 친구들! 😊 오늘은 MySQL의 JOIN에 대해 이야기해볼게요. JOIN은 데이터베이스에서 테이블 간의 관계를 연결하여 데이터를 가져오는 방법이에요. 데이터베이스의 핵심 개념 중 하나라서 꼭 알아야 한답니다! 💪


🌟 JOIN이란?

JOIN은 여러 개의 테이블을 연결하거나 조합해서 관련 데이터를 하나의 결과로 가져오는 SQL 연산이에요.
테이블 간의 공통된 값(키)을 기준으로 데이터를 합치는 것이죠!


🛠 JOIN의 종류

MySQL에서는 다음과 같은 JOIN을 제공해요:

1️⃣ INNER JOIN

  • 교집합처럼, 두 테이블에서 일치하는 데이터만 가져와요.
  • 예: "주문"과 "고객" 테이블에서 고객 정보와 주문 내역 연결하기.
SELECT customers.name, orders.order_date
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;

👉 ON 뒤에 있는 조건(customers.customer_id = orders.customer_id)으로 두 테이블을 연결해요.


2️⃣ LEFT JOIN (또는 LEFT OUTER JOIN)

  • 왼쪽 테이블의 모든 데이터를 가져오고, 오른쪽 테이블에 매칭되는 데이터가 없으면 NULL로 채워요.
  • 예: "모든 고객"과 "주문" 내역 연결, 주문이 없는 고객도 포함.
SELECT customers.name, orders.order_date
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;

3️⃣ RIGHT JOIN (또는 RIGHT OUTER JOIN)

  • 오른쪽 테이블의 모든 데이터를 가져오고, 매칭되지 않는 왼쪽 테이블의 데이터는 NULL로 표시해요.
  • 사용 빈도는 낮아요!
SELECT customers.name, orders.order_date
FROM customers
RIGHT JOIN orders
ON customers.customer_id = orders.customer_id;

4️⃣ FULL OUTER JOIN

  • 양쪽 테이블의 모든 데이터를 가져오고, 일치하지 않는 데이터는 NULL로 표시해요.
  • MySQL은 직접 지원하지 않아서 UNION으로 구현해야 해요.
SELECT customers.name, orders.order_date
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id
UNION
SELECT customers.name, orders.order_date
FROM customers
RIGHT JOIN orders
ON customers.customer_id = orders.customer_id;

😊 JOIN의 활용 예제

🎨 테이블 준비

customers 테이블

customer_id name city
1 Alice New York
2 Bob London
3 Charlie Paris

orders 테이블

order_id customer_id order_date
101 1 2024-12-01
102 3 2024-12-05

🎯 INNER JOIN 결과

SELECT customers.name, orders.order_date
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;
name order_date
Alice 2024-12-01
Charlie 2024-12-05

🎯 LEFT JOIN 결과

SELECT customers.name, orders.order_date
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;
name order_date
Alice 2024-12-01
Bob NULL
Charlie 2024-12-05

🥳 정리

  • INNER JOIN: 공통된 데이터만 가져와요.
  • LEFT JOIN: 왼쪽 테이블의 모든 데이터를 포함해요.
  • RIGHT JOIN: 오른쪽 테이블의 모든 데이터를 포함해요.
  • FULL OUTER JOIN: 양쪽 테이블의 모든 데이터를 포함해요.

💪 포기하지 마세요!

처음에는 조금 복잡해 보일 수 있지만, JOIN은 데이터베이스를 정말 강력하게 만들어주는 도구예요. 차근차근 따라 해보세요. 여러분은 잘 해낼 수 있어요! 😊

반응형
SMALL