11.1.1 CTE란
CTE는 Common Table Expression의 약자로, 우리말로 공통 테이블 표현식이라고 합니다. CTE라고도 하고 WITH 절이라고도 하는데, 이유는 CTE 구문이 WITH로 시작되기 때문입니다. CTE 기본 구문은 다음과 같습니다.
구문 11-1
WITH cte1 AS (SELECT ... FROM ...),
cte2 AS (SELECT ... FROM ...),
...
SELECT ...
FROM cte1, cte2, ...
WHERE ...
구문을 보면 WITH 다음에 소괄호로 둘러싸인 서브쿼리가 여러 개 있고 그 아래 SELECT 문이 있습니다. cte1 AS (SELECT ... FROM ...)에서 cte1은 AS 다음에 오는 서브쿼리에 대한 별칭이고, cte2도 마찬가지입니다. 이런 식으로 WITH 절을 맨 처음 기술하고 별칭 AS 서브쿼리 형태로 여러 개의 서브쿼리를 정의합니다. 그리고 메인쿼리인 마지막 SELECT 문의 FROM 절에서 서브쿼리를 사용하는 형태입니다.
메인쿼리에서는 다른 테이블을 참조할 수도 있고, CTE로 정의한 서브쿼리와 조인할 수도 있습니다. 이런 점은 서브쿼리 중 파생 테이블과 비슷합니다. 그런데 파생 테이블은 메인쿼리의 FROM 절에 서브쿼리 전체를 정의하지만, CTE는 메인쿼리 앞에 WITH 절과 함께 서브쿼리를 정의한 후 메인쿼리에서 각 서브쿼리의 별칭을 명시해 사용합니다.