안녕하세요. 오랜만에 SQL에 대하여 포스팅하게 되었습니다.
오늘은 SQL에서 반복적인 사용을 가능케 하는 CTE with문에 대해서 알아보겠습니다.
CTE (Common Table Expressions)
▣ CTE란?
CTE(Common Table Expressions)는 단일 문의 범위 내에 존재하고 나중에 해당 문 내에서 여러 번 참조할 수 있는 명명된 임시 결과 집합
참조사이트 : https://dev.mysql.com/doc/refman/8.0/en/with.html#common-table-expressions-recursive
* 서브 쿼리에서 스스로를 참조하는 재귀적 CTE, 단순 쿼리에서 파생되며 SELECT 문 등 하나의 범위 내에서 정의 가능
※ 쉽게 말해서 계속해서 사용할 수 있는 가상의 테이블이라고 생각하면 됩니다.
반응형
MySQL With문
▣ 가상 테이블 만들기
## 가상테이블 만들기 ##
WITH 가상테이블명 AS
(
SELECT 쿼리
UNION ALL -- 뭐 붙이거나 할 경우 추가
SELECT 쿼리
)
- 2개 이상의 가상 테이블을 만들 경우에는 ,로 추가해주면 됩니다.
## 2개 이상의 가상 테이블 ##
WITH
가상1 AS ( 서브쿼리문 ),
가상2 AS ( 서브쿼리문 )
## 실제 사용 ##
SELECT 컬럼, [컬럼, ...] FROM 가상1, 가상2
물론 굳이 가상 테이블을 With문으로 만들 필요는 없습니다. From으로 테이블을 가져올 때 애초에 서브쿼리문을 활용하면 되기 때문입니다.
Select [컬럼],....
FROM (서브쿼리문...)
WHERE 조건...
하지만, With문을 활용하였을 때 해당 SQL 환경에서 임시로 재사용이 가능하다는 장점을 가지고 있어 사용자 입장에서는 편리합니다. DDL문으로 SQL에 실제 테이블을 생성하는 것이 아니라 그렇게 효율적인 방법은 아니지만 임시로 사용할 때는 충분히 유용하기에 자신에게 잘 맞는 방법을 활용하시기 바랍니다.
반응형
'Programming > SQL' 카테고리의 다른 글
[MySQL] 수학함수 다루기 (0) | 2022.01.17 |
---|---|
[MySQL] View 다루기 (Create, Replace, Drop) (0) | 2021.12.05 |
[MySQL] 날짜 비교 및 차이 구하기 (1) | 2021.09.22 |
[MySQL] 문자열 함수 정리 (0) | 2021.09.12 |
MySQL Workbench 설치 (Windows) (2) | 2021.08.29 |
댓글