MariaDB SQL

MariaDB CTE

ssamhago 2023. 6. 21. 19:45
728x90
320x100

MariaDB CTE

 

 

 

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를 사용합니다.

 

샘플 DB

 

다음 예에서는 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/

728x90
반응형

'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