본문 바로가기
자격증/SQLD

[#SQLD] 제 3절 계층형 질의와 셀프 조인

by dopal2 2023. 3. 2.
반응형

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절에 동일한 테이블이 두 번 이상 나타난다.

반응형

댓글