SQL 기본 및 활용

23. 계층 질의·셀프 조인 — SQLD, CONNECT BY와 PRIOR 방향

CBT 전자문제집 편집팀
#SQLD#계층질의#CONNECT BY#PRIOR#셀프조인

계층 질의 는 사원-관리자, 부서-상위부서처럼 한 표 안에 부모·자식 관계가 있는 데이터를 트리로 전개 하는 쿼리입니다. 같은 표를 두 번 이어 보는 셀프 조인 과 함께 나오며, SQLD 고난도 단원 입니다.

이 단원, 시험에서 어디에 나오나

  • 제2과목 「SQL 기본 및 활용」 단원입니다.
  • PRIOR 방향에 따른 전개 순서·LEVEL 예측과 셀프 조인의 아우터 여부 가 함정입니다.

① 계층 질의 — START WITH · CONNECT BY

계층 질의 트리 도식. 사장을 루트로 이사·사원으로 전개되며 LEVEL 1,2,3으로 깊이 표시

그림 1. START WITH=루트, CONNECT BY로 부모-자식 전개, LEVEL=깊이. (자작 도식)

SELECT LEVEL, 이름
FROM   사원
START WITH 관리자번호 IS NULL          -- 루트(최상위)
CONNECT BY PRIOR 사번 = 관리자번호;    -- 부모(사번) → 자식(관리자번호)
키워드의미
START WITH전개 시작(루트) 조건
CONNECT BY부모-자식 연결 규칙
PRIOR"부모 행"을 가리킴
LEVEL현재 깊이(루트=1)

② PRIOR 방향이 전개를 결정 (핵심 함정)

PRIOR 가 어느 쪽에 붙느냐로 위→아래(순방향) 인지 아래→위(역방향) 인지 갈립니다.

  • CONNECT BY PRIOR 사번 = 관리자번호: 부모(사번)에서 자식으로 → 순방향(위에서 아래).
  • CONNECT BY 사번 = PRIOR 관리자번호: 자식에서 부모로 → 역방향(아래에서 위).

PRIOR의 위치만 바꿔 전개 방향을 반대로 낸 보기가 대표 함정입니다.

③ 셀프 조인 — 같은 표를 별칭 2개로

셀프 조인 도식. 사원 표를 e와 m 별칭으로 조인해 관리자 이름을 조회, 최상위는 아우터로 보존

그림 2. 같은 사원 표를 e(사원)·m(관리자)로 조인. 최상위까지 남기려면 LEFT OUTER JOIN. (자작 도식)

SELECT e.이름 AS 사원, m.이름 AS 관리자
FROM   사원 e LEFT JOIN 사원 m
       ON e.관리자번호 = m.사번;
  • 같은 표를 서로 다른 별칭 으로 두 번 참조합니다(별칭 필수).
  • 관리자가 없는 최상위(사장) 까지 결과에 남기려면 OUTER JOIN. INNER면 최상위가 빠집니다.

자주 틀리는 함정

  • PRIOR 방향 반대 — 위치가 바뀌면 전개 방향이 뒤집힘.
  • 셀프 조인 별칭 누락 — 같은 표를 두 번 쓰므로 별칭이 없으면 모호.
  • INNER 셀프 조인 — 관리자 없는 최상위 행이 사라짐(아우터로 보존).

한 장 정리 (암기 카드)

  • 계층: START WITH(루트)·CONNECT BY PRIOR(전개)·LEVEL(깊이).
  • PRIOR 위치 = 전개 방향. PRIOR 사번=관리자번호는 위→아래.
  • 셀프 조인 = 같은 표 별칭 2개. 최상위 보존은 OUTER JOIN.

참고 출처

CBT 전자문제집 편집팀

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

관련 글