Database - SQL에서 JOIN을 언제, 왜, 어떻게 사용할까?

2025. 3. 21. 11:11·기술블로그

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
'기술블로그' 카테고리의 다른 글
  • 📌 MySQL 데이터베이스 정리 (with 크롤링 in Selenium, PymySQL)
  • 📌 크롤링 시 IndexError 예외처리 방법 (초기값은 있었지만 없을경우)
  • 🐍 Python + PyMySQL로 MySQL 리팩토링(2/2)
  • 🐍 Python + PyMySQL로 MySQL 고객 정보 다루기(1/2)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (801) N
      • Python (32)
      • 프로젝트 (115)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    bts
    RM
    americanlaw
    hotcoffeecase
    chinanightlife
    livebroadcast
    chatgpterror
    life reflection
    lawsuitculture
    remittance
    뷔
    self-growth
    youngprofessionals
    urbantrends
    trumpmuskclash
    btsjungkook
    btsreunion
    americaparty
    gpterror
    newpoliticalparty
    homebartrend
    titaniumcase
    btsdischarge
    travel ban
    basalcellcarcinoma
    college reunions
    smartphonedurability
    classaction
    btscomeback
    global politics
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Database - SQL에서 JOIN을 언제, 왜, 어떻게 사용할까?
상단으로

티스토리툴바