계층형 질의와 셀프 조인

2023. 10. 25. 01:06BOOKS/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