계층형 쿼리
- 계층형쿼리는 계층형구조(상하 수직관계)로 쿼리의 결과를 반환하는 쿼리
(사용형식)
SELECT 컬럼list
FROM 테이블명[별칭][,...]
WHERE 조건
START WITH 최상위 조건
CONNECT BY [NOCYCLE] PRIOR 계층형 구조 조건
- 'START WITH 최상위 조건' : 계층형 구조에서 최상위 행을 식별하기 위한 조건
이 조건에 맞는 행부터 시작하여 계층형 구조를 풀어 나감 - 'CONNECT BY [NOCYCLE] PRIOR 계층형 구조 조건' : 계층형 구조가 어떤식으로 연결되었는지 기술
ex)부서테이블에서 PARENT_ID는 상위부서 정보를 갖고있는 컬럼이며, 이것을 이용하여
계층형 구조를 표현하려면 'CONNECT BY PRIOR DEPARTMENT_ID=PARENT_ID'로 기술해야 함 - 'PRIOR'는 계층형 쿼리에만 사용하는 연산자로 '이전','직전의'라는 뜻으로 위치는
= 연산자 앞 또는 뒤에 위치할 수 있음(CONNECT BY PARENT_ID=PRIOR DEPARTMENT_ID)
** LEVEL : 계층형 쿼리에서만 사용할 수 있는 의사컬럼(Pseudo Column)으로 계층의 값을 의미
보통 들여쓰기를 위한 값으로 많이 사용
사용예)부서테이블에서 부서번호,부서명,LEVEL을 조회하되 부서명을 계층구조로 조회하시오
SELECT DEPARTMENT_ID AS 부서번호,
LPAD(' ',3*(LEVEL-1))||DEPARTMENT_NAME AS 부서명,
LEVEL AS 레벨
FROM DEPARTMENTS
START WITH PARENT_ID IS NULL
CONNECT BY PRIOR DEPARTMENT_ID=PARENT_ID
'ORACLE 복습 & 정리' 카테고리의 다른 글
[ORACLE] INDEX 221130-03 (0) | 2022.11.30 |
---|---|
[ORACLE] SEQUENCE,동의어 221130-02 (0) | 2022.11.30 |
[ORACLE] VIEW 221130-01 (0) | 2022.11.30 |
[ORACLE] 집합연산자 221129-02 (0) | 2022.11.29 |
[ORACLE] DML명령과 서브쿼리 221129-01 (0) | 2022.11.29 |