SQL 기본 및 활용

16. 조인(JOIN) — SQLD, 종류별 결과와 카티션 곱·(+) 방향

CBT 전자문제집 편집팀
#SQLD#JOIN#OUTERJOIN#카티션곱#SELFJOIN

조인은 두 개 이상의 테이블을 공통 컬럼(키) 으로 연결해 하나의 결과로 조회하는 연산입니다. 관계형 DB는 데이터를 나눠 저장하므로(정규화), 조회할 때 조인으로 다시 합칩니다. 시험은 "이 조인의 결과표(행 수)는?" 을 가장 많이 묻습니다.

이 단원, 시험에서 어디에 나오나 (출제 비중)

  • 제2과목 「SQL 기본 및 활용」 = 40문항 · 80점. 조인은 배점 최상위권의 고빈출·고난도 단원입니다.
  • 조인 유형 구분결과 행 수 계산(카티션 곱) 이 핵심 출제 각도입니다. (단원별 문항수는 공개되지 않습니다 — 출처: KDATA 출제기준.)

출제 포인트 — 시험이 실제로 묻는 것

  1. INNER / OUTER(LEFT·RIGHT·FULL) / CROSS / SELF가 어떤 행을 남기는지 (최다 출제)
  2. 조인 조건 누락 = 카티션 곱, 행 수 = M×N
  3. OUTER JOIN의 NULL 채움어느 쪽을 다 남길지(방향)
  4. 오라클 (+) ↔ ANSI OUTER JOIN 대응 (문법 상세는 표준 조인 단원)

① 종류별로 남는 행 — 한눈에

조인 종류 벤다이어그램: INNER는 교집합, LEFT는 왼쪽 표 전체, RIGHT는 오른쪽 표 전체, FULL OUTER는 합집합을 반환

그림 1. 노란 영역이 각 조인이 반환하는 행. (자작 도식)

조인남는 행짝 없을 때
INNER양쪽이 일치하는 행만제외
LEFT OUTER왼쪽 전부 + 일치분오른쪽 컬럼 NULL
RIGHT OUTER오른쪽 전부 + 일치분왼쪽 컬럼 NULL
FULL OUTER양쪽 전부없는 쪽 NULL
CROSS모든 조합(M×N)(조건 없음)
SELF같은 표를 별칭 2개로조건에 따름

② 구체 예시 — 짝 없는 행의 운명

-- 주문한 회원만 (INNER)
SELECT m.이름, o.금액
FROM 회원 m INNER JOIN 주문 o ON m.회원번호 = o.회원번호;

-- 주문 없는 회원까지 (LEFT) → 금액은 NULL
SELECT m.이름, o.금액
FROM 회원 m LEFT OUTER JOIN 주문 o ON m.회원번호 = o.회원번호;

회원 표와 주문 표를 회원번호로 INNER JOIN 하면 주문이 있는 회원만 남고, 주문이 없는 박은 결과에서 빠지는 예시 표

그림 2. INNER JOIN 결과 — 짝 없는 '박'은 빠진다. 모두 남기려면 LEFT OUTER. (자작 도식)

판별법: 통째로 남길 표를 먼저 정하고, 그 표를 LEFT(왼쪽)/RIGHT(오른쪽) 자리에 둡니다. INNER는 짝 있는 행만 남겨 한쪽에만 있는 데이터가 사라집니다.

③ 카티션 곱 — ON 누락이면 행 수는 M×N

연결 조건(ON)을 빠뜨리면 모든 행 조합이 만들어집니다(CROSS JOIN과 동일).

SELECT * FROM 회원, 주문;   -- 조건 없음: 회원 4행 × 주문 3행 = 12행

시험은 "회원 4행, 주문 3행일 때 결과 행 수는?" 처럼 곱셈으로 계산하게 합니다. 조인 문제에서 결과 행 수가 갑자기 커졌다면 조건 누락부터 의심하세요.

④ 오라클 (+) 표기 — 붙는 쪽이 반대

-- ANSI                              -- 오라클 전통
FROM a LEFT JOIN b ON a.k = b.k      FROM a, b WHERE a.k = b.k(+)

(+)NULL을 채워줄(부족한) 쪽에 붙습니다. a.k = b.k(+)는 b가 없어도 a를 다 남기는 LEFT OUTER JOIN — "다 남길 쪽에 (+)"로 외우면 반대로 틀립니다.

⑤ SELF JOIN — 같은 표를 두 번

-- 사원과 그 관리자(같은 사원 테이블을 별칭 2개로)
SELECT e.이름 AS 사원, m.이름 AS 관리자
FROM 사원 e LEFT JOIN 사원 m ON e.관리자번호 = m.사번;

같은 테이블에 별칭을 2개 주어 자기 자신과 조인합니다. 계층(상사-부하) 구조 조회가 대표 예입니다.

한 장 정리 (암기 카드)

  • INNER 교집합 / LEFT·RIGHT 한쪽 전체+NULL / FULL 합집합 / CROSS M×N / SELF 자기조인.
  • ON 누락 = 카티션 곱, 행 수는 두 표의 .
  • 오라클 a.k = b.k(+) = a를 다 남기는 LEFT — (+)는 NULL 채울 쪽.
  • 문법 상세(ON/USING/NATURAL)는 표준 조인 단원에서.

참고 출처

CBT 전자문제집 편집팀

자격증 개념과 기출 유형을 쉽게 정리합니다.

관련 글