AI 개발 공부 공간

AI, 머신러닝, 딥러닝, Python & PyTorch, 실전 프로젝트

SQLD/2과목 : SQL 기본 및 활용

2.7 JOIN문

qordnswnd123 2025. 6. 24. 16:42

📘 SQLD – JOIN문


1️⃣ JOIN이란?

  • JOIN은 두 개 이상의 테이블에서 키 컬럼(예: PK·FK) 기준으로 데이터를 결합하여 하나의 결과집합으로 조회하는 기법입니다.
  • 여러 테이블에 흩어진 정보를 하나로 합쳐 종합적인 데이터 조회나 분석이 가능하게 해줍니다.
  • SQLD 시험은 물론, 실무에서도 가장 많이 사용하는 JOIN 관련 문법입니다.

2️⃣ JOIN 유형과 용도

 

INNER JOIN 두 테이블 모두 매칭되는 행만 반환 주문-고객 테이블에서 주문 기록 조회
LEFT OUTER JOIN 왼쪽 테이블 전체 + 오른쪽 매칭된 행 (없으면 NULL) 고객 리스트에서 미구매 고객 포함 조회
RIGHT OUTER JOIN 오른쪽 테이블 전체 + 왼쪽 매칭된 행 드물게 사용됨 (RIGHT 대신 LEFT 활용 권장)
FULL OUTER JOIN 양쪽 모든 행 포함, 매칭 없으면 NULL 양쪽 모두 포함한 통합 보고서
CROSS JOIN 두 테이블의 모든 조합 생성 (카티션 곱) 모든 상품 × 모든 색상 조합 생성
SELF JOIN 동일 테이블끼리 조인 (자기참조) 직원-관리자 관계 조회 등
 

3️⃣ JOIN 기본 문법

SELECT A.col1, B.col2, ...
FROM tableA AS A
[INNER | LEFT | RIGHT | FULL OUTER | CROSS] JOIN tableB AS B
ON A.key = B.key
[WHERE 추가조건]
[ORDER BY ...];
  • AS: 별칭(alias)을 지정하여 가독성 UP
  • ON: 두 테이블의 연결 기준 지정 (JOIN 기준)
  • WHERE: JOIN 이후 결과 전체에 대한 추가 필터링

4️⃣ 각 JOIN 결과 차이 요약

  • INNER JOIN: 교집합
  • LEFT OUTER JOIN: 왼쪽 전체 + 교집합
  • RIGHT OUTER JOIN: 오른쪽 전체 + 교집합
  • FULL OUTER JOIN: 합집합 (매칭 없는 행도 포함)
  • CROSS JOIN: 데카르트 곱 (모든 조합)
  • SELF JOIN: 자기 자신 조합 → 특정 관계 분석

5️⃣ 대표 실무 예시 쿼리

✅ INNER JOIN

SELECT o.id AS order_id, c.name AS customer_name
FROM orders o
INNER JOIN customers c ON o.customer_id = c.id;

✅ LEFT JOIN

SELECT u.name, a.address
FROM users u
LEFT JOIN addresses a ON u.id = a.user_id; -- 주소 없는 사용자도 결과에 포함

✅ FULL OUTER JOIN

SELECT A.*, B.*
FROM A FULL OUTER JOIN B ON A.id = B.id; -- 둘 다 없는 데이터일 경우 NULL 포함

✅ CROSS JOIN

SELECT *
FROM colors CROSS JOIN shapes; -- 모든 색상 × 도형 조합 생성

✅ SELF JOIN

SELECT e1.name AS employee, e2.name AS manager
FROM employee e1
INNER JOIN employee e2 ON e1.manager_id = e2.id;

6️⃣ 실무 & SQLD 시험 대비 팁

  • INNER vs OUTER의 포함 기준 철저히 구분
  • LEFT/RIGHT는 테이블 배치(위치)에 따라 결과 다름 → 실습 필요
  • CROSS JOIN은 조건 없다면 조심: 폭발적 결과 수!
  • SELF JOIN은 같은 테이블에서 다른 역할의 데이터 조인 시 유용
  • WHERE절은 JOIN 후 조건 적용, ON절은 조인 기준 → 둘 차이 명확히 이해

7️⃣ 실행 순서 이해

FROMJOINON … → WHERESELECTORDER BY
  • 작성 순서와 실행 순서가 일치하지 않으니, 전체 쿼리 흐름 이해 필수

'SQLD > 2과목 : SQL 기본 및 활용' 카테고리의 다른 글

2.9 복합 쿼리 예제 2  (2) 2025.07.03
2.8 복합 쿼리 예제 1  (1) 2025.07.03
2.6 GROUP BY 절  (0) 2025.06.24
2.5 WHERE 절  (1) 2025.06.24
2.4 NULL 함수  (0) 2025.06.24