상세 컨텐츠

본문 제목

[개미의 걸음 SQLD 2과목] 계층형 질의

자격증/SQLD

by IT개미 데이터 2020. 12. 30. 07:07

본문

728x90

계층형 질의[Hierarchical Query]

출처 : DBGUIDE.NET

계층형 데이터는 동일 테이블의 데이터가 계층적으로 상위와 하위 데이터로 나뉘게 되는 데이터

  • 엔터티를 순환관계 모델로 설계할 경우, 계층형 데이터가 발생

 

ORACLE 계층형 질의

SELECT ...... FROM 테이블
      WHERE 조건1 and 조건2...
      START WITH 조건
      CONNECT BY[NOCYCLE] 조건1 AND 조건2...
      [ORDER SIBLINGS BY 칼럼명1, 칼럼명2 ...
  • where절은 모든 전개를 진행한 이후 필터조건으로서 조건을 만족하는 데이터만을 추출하는데 활용
  • START WITH구는 계층형 구조에서 처음 탐색을 시작하는 것을 의미
        → 루트 데이터를 지정
  • CONNECT BY절은 다음에 전개될 자식 데이터를 지정하는 구문
        → 자식 데이터는 CONNECT BY절에 주어진 조건을 만족해야 함
  • PRIOR는 CONNECT BY절에 사용되며 현재 읽은 칼럼을 지정
        → "PRIOR 자식 = 부모" 형태를 사용하면 계층 구조에서 순방향 전개
            ( 자식 데이터 → 부모 데이터 방향으로 전개 )
        → "PRIOR 부모 = 자식" 형태를 사용하면 계층 구조에서 역방향 전개
            ( 부모 데이터 → 자식 데이터 방향으로 전개 )
  • ORDER SIBLINGS BY절은 형제 노드 사이에서 정렬을 지정하는 구문

 

주요 함수

LEVEL 검색 항목의 깊이를 의미
    Root 데이터(가장 상위 LEVEL)는 1의 값을 가지며 Leaf 데이터까지 1씩 증가
CONNECT_BY_ISLEAF 전개 과정에서 해당 데이터가 Leaf 데이터면 1, 그렇지 않으면 0
CONNECT_BY_ISCYCLE 전개 과정에서 자식을 갖는데, 해당 데이터가 조상으로서 존재하면 1, 그렇지 않으면 0
조상이란 자신으로부터 Root까지의 경로에 존재하는 데이터를 의미
CYCLE옵션을 사용했을 때만 사용가능
CONNECT_BY_ROOT(칼럼) 현재 전개할 데이터의 Root 데이터를 표시[단항 연산자]
SYS_CONNECT_BY_PATH
(칼럼, 경로분리자)
Root 데이터부터 현재 전개할 데이터까지의 경로를 표시

 

 

 

SQL Server 계층형 질의

  • CTE[Common Table Expression]을 재귀 호출함으로써 계층 구조를 전개
  • 앵커 멤버를 실행하여 기본 결과집합을 만든 이후에 재귀 멤버를 지속적으로 실행

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

관련글 더보기

댓글 영역