제 3절 계층형 질의와 셀프 조인
1. 계층형 질의
: 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해서 사용
가. Oracle 계층형 정의
SELECT … FROM 테이블 WHERE condition AND condition … START WITH condition CONNECT BY [NOCYCLE] condition AND condition [ORDER SIBLINGS BY column, column, ……….] |
* 계층형 질의구문
- START WITH : 계층 구조 전개의 시작 위치를 지정하는 구문, 루트데이터를 지정(액세스)
- CONNECT BY : 다음에 전개될 자식 데이터를 지정하는 구문
- PRIOR : CONNECT BY에 사용, 현재 읽은 칼럼을 지정 PRIOR 자식=부모 형태를 사용하면 계층구조에서 자식데이터에서 부모데이터 방향으로(자식->부모) 전개하는 순방향 전개한다. 반대일때 부모데이터에서 자식데이터 방향(부모->자식)인 역방향 전개를 한다.
- NOCYCLE : 동일한 데이터가 전개하지 않는다.
- ORDER SIBLINGS BY : 형제 노드 사이에서 정렬을 수행
- WHERE : 모든 전개를 수행한 후에 지정된 조건을 만족하는 데이터만 추출(필터링)
* 계층형 질의에서 사용되는 가상칼럼
- LEVEL : 루트 데이터이면 1, 그 하위 데이터이면 2이다. 리프 데이터까지 1씩 증가한다.
- CONNECT_BY_ISLEAF : 전개과정에서 해당 데이터가 리프 데이터이면 1, 그렇지 않으면 0이다.
- CONNECT_BY_ISCYCLE : 전개과정에서 자식을 갖는데, 해당 데이터가 조상으로서 존재하면 1, 그렇지 않으면 0이다. 여기서 조상이란 자신으로부터 루트까지의 경로에 존재하는 데이터, CYCLE옵션을 사용했을 때 만 사용가능.
* 계층형 질의에서 사용되는 함수
- SYS_CONNECT_BY_PATH : 루트 데이터부터 현재 전개할 데이터까지의 경로를 표시한다.
사용법 : SYS_CONNECT_BY_PATH (칼럼, 경로분리자)
- CONNECT_BY_ROOT : 현재 전개할 데이터의 루트 데이터를 표시 단일항 연산자이다.
사용법 : CONNECT_BY_ROOT 칼럼
2. 셀프 조인
: 동일한 테이블 사이의 조인, 동일한 테이블 사이의 조인을 수행하면 테이블과 칼럼이 모두 동일하기 때문에 별칭(ALAIS)를 사용해야한다. FROM절에 동일한 테이블이 두 번 이상 나타난다.
'자격증 > SQLD' 카테고리의 다른 글
[#SQLD] 제 5절 그룹함수(GROUP 함수) (0) | 2023.03.09 |
---|---|
[#SQLD] 제 4절 서브쿼리 (0) | 2023.03.03 |
[#SQLD] 제 2절 집합연산자 (SET OPERATOR) (0) | 2023.03.02 |
[#SQLD] 제 1절 표준조인(STANDARD JOIN) (0) | 2023.02.27 |
[#SQLD] 제 9절 조인(JOIN) (0) | 2023.02.27 |
댓글