MySQL

Join

neal89 2025. 4. 4. 12:54

📌 JOIN이란?

JOIN은 두 개 이상의 테이블을 연결해서 하나의 결과로 조회하는 SQL 연산이다.
예를 들어, 회원 정보 + 주문 정보를 한 번에 보고 싶다면 JOIN이 필요하다.


📌 JOIN 문법 기본

SELECT 컬럼명
FROM 테이블1
JOIN 테이블2 ON 조건

✅ JOIN 종류 총정리

종류  설명 기준 테이블 예외 상황 처리
INNER JOIN 양쪽 테이블에 모두 존재하는 데이터만 조회 둘 다 제외됨
LEFT OUTER JOIN 왼쪽 테이블은 무조건 유지, 오른쪽이 없으면 NULL 왼쪽 NULL
RIGHT OUTER JOIN 오른쪽 테이블은 무조건 유지 오른쪽 NULL
FULL OUTER JOIN 양쪽 모두 유지 (MySQL 지원 X) 둘 다 NULL
SELF JOIN 같은 테이블끼리 조인 자기 자신 계층적 관계 표현
CROSS JOIN 모든 행 조합 (곱집합) 없음 조건 없으면 무조건 조합

✅ 간단 예제 테이블

👤 members 테이블

 

id name
1 Teo
2 Amy

📦 orders 테이블

 

id member_id item
1 1 Book
2 2 Laptop
3 3 Pen

✅ JOIN 예시

🔹 1. INNER JOIN

SELECT m.name, o.item
FROM members m
JOIN orders o ON m.id = o.member_id;

✅ 공통된 id-member_id가 있는 데이터만 조회됨
⛔ member_id = 3은 members에 없으므로 제외


🔹 2. LEFT OUTER JOIN

SELECT m.name, o.item
FROM members m
LEFT JOIN orders o ON m.id = o.member_id;

✅ members 전체 출력
⛔ order 없는 경우는 item이 NULL


🔹 3. RIGHT OUTER JOIN

SELECT m.name, o.item
FROM members m
RIGHT JOIN orders o ON m.id = o.member_id;

✅ orders 전체 출력
⛔ 없는 회원의 주문은 name = NULL


✅ SELF JOIN – 자기 자신과 조인

🔎 개념

SELF JOIN하나의 테이블을 두 번 사용해서, 테이블 내의 계층 관계 또는 연결 관계를 표현할 때 사용한다.

예를 들어, 직원 테이블에서 “누가 누구의 상사인지” 표현하려면,
같은 테이블에서 상사 정보를 가져와야 한다 → SELF JOIN!


👔 employees 테이블 예시

 

emp_id  name manager_id
1 Alice NULL
2 Bob 1
3 Charlie 1
4 Diana 2
  • manager_id는 상사의 emp_id를 참조함
  • 자기 테이블을 참조하는 구조!

🔹 SELF JOIN SQL

SELECT e.name AS employee, m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.emp_id;

🔍 결과

 

employee  manager
Alice NULL
Bob Alice
Charlie Alice
Diana Bob

✅ 분석

  • employees 테이블을 e, m으로 나눠서 사용
  • e는 직원, m은 그 직원의 상사 역할
  • 조건: e.manager_id = m.emp_id

🔁 SELF JOIN 언제 쓰나?

사용 예 설명

조직도 직원 - 상사 관계
트리 구조 카테고리, 댓글 등 계층 표현
참조 관계 같은 테이블 내에서 ID → 부모 ID 구조

✅ 마무리 요약

  • JOIN은 여러 테이블을 한 번에 조회하는 필수 SQL 기능
  • SELF JOIN은 같은 테이블 내의 관계를 표현할 때 강력함
  • 복잡한 조직도, 트리 구조, 댓글 시스템 등에서 매우 자주 쓰임

'MySQL' 카테고리의 다른 글

IF, CASE, WHILE, 동적 SQL  (0) 2025.04.06
CREATE, INSERT, UPDATE, DELETE, ALTER  (0) 2025.04.03