계층 질의 는 사원-관리자, 부서-상위부서처럼 한 표 안에 부모·자식 관계가 있는 데이터를 트리로 전개 하는 쿼리입니다. 같은 표를 두 번 이어 보는 셀프 조인 과 함께 나오며, SQLD 고난도 단원 입니다.
이 단원, 시험에서 어디에 나오나
- 제2과목 「SQL 기본 및 활용」 단원입니다.
- PRIOR 방향에 따른 전개 순서·LEVEL 예측과 셀프 조인의 아우터 여부 가 함정입니다.
① 계층 질의 — START WITH · CONNECT BY
그림 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개로
그림 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.
참고 출처
- 시험 과목·출제기준: 한국데이터산업진흥원(KDATA) 데이터자격검정 (2026년 7월 확인)
- CONNECT BY·PRIOR·셀프 조인 동작은 오라클 SQL 표준에 근거하며, 본문 설명·예시·도식은 자작입니다.