1. 계층형 질의란? (트리구조)
= 테이블에 계층형 데이터가 존재할 경우, 데이터를 조회하기 위해 사용한다
2. 계층형 질의 문법(순방향) - 위-> 아래로 진행
SELECT *
FROM 테이블명
WHERE 조건
START WITH 구조 전개의 시작위치
CONNECT BY [NOCYCLE] 각 행들의 연결 조건(조인)
[ORDER SIBBLING BY 컬럼1, 컬럼2...]
-> 주어진 조건을 만족해야한다
* PRIOR : CONNECT BY절에 사용하며 현재 읽은 칼럼을 지정한다
PRIOR 자식 = 부모 -> 순방향PRIOR 부모 = 자식 -> 역방향
* NOCYCLE : 데이터 전개시 동일한 데이터가 전개 중 다시 나타나면 런타임 오류가 나타나므로 NOCYCLE 추가하여 사이클 발생후 데이터를 전개하지 않는다
* WHERE : 필터링
* SIBBLING BY : 같은 동일한 LEVEL 사이에 정렬을 한다.
EX) SELECT LEVEL, EMPNO, ENAME, MGR, JOB
FROM EMP
START WITH JOB = 'PRESIDENT'
CONNECT BY PRIOR EMPNO = MGR AND LEVEL <= 3;
3. 가상칼럼 종류
1) LEVEL
= 트리구조에서 계급처럼 나누어지는 번호로 상위단계와 이 상위단계에 속해 있는 하위컬럼을 번호순으로 보여준다
2) CONNECT BY ISLEAF
= 자식 로우가 있는지 없는지 여부를 체크해주는 함수. 자식노드가 있으면 0, 아니면 1
3) CONNECT BY ISCYCLE
= 계층형 로우가 부모 노드를 찾을 시 사용하는 함수. 중복참조하여 자식 노드가 있으면 1, 아니면 0
EX)
3. 계층형 질의 문법(역방향) 아래에서 위로
1) SYS_CONNECT_BY_PATH
= 현재 로우까지 PATH정보를 쉽게 얻을 수 있다
EX) SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno,
SYS_CONNECT_BY_PATH(ename, '/') "PATH"
FROM emp
START WITH job='PRESIDENT'
CONNECT BY PRIOR empno=mgr;
2) CONNECT_BY_ROOT
= LEVEL이 0인 최상위 로우의 정보를 얻어 올 수 있다
4. order by 차이점
'DB 이야기' 카테고리의 다른 글
디비이야기 25. PL/SQL(절차형 SQL) (0) | 2020.03.29 |
---|---|
디비 이야기 25. 그룹함수 (0) | 2020.03.16 |
디비 이야기 23. 트랜젝션 (0) | 2020.03.11 |
디비 이야기 22. 데이터 무결성 (0) | 2020.03.11 |
디비이야기 21. MERGE문 (0) | 2020.03.11 |