계층형 쿼리(Hierarchical Query)란 오라클8버전부터 지원하는 기능중에 하나입니다.
상위데이터부터 하위데이터까지 계층적으로 수직적인 관계를 나타내며
회사 직급이나 유통과정, 기업부터 고객까지의 관계 등 다양하게 표현할 수 있습니다.
흔히 쓰이는 기술이기도 하며 서브쿼리와 여러테이블을 자유자재로 활용한다면 중급측에도
속한다고 할 수 있는 기능입니다.
예시로 이러한 형태의 관계도를 쿼리로 작성하여 보기편하게 데이터화 하는 기능입니다.
쿼리문을 작성하기 전에 계층형 구조에서 쓰이는 용어를 알려드리겠습니다.
- 노드(NODE) : 항목 하나하나를 노드라고 부릅니다.
- 루트(ROOT) : 트리구조에서 가장 위에 있는 노드를 말합니다. 위의 조직도에서는 회장이 루트노드입니다.
- 부모(PARENT) : 트리구조에서 상위의 있는 노드입니다. 위의 조직도에서는 회장,부회장,본부 등 상위의 노드를 말합니다.
- 자식(CHILD) : 부모아래에 있는 노드를 말합니다. 회장의 자식노드->부회장, 팀장의 자식노드->부장
- 리프(LEAF) : 가장 하위의 노드를 말합니다. 과장이 리프노드가 됩니다.
1. 위의 관계도를 기반으로 테이블을 생성
2. 데이터를 삽입합니다.
3. START WITH...CONNECT BY 문법을 사용하여 조회문 작성
- LPAD : 지정한 길이만큼 왼쪽부터 특정문자로 채우는 함수입니다.
LPAD("값","총 문자길이","채움문자")
- START WITH : 최상위 루트노드를 지정합니다.
최상위 루트노드인 회장의 부모노드는 NULL이므로 PRNT IS NULL 이라고 작성합니다.
- CONNECT BY : 부모와 자식노드를 찾아서 연결합니다.
- PRIOR : 자식노드쪽에 붙여서 작성합니다.
- LEVEL : 오라클의 모든 실행쿼리에서 사용가능하며 트리내에서 어떤 단계에 있는지 나타내는 값입니다.
START WITH과 CONNECT BY를 사용해 부모자식노드를 연결한 후 LEVEL로 데이터를 보기쉽게 계층화 합니다.
'데이터베이스 > ORACLE' 카테고리의 다른 글
[ORACLE] 오라클 DEFAULT 제약조건 (0) | 2021.04.08 |
---|---|
[ORACLE] 오라클 FOREIGN KEY 생성 / 삭제 (0) | 2021.04.08 |
[ORACLE] 오라클 제약조건 종류,생성,삭제 (0) | 2021.04.05 |
[ORACLE] 오라클 시퀀스(SEQUENCE) 생성법 (0) | 2021.04.05 |
[ORACLE] 오라클 인덱스(INDEX) 생성,삭제법 (0) | 2021.04.05 |