Study/SQLD

2-2장 SQL 활용 - 3절 계층형 질의와 셀프 조인

tnddj1219 2022. 6. 30. 02:29
728x90

1. 계층형 질의

개념
계층형 데이터를 조회하기 위해 사용.
계층형 데이터: 동일 테이블에서 계층적으로 상위와 하위 데이터가 포함된 데이터. 엔터티를 순한관계 데이터 모델로 설계할 경우, 계층형 데이터가 발생한다.(ex. 조직, 사원, 메뉴)
샘플 데이터: 계층형 구조를 데이터로 표현한 것

 

Oracle 계층형 질의

START WITH : 계층 구조 전개의 시작 위치를 지정하는 구문. 루트 데이터를 지정한다.
CONNECT BY
: 다음에 전개될 자식 데이터를 지정하는 구문. 자식 데이터는 CONNECT BY 절에 주어진 조건을 만족해야 한다.(조인 조건 지정)
- LEVEL :
검색 항목의 깊이, 루트데이터면 1, 하위데이터면 2
- CONNECT_BY_ROOT :
최상위 계층 값 표시
- CONNECT_BY_ISLEAF :
최하위 계층 값 표시
- SYS_CONNECT_BY_PATH :
계층 구조의 전개 경로 표시
PRIOR: CONNECT BY
절에 사용되며, 현재 읽은 칼럼을 지정한다.
- PRIOR
자식=부모: 계층 구조에서 자식 데이터에서 부모 데이터 방향으로 순방향을 전개(자식부모)
- PRIOR
부모=자식: 역방향 전개(부모자식)
CONNECT BY
절의 루프 알고리즘 키워드
- NOCYCLE :
순환구조의 발생지점까지만 전개
- CONNECT_BY_ISCYCLE :
순환구조 발생지점 표시 (부모 노드와 자식 노드가 같을 때 1 아니면 0 출력)
ORDER SIBLINGS BY:
형제 노드 사이에서 정렬을 수행한다. (동일 LEVEL)
WHERE:
모든 전개를 수행 후 지정된 조건을 만족하는 데이터만 추출한다. (필터링)
LPAD :
계층형 조회 결과를 명확히 하기 위해 사용 (LEVEL 값을 이용하여 결과 데이터 정렬)

 

계층형 질의에 대한 논리적인 실행 모습

순방향일 경우 역방향일 경우

* SQL Server 계층형 질의: CTE(Common Table Expression)로 재귀 호출

 

2. 셀프 조인

셀프 조인이란, 동일 테이블 사이의 조인을 말한다. FROM 절에 동일 테이블이 두 번 이상 나타난다.
동일 테이블 사이의 조인을 수행하면 테이블과 칼럼 이름이 모두 동일해서, 식별을 위해 반드시 테이블 별칭을 사용해야 한다. 칼럼에도 모두 테이블 별칭을 사용해서, 어느 테이블의 칼럼인지 식별해줘야 한다

728x90