이 글에서 꼭 잡아야 할 것
오라클은 트리 구조 데이터를 위한 계층형 질의 문법을 제공한다. 조직도, 카테고리 트리, 부모-자식 관계를 SQL 한 문장으로 풀 수 있다는 점이 큰 장점이다.
일반 조인은 한 단계 연결에 강하지만, 계층형 질의는 같은 관계를 연속적으로 따라 내려가거나 올라가는 데 강하다. 조직도나 게시판 답글 구조처럼 자기 참조 테이블이 등장할 때 오라클의 CONNECT BY 문법을 읽을 수 있으면 매우 강력하다.
개념 지도와 이해 포인트
대표 문법 패턴
SELECT employee_id,
last_name,
manager_id,
LEVEL
FROM employees
START WITH manager_id IS NULL
CONNECT BY PRIOR employee_id = manager_id
ORDER SIBLINGS BY last_name;
문법 읽는 포인트
- `START WITH`는 루트 행을 정한다.
- `CONNECT BY PRIOR 부모 = 자식` 형태를 방향과 함께 기억하자.
- `LEVEL`은 계층 깊이를 나타낸다.
핵심 용어
- CONNECT BY
- LEVEL
- PRIOR
조직도 형태로 직원 구조 보기
계층형 질의는 한 줄씩 읽기보다 루트에서 자식으로 내려가는 그림을 먼저 떠올리면 훨씬 쉽다. LEVEL 값과 PRIOR 방향만 정확히 잡아도 구조를 빠르게 해석할 수 있다.
SELECT LPAD(' ', (LEVEL - 1) * 2) || last_name AS org_name,
employee_id,
manager_id,
LEVEL
FROM employees
START WITH manager_id IS NULL
CONNECT BY PRIOR employee_id = manager_id
ORDER SIBLINGS BY last_name;
수험 체크포인트와 자주 하는 실수
시험 체크포인트
- CONNECT BY에서 PRIOR가 붙는 위치에 따라 부모-자식 방향이 달라진다.
- LEVEL은 루트가 1부터 시작한다는 점을 기억하자.
- 계층형 질의는 오라클 특화 문법이므로 기본 패턴을 통째로 익혀 두는 편이 좋다.
자주 하는 실수
- PRIOR 방향을 반대로 읽는 실수
- 루트 조건 없이 CONNECT BY만 보고 전체 구조를 이해하려는 실수
- 일반 조인과 계층형 질의의 목적 차이를 구분하지 못하는 실수
연결 학습
트리 구조 문법까지 이해했다면 고급 질의 감각이 많이 올라온 상태다. 다음 챕터에서는 PIVOT, UNPIVOT, WITH절 같은 변형 문법을 정리한다.
댓글 0
작성자 이름과 댓글 내용을 입력하면 바로 등록됩니다. 답글은 한 단계까지 지원하고, 댓글은 최대 200자까지 작성할 수 있습니다.
같은 카테고리에서 이어서 읽기
지금 읽은 글과 가까운 흐름의 글 5개를 모아 두었습니다. 바로 앞뒤 문맥을 이어서 읽고 싶을 때 가장 편합니다.
CASE와 DECODE로 조건 분기하기
조건 분기는 데이터를 사람이 읽기 좋은 형태로 바꾸는 핵심 기술이다. 표준 SQL의 CASE와 오라클 고유 함수 DECODE를 함께 익히면 문제 해석 폭이 넓어진다.
분석 함수 기초: OVER와 PARTITION BY
분석 함수는 행을 줄이지 않고도 집계 결과를 각 행에 함께 보여준다. OVER 절과 PARTITION BY를 이해하면 집계와 분석의 차이가 선명해진다.
순위 함수: ROW_NUMBER, RANK, DENSE_RANK
순위 함수는 정렬된 데이터에 순서를 매긴다. 같은 값이 나왔을 때 번호가 어떻게 붙는지 이해하면 상위 N건 문제와 동점 처리 문제를 확실히 잡을 수 있다.
PIVOT, UNPIVOT, WITH절 활용
데이터 형태를 회전시키거나 중간 결과를 이름 붙여 재사용하면 복잡한 SQL도 훨씬 읽기 쉬워진다. PIVOT, UNPIVOT, WITH절은 보고서형 SQL에서 특히 빛나는 도구다.
DDL 기초: CREATE, ALTER, DROP, TRUNCATE
DDL은 데이터 구조를 정의하고 바꾸는 문법이다. 테이블과 컬럼을 만드는 CREATE, 구조를 바꾸는 ALTER, 제거하는 DROP과 TRUNCATE를 정확히 구분해야 한다.
댓글을 불러오는 중입니다.