구름조아

계층형 SQL 본문

SQLD자격증공부/SQL활용

계층형 SQL

김옹희 2023. 5. 11. 11:35

1. 계층형 SQL

  • 한 테이블안에 계층적인 데이터 구조를 가진 테이블에서 쉽게 데이터를 출력하기 위한 SQL문법.
select 컬럼명
from 테이블
where 조건절
start with 시작조건
connect by [nocycle] prior 관계방향
order [siblings] by 정렬조건

2. 계층형 전용 컬럼 및 함수

LEVEL ROOT 부터 한단계씩 내려가면서 증가하는 번호
CONNECT_BY_ISLEAF 각 전개별 최하위 리프에 1, 아니면 0
CONNECT_BY_ISCYCLE 내부적인 값 오류 등으로 자식노드가 다시 내 부모노드가 되는 경우 1을 출력
SYS_CONNECT_BY_PATH ROOT로 부터 각 ROW까지 전개된 데이터 경로를 출력
CONNECT_BY_ROOT 각 전개한 데이터의 루트 데이터를 출력

3. 계층형 SQL 키워드

  • ROOT와 LEAF
  • 역방향 전개
  • WHERE절 사용
  • ORDER SIBLINGS BY
SELECT DEPT_CD
              ,LEVEL
              ,LPAD(' ', (LEVEL - 1) * 2) || DEPT_NM
              ,UP_DEPT_CD
              ,CONNECT_BY_ISLEAF
-- ,CONNECT_BY_ISCYCLE
              ,SYS_CONNECT_BY_PATH(DEPT_NM, '-')
              ,CONNECT_BY_ROOT (DEPT_NM)
FROM COMPANY_DEPT
START WITH UP_DEPT_CD IS NULL
CONNECT BY [NOCYCLE] PRIOR DEPT_CD = UP_DEPT_CD
ORDER SIBLINGS BY DEPT_NM;