hr250218_계층형쿼리.sql


1. 오라클 계층형 SQL (Hierarchical SQL) 개념

오라클의 계층형 SQL부모-자식 관계가 존재하는 계층적 데이터를 조회할 때 사용되는 SQL 문법입니다.

일반적으로 CONNECT BY 절을 사용하여 계층적 관계를 정의하고, START WITH 절을 통해 루트 노드를 지정합니다.

기존의 SELECT문에 START WITH, CONNECT BY, ORDER SIBLINGS BY문을 결합한 구조이다.

2. 계층형 SQL 문법 정리

다음은 계층형 SQL에서 사용하는 주요 문법을 정리한 표입니다.

문법 설명
START WITH 계층 구조에서 루트 노드를 지정하는 구문
CONNECT BY PRIOR 부모-자식 관계를 정의하는 구문 (PRIOR 키워드를 통해 부모와 자식의 관계를 설정)
ORDER SIBLINGS BY 형제 노드(동일LEVEL)사이에서 정렬을 수행한다.

가상컬럼

문법 설명
LEVEL 현재 행의 계층 레벨을 반환 (루트는 1부터 시작)
SYS_CONNECT_BY_PATH 루트부터 현재 노드까지의 경로를 문자열로 반환
CONNECT_BY_ISLEAF 현재 노드가 리프(자식이 없는) 노드인지 여부를 반환 (1: 리프 노드, 0: 자식 있음)

3. 계층형 질의 와 셀프조인

3. 1. 계층형 SQL문 - 기본

오라클의 계층형 SQL을 사용하면 부모-자식 관계가 있는 데이터를 쉽게 조회할 수 있습니다.

다음 기본 예제에서는 카테고리 테이블의 계층 구조를 출력합니다.

SELECT LEVEL, category_id, category_name, parent_category_id
FROM category
START WITH parent_category_id IS NULL
CONNECT BY PRIOR category_id = parent_category_id;