# Work/Data

[SQLD] 계층형 질의 : SQL 기본 및 활용 / SQL 활용

im-jamie 2023. 2. 20. 21:53

SQLD 시험 내용
(a) 데이터 모델링의 이해 (출제 비중 20% : 10문제, 20점)
- 데이터 모델링의 이해 : 데이터모델의 이해 / 엔터티 / 속성 / 관계 / 식별자
- 데이터 모델과 성능 : 정규화와 성능 / 반정규화와 성능 / 대용량 데이터에 따른 성능 / DB 구조와 성능 / 분산 DB 데이터에 따른 성능
(b) SQL 기본 및 활용 (출제 비중 80% : 40문제, 80점)
- SQL 기본 : 정보 요구 사항 / DDL / DML / TCL / WHERE / FUNCTION / GROUP BY, HAVING / ORDER BY / JOIN
- SQL 활용 : 표준 조인 / 집합 연산자 / 계층형 질의 / 서브쿼리 / 그룹함수 / 윈도우 함수 / DCL / 절차형 SQL
- SQL 최적화 기본 원리 : 옵티마이저와 실행 계획 / 인덱스 기본 / 조인 수행 원리


1. 계층형 질의와 셀프 조인

- 계층형 쿼리 : 테이블에 계층형 데이터가 존재하는 경우, 계층형 쿼리를 사용하면 계층 정보와 함께 데이터 조회 가능

* 계층형 데이터란 데이터 간에 상하위 관계(부모-자식)을 가진 데이터를 말한다

계층형 데이터를 가지도록 설계된 모델을 순환 관계 데이터 모델이라고 한다. (ex. 조직도, 제품군, 메뉴트리)

 

- 순환 관계 데이터 모델 : 계층형 데이터를 가지도록 설계된 모델을 순환 관계 데이터 모델이라고 한다.

 

- 셀프 조인(JOIN) : 동일한 테이블을 조인하는 것

SELECT a.empno, a.mgr, b.ename
FROM emp a, emp b
WHERE a.mgr is null
and b.mgr = a.mgr

- 계층형 쿼리 : START WITH절과 CONNECT BY절은 WHERE절과 GROUP BY절 사이에 기술한다.

START WITH : 루트 노드를 생성하기 위한 조건을 기술

CONNECT BY : 루트 노드의 하위 노드를 생성하기 위한 조건 기술

WHERE 조건
START WITH a.mgr is NULL
CONNECT BY a.mgr = PRIOR a.empno;

--PRIOR : 바로 직전에 구한

동작 원리 

1) START WITH절을 수행하여 루트 노드 생성한 후

2) CONNECT BY 절의 결과가 없을 때까지 부모 노드의 결과로 CONNECT BY절 (JOIN)을 반복 수행

순방향 전개 : 부모 노드 -> 자식 노드 

역방향 전개 : 자식 노드 -> 부모 노드

 

분기 제거 (branch) : 중간 노드에 해당하는 행이 제외되면, 그 하위 노드들도 모두 결과에서 제거된다.

노드 제거 (node) : 조건을 만족하지 않는 특정 노드만 결과에서 제외될 뿐 그 하위 노드는 무관하다.