Common Table Expression
MySQL 8.XX 버전부터 사용이 가능한 Common Table Expression 즉 CTE는 복잡한 쿼리를 더 간단하고
읽기 쉽게 작성하는 방법으로, 하나의 쿼리에서 재사용할 수 있는 임시 결과 집합을 정의하는 기능이다.
CTE는 WITH 키워드를 사용하여 정의되며, 정의된 CTE는 쿼리 내에서 테이블처럼 사용된다.
CTE 종류
CTE는 크게 두 가지로 나눌 수 있다.
1. 일반 CTE: 쿼리 실행 시 한 번만 평가되는 임시 결과 집합을 정의
2. 재귀적 CTE: 자기 자신을 참조하여 재귀적으로 데이터를 가져오는 CTE
CTE 예시
일반적인 CTE 예시
WITH EmployeeCTE AS (
SELECT id, name, department_id
FROM employees
WHERE department_id = 1
)
SELECT *
FROM EmployeeCTE;
재귀적 CTE 예시
WITH RECURSIVE EmployeeHierarchy AS (
-- 기저 사례: 최고 관리자의 데이터를 선택
SELECT id, name, manager_id
FROM employees
WHERE manager_id IS NULL
UNION ALL
-- 재귀 단계: 하위 관리자를 찾는 쿼리
SELECT e.id, e.name, e.manager_id
FROM employees e
INNER JOIN EmployeeHierarchy eh
ON e.manager_id = eh.id
)
SELECT * FROM EmployeeHierarchy;
여기서는 WITH RECURSIVE를 사용하여 직원과 그들의 상사를 재귀적으로 연결
CTE의 장점
쿼리 가독성: 복잡한 쿼리를 여러 부분으로 나누어 이해하기 쉽게 만든다.
재사용성: 동일한 서브쿼리를 반복해서 작성할 필요 없이 CTE를 재사용할 수 있다.
재귀 처리: 재귀적으로 데이터를 조회하는 경우 매우 유용
'DataBase > MySQL' 카테고리의 다른 글
[MySQL] 순위 함수 정리 (0) | 2024.09.15 |
---|---|
[MySQL] 자주 사용하는 함수 정리 - Updatable (1) | 2024.09.09 |
[MySQL] 실행 문제 (0) | 2024.05.21 |