SQL에서 JOIN을 언제, 왜, 어떻게 사용할까?
SQL에서 JOIN을 이해하려면 **조인하는 이유(목적)**부터 명확히 아는 것이 가장 중요합니다!
✅ 핵심 로직: "조인하는 이유 → 생각 기준 → 조인 키"
1️⃣ 내가 무엇을 알고 싶은가? (조인의 목적)
2️⃣ 그 정보는 어느 테이블에 있는가? (연결할 대상)
3️⃣ 어떤 공통된 기준으로 연결할 수 있는가? (조인 키)
✅ 예제 정리: 자주 쓰이는 목적 & 기준
조인하려는 이유 (목적) 연결 기준(생각 기준) 조인 키 (ON 기준)
주문한 고객 이름을 알고 싶다 | 고객 ID가 두 테이블에 있음 | orders.customerNumber = customers.customerNumber |
주문한 상품 이름을 알고 싶다 | 상품코드가 두 테이블에 있음 | orderdetails.productCode = products.productCode |
고객을 담당한 직원 이름을 알고 싶다 | 직원번호가 두 테이블에 있음 | customers.salesRepEmployeeNumber = employees.employeeNumber |
한 사무실에 있는 직원들을 보고 싶다 | 사무실 코드가 두 테이블에 있음 | employees.officeCode = offices.officeCode |
✅ 실전 사고 흐름 예시
❓ “주문번호로 고객 이름과 주문한 상품 이름을 알고 싶다.”
1️⃣ 고객 이름은 customers 테이블에 있음
2️⃣ 상품 이름은 products 테이블에 있음
3️⃣ 주문정보는 orders와 orderdetails 테이블에 있음
👉 그러면 생각 흐름은 이렇게 됩니다:
orders
→ (customerNumber) JOIN customers
→ (orderNumber) JOIN orderdetails
→ (productCode) JOIN products
📌 총 3개 테이블 조인!
💡 실전 꿀팁: 조인 기준을 쉽게 찾는 법
상황 조인 기준을 찾는 방법
테이블에 ID, Code, Number 같은 필드가 있으면? | 다른 테이블에도 같은 필드가 있을 가능성이 높음 (조인 후보!) |
필요한 정보가 없으면? | 다른 테이블에 있는지 확인하고, 공통 키로 조인 |
🔥 마무리 정리: 조인 설계 핵심 공식
"내가 원하는 정보는 어디에 있는가?"
→ "그걸 가진 테이블은 어디인가?"
→ "어떤 열을 기준으로 연결할 수 있는가?"
✅ 이 사고법만 익히면, 조인은 더 이상 외우는 게 아니라 "찾는 것"이 됩니다! 🧠🚀
'기술블로그' 카테고리의 다른 글
📌 MySQL 테이블에서 중복된 데이터를 효과적으로 삭제하는 방법 (0) | 2025.03.25 |
---|---|
📌 MySQL 데이터베이스 정리 (with 크롤링 in Selenium, PymySQL) (0) | 2025.03.25 |
📌 크롤링 시 IndexError 예외처리 방법 (초기값은 있었지만 없을경우) (0) | 2025.03.25 |
🐍 Python + PyMySQL로 MySQL 리팩토링(2/2) (0) | 2025.03.21 |
🐍 Python + PyMySQL로 MySQL 고객 정보 다루기(1/2) (0) | 2025.03.21 |