자격증/SQLD
[개미의 걸음 SQLD 2과목] 계층형 질의
IT개미 데이터
2020. 12. 30. 07:07
728x90
계층형 질의[Hierarchical Query]
계층형 데이터는 동일 테이블의 데이터가 계층적으로 상위와 하위 데이터로 나뉘게 되는 데이터
- 엔터티를 순환관계 모델로 설계할 경우, 계층형 데이터가 발생
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