계층형 질의와 셀프 조인
2023. 10. 25. 01:06ㆍBOOKS/SQL 전문가 가이드
SQL 전문가 가이드
SQL 전문가 가이드는 SQL 자격검정 대비 수험서로 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 최적의 성능을 발휘할 수 있도록 SQL을 작성하고 데이터베이스 프로그램이나 응용 소프트웨어의 성능을 최적화하고 데이터베이스 개체의 설계와 구현을 위해 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등의 실무가이드로 구성되어 있다.
- 저자
- 한국데이터산업진흥원
- 출판
- 한국데이터산업진흥원
- 출판일
- 2021.03.15
계층형 질의와 셀프 조인
- 계층형 데이터 : 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터
- 엔터티를 순환 관계 데이터 모델로 설계할 경우 계층형 데이터 발생
- 순환 관계 데이터 모델은 셀프 조인이나 계층형 질의로 조회 가능
셀프 조인
- 동일 테이블 간의 조인
- FROM절에 동일 테이블이 두번 이상 나타나며 식별을 위해 테이블 별칭을 사용해야 함
SELECT ALIAS1.칼럼명, ALIAS2.칼럼명, ...
FROM 테이블명 ALIAS1, 테이블명 ALIAS2
WHERE AlIAS2.칼럼명 = ALIAS1.칼럼명
- 상위 데이터에서 하위 데이터를 조회하면 순방향 전개
- 하위 데이터에서 상위 데이터를 조회하면 역방향 전개
계층형 질의
ORACLE 계층형 질의
SELECT ...
WHERE condition ...
START WITH condition ...
CONNECT BY [NOCYCLE] condition ...
[ORDER SIBLINGS BY column,column,...]
- START WITH : 계층 구조 전개의 시작 위치를 지정 ⇒ 루트 데이터 지정
- CONNECT BY : 다음에 전개될 자식 데이터 지정, 자식 데이터는 CONNECT BY절에 주어진 조건 만족해야함
- PRIOR : CONNECT BY절에 사용되며 현재 읽은 칼럼을 지정
(FK) = PRIOR (PK) : 순방향 전개 (PK) = PRIOR(FK) : 역방향 전개 - NOCYCLE : 데이터를 전개하면서 이미 나타났던 데이터가 다시 나타나는 것을 사이클이 발생했다고하는데 사이클이 발생한 데이터는 런타임 오류를 발생, NOCYCLE을 추가하면 오류 발생시키지 않고 사이클이 발생한 이후의 데이터를 전개하지 않음
- ORDER SIBLINGS BY : 형제 노드(동일 LEVEL) 에서 정렬 수행
- WHERE : 모든 전개를 수행한 후에 지정된 조건을 만족하는 데이터만 추출(필터링)
Oracle 계층형 질의에서 사용되는 가상 칼럼
가상 칼럼 | 설명 |
---|---|
LEVEL | 루트 데이터이면 1, 그 하위 데이터는 리프 데이터까지 1씩 증가 |
CONNECT_BY_ISLEAF | 리프 데이터이면 1, 아니면 0 |
CONNECT_BY_ISCYCLE | 자식을 갖는데 해당 데이터가 조상으로서 존재하면 1, 아니면 0 조상은 자신으로부터 루트까지의 경로에 존재하는 데이터 CYCLE 옵션을 사용했을 때만 사용가능 |
ORACLE 계층형 질의에서 사용되는 함수
함수 | 설명 |
---|---|
SYS_CONNECT_BY_PATH(칼럼, 경로분리자) | 루트 데이터부터 현재 전개할 데이터까지의 경로 표시 |
CONNECT_BY_ROOT 칼럼 | 현재 전개할 데이터의 루트 데이터 표시, 단항 연산자 |
'BOOKS > SQL 전문가 가이드' 카테고리의 다른 글
정규 표현식 (1) | 2023.10.25 |
---|---|
PIVOT절과 UNPIVOT절 (0) | 2023.10.25 |
Top N 쿼리 (1) | 2023.10.25 |
윈도우 함수 (0) | 2023.10.07 |
그룹 함수 (0) | 2023.10.07 |