MariaDB 일반 테이블 표현식(common table expression) 또는 CTE를 사용하여 쿼리를 구성하는 방법을 알아봅니다.
MariaDB 일반 테이블 표현식(common table expression) 또는 CTE 소개
일반 테이블 식 또는 CTE를 사용하면 쿼리 내에서 임시 결과 집합을 만들 수 있습니다.
CTE는 데이터베이스 개체로 저장되지 않고 쿼리 실행 중에만 존재한다는 점에서 파생 테이블과 같습니다.
파생 테이블과 달리 쿼리 내에서 CTE를 여러 번 참조할 수 있습니다.
또한 자체 내에서 CTE를 참조할 수 있습니다.
이 CTE를 재귀 CTE라고 합니다.
CTE(일반 테이블 표현식)은 WITH 절에 정의된 명명된 하위 쿼리입니다.
CTE는 CTE를 정의하는 문에서 사용하기 위한 임시 뷰 로 생각할 수 있습니다.
CTE는 임시 뷰의 이름, 선택 사항 열 이름 목록 및 쿼리 식(즉, SELECT 문)을 정의합니다.
쿼리 식의 결과는 사실상 테이블입니다.
이러한 테이블의 각 열은 열 이름 (선택 사항) 목록의 열에 해당합니다.
복잡한 쿼리를 단순하고 논리적인 여러 빌딩 블록으로 나누어 단순화합니다.
다음은 일반 테이블 표현식의 구문을 보여줍니다.
with cte_name as (
cte_body
)
cte_usage;
이 구문에서:
- 먼저 with와 as 키워드 사이에 CTE의 이름을 지정합니다.
- 둘째, select 문이 될 수 있는 괄호 안에 CTE 본문을 구성합니다.
- 셋째, CTE를 사용하는 문을 지정합니다.
SQL 표준은 1999년에 CTE를 도입했고 MariaDB는 버전 10.2.2부터 이를 구현했습니다.
MariaDB CTE 예제
데모를 위해 샘플 데이터베이스의 테이블 countries 및 country_stats를 사용합니다.
다음 예에서는 CTE를 사용하여 2018년 상위 10대 경제 대국을 반환합니다.
with largest_economies as (
select
country_id, gdp
from country_stats
where year = 2018
order by gdp desc
limit 10
)
select
name, gdp
from countries
inner join largest_economies using (country_id);
이 예에서:
- CTE의 이름은 maximum_economies입니다. CTE 본문에는 2018년에 GDP가 가장 큰 상위 10개 국가를 선택하는 쿼리가 있습니다.
- 외부 쿼리는 국가 이름을 가져오기 위해 국가 테이블을 CTE와 조인합니다.
위의 CTE는 파생 테이블을 사용하는 다음 쿼리와 유사합니다.
select
name, gdp
from (
select
country_id, gdp
from country_stats
where year = 2018
order by gdp desc
limit 10
) t
inner join countries using (country_id);
이상으로 MariaDB 일반 테이블 표현식 또는 CTE를 사용하여 쿼리를 구성하는 방법을 알아봤습니다.
※ 원문출처 : https://www.mariadbtutorial.com/mariadb-basics/mariadb-cte/
'MariaDB SQL' 카테고리의 다른 글
MariaDB Intersect (0) | 2023.06.26 |
---|---|
MariaDB Union (0) | 2023.06.23 |
이벤트 스케줄러 목록조회 (0) | 2023.06.20 |
MariaDB Subqueries (0) | 2023.06.16 |
MariaDB Having (0) | 2023.06.15 |