* 이 글은 제가 공부하기 위해 최대한 사실에 입각해 내용을 적으려고 하지만 일부 내용들이 정확하지 않을 수 있습니다.
혹시나 잘못된 부분이 있으면 너그럽게 이해해주시고 피드백 부탁드려요!
계층적 질의문은 오라클 전용 문법에 해당하므로 오라클 외에 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 형식의 계층
구조로 출력하여라. 단, ‘정보미디어학부’와 ‘정보미디어학부’에 속한 모든 학과를 제외하고 출력하여라.
'SQL > 데이터베이스' 카테고리의 다른 글
Azure Data Studio - 테마(Theme) 적용하기, 글꼴 적용 (0) | 2024.04.22 |
---|---|
[풀스택과정] 데이터베이스 14. 사용자 권한 제어 (0) | 2023.02.26 |
[풀스택과정] 데이터베이스 13. 뷰 (0) | 2023.02.09 |
[풀스택과정] 데이터베이스 12. 인덱스 관리 (0) | 2023.02.09 |
[풀스택과정] 데이터베이스 11. 데이터 무결성 (0) | 2023.02.09 |