SQL

[이론]SQL 심화 문법 정리 : 계층형 쿼리

노력하는 백곰 2024. 12. 4. 08:25

계층형 쿼리(Hierarchical Query)

- 엔터티를 순환관계 데이터 모델(조직도, 사원, 메뉴 등)로 설계할 경우, 계층형 데이터가 발생

- 계층형 데이터(한 테이블에 계층적으로 상/하위 데이터)가 존재할 경우, 원하는 데이터를 조회하기 위해 계층형 쿼리 사용

- 부모와 자식 관계에 깊이(Level)를 부여하여, 조회하는 쿼리(즉, 부모 노드없는 토드가 최상위 노드에 위치한 형태)

- 오라클(Oracle) 환경 지원

 

 

- 계층형 쿼리 활용 예시

  →START WITH절 : 계층 구조 전개의 시작 위치를 지정하는 구문
  →②CONNECT BY절 : 다음에 전개될 자식 데이터를 지정하는 구문
  →PRIOR 조건 : 순방향/역방향 전개

SELECT 칼럼명
FROM 테이블명
WHERE 조건
START WITH 조건         
CONNECT BY PRIOR 조건

 

 

■ 순방향 전개

- 전개 : 부모 → 자식 방향

- 형태 : PRIOR 자식 = 부모

SELECT 
    CONNECT_BY_ROOT EMPNO 루트사원, 
    SYS_CONNECT_BY_PATH(EMPNO, '/') 경로, 
    EMPNO, 
    MGR 
FROM 
    EMP 
START WITH 
    MGR IS NULL 
CONNECT BY 
    PRIOR EMPNO = MGR;

 

 

■ 역방향 전개

- 전개 : 자식 → 부모 방향

- 형태 : PRIOR 부모  = 자식

SELECT 
    CONNECT_BY_ROOT EMPNO 루트사원, 
    SYS_CONNECT_BY_PATH(EMPNO, '/') 경로, 
    EMPNO, 
    MGR 
FROM 
    EMP 
START WITH 
    MGR IS NULL 
CONNECT BY 
    PRIOR MGR = EMPNO;