728x90
728x90

* 이 글은 제가 공부하기 위해 최대한 사실에 입각해 내용을 적으려고 하지만 일부 내용들이 정확하지 않을 수 있습니다.

   혹시나 잘못된 부분이 있으면 너그럽게 이해해주시고 피드백 부탁드려요!


더보기

계층적 질의문은 오라클 전용 문법에 해당하므로 오라클 외에 DB를 사용하게 되면 크게 중요한 내용은 아니지만 배워두면 사용하기 편할 듯 합니다.

1. 계층적 질의문의 개념

계층적 질의문

• 계층적 질의문

  – 관계형 데이터 베이스 모델은 평면적인 2차원 테이블 구조
  – 관계형 데이터 베이스에서 데이터갂의 부모 관계를 표현할 수 있는 칼럼을 지정하여

     계층적인 관계를 표현
  – 하나의 테이블에서 계층적인 구조를 표현하는 관계를 순환관계(recursive relationship)
  – 계층적인 데이터를 저장한 칼럼으로부터 데이터를 검색하여 계층적으로 출력 기능 제공

 

계층적 질의문 개념도

2. 계층적 질의문의 사용법

계층적 질의문 사용법

• 사용법

  – SELECT 명령에서 START WITH와 CONNECT BY 절을 이용
  – 계층적 질의문에서는 계층적인 출력 형식과 시작 위치 제어
  – 출력 형식은 top-down 또는 bottom-up
     참고) CONNECT BY PRIOR 및 START WITH절은 ANSI SQL 표준이 아님

☞ 사 용 법


• LEVEL : 계층적 질의문에서 검색된 결과에 대해 계층별로 레벨 번호 표시, 루트 노드는 1, 하위 레벨로

                갈수록 1씩 증가.
• START WITH : 계층적인 출력 형식을 표현하기 위한 최상위 행
• CONNECT BY prior : 계층 관계의 데이터를 지정하는 칼럼

 

LEVEL 의사 열을 사용하여 순위결정

• LEVEL 의사 열

 

계층 구조의 출력 형태

☞ 계층 구조의 출력 형태

계층적 질의문 예 – top down 방식

☞ 사 용 예


계층적 질의문을 사용하여 부서 테이블에서 학과, 학부, 단과대학을 검색하여 단대, 학부, 학과순으로 top-down 형식의 계층 구조로 출력하여라. 단, 시작 데이터는 10번 부서이다.

 

계층적 질의문 예 – bottom up 방식

☞ 사 용 예

계층적 질의문을 사용하여 부서 테이블에서 학과, 학부, 단과대학을 검색하여 학과, 학부, 단대 순으로 bottom-up 형식의 계층 구조로 출력하여라. 단, 시작 데이터는 102번 부서이다.

 

계층적 질의문 예 – 레벨별 구분

☞ 사 용 예

계층적 질의문을 사용하여 부서 테이블에서 부서 이름을 검색하여 단대, 학부, 학과순의 top-down 형식으로 출력하여라. 단, 시작 데이터는 ‘공과대학’이고, 각 레벨별로 우측으로 2칸 이동하여 출력하여라.

 

계층 구조에서 가지 제거 방법

• 계층 구조에서 가지 제거 방법

  – 계층적 질의문에서 WHERE 절이나 CONNECT BY 절을 이용하여 계층 구조의 일부를 제거하고

     나머지 출력
  – WHERE절은 임의의 가지를 삭제
  – CONNECT BY절은 임의의 가지와 자식 노드까지 동시 삭제

계층구조에서 가지 제거 방법 예 1

☞ 사 용 예

계층적 질의문을 사용하여 부서 테이블에서 dname 칼럼을 단대, 학부, 학과순으로 top-down 형식의 계층

구조로 출력하여라. 단, ‘정보미디어학부’를 제외하고 출력하여라.

계층구조에서 가지 제거 방법 예 2

☞ 사 용 예

계층적 질의문을 사용하여 부서 테이블에서 dname 칼럼을 단대, 학부, 학과순으로 top-down 형식의 계층

구조로 출력하여라. 단, ‘정보미디어학부’와 ‘정보미디어학부’에 속한 모든 학과를 제외하고 출력하여라.

 

728x90
300x250