SQL

[계층형 질의]

mitomi 2021. 12. 21. 23:00
반응형
SMALL

-계층형데이터가 존재하는 경우 데이터를 조회하기 위해 계층형 질의를 사용

 계층형 데이터란 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말함

 

1. ORACLE 계층형 질의

 

      - START WITH 절 : 계층구조 전개의 시작 위치를 지정하는 구문(즉 루트데이터를 지정함)

      - CONNECT BY 절 : 다음에 전개될 자식 데이터를 지정하는 구문

      - PRIOR 절  : CONNECT BY절에 사용되며, 현재 읽은 칼럼을 지정

                       PRIOR 자식=부모 (부모-->자식) 방향으로 전개

                       PRIOR 부모=자식 (자식-->부모) 방향으로 전개

     - NOCYCLE : 데이터를 전개하면서 이전에 나타났던 데이터가 나타나면 사이클이 형성되었다라고 하며,

                       사이클이 발생한 데이터는 런타임 오류가 발생.

                       그렇지만 NOCYCLE를 추가하면 사이클이 발생한 이후의 데이터는 전개하지 않는다. 

    - ORDER BY SIBLINGS BY :  형제  노드(동일 LEVEL) 사이에서 정렬을 수행

    - WHERE : 모든 전개를 수행한 후에 지정된 조건을 만족하는 데이터만을 추출

    - LEVEL : 루트데이터면 1, 하위데이터면 2, 리프데이터까지 1씩 증가

    - CONNECT_BY_ISLEAF  : 전개 과정에서 해당 데이터가 리프 데이터면 1 그렇지 않으면 0

    - CONNECT_BY_ISCYCLE : 전개과정에서 자식을 갖는데  해당데이터에 조상을 갖으면 1 , 없다면 0

                                      조상이랑 자신으로부터 루트까지의 경로에 존재하는 데이터

                                      (CYCLE 옵션을 사용할 때만 사용가능)

순방향 계층형 질의
역방향 계층형 질의

 

 - CONNECT_BY_ROOT :  현재 전개할 데이터의 루트 데이터를 표시(단항연산자)

 - SYS_CONNECT_BY_PATH :  루트 데이터부터 현재 전개할 데이터까지의 경로 표시

                                      SYS_CONNECT_BY_PATH(칼럼,경로분리자)

 

 

2. MS-SQL 계층형 질의

 - MS-SQL 계층적 데이터를 가진  데이터는 계층적 질의 함수 지원안됨.

 - WITH 절   UNION ALL을 사용하여 재귀적 호출을 이용해 계층적 질의가능함.

 

728x90

'SQL' 카테고리의 다른 글

테이블 Prefech & 인덱스 Prefetch  (0) 2022.01.16
[그룹함수 / ROLLUP]  (0) 2021.12.29
집합 연산자 (SET OPERATOR)  (0) 2021.12.20
OUTER JOIN  (0) 2021.12.19
INNER & NATURAL JOIN  (0) 2021.12.18