Felles tabelluttrykk

Et felles tabelluttrykk[1] (CTE, common table expression) i SQL-databaser er et uttrykk som definerer en resultattabell med et navn, og er et alternativ til delspørringer, visninger og brukerdefinerte funksjoner.

En CTE gir en navngitt resultatmengde som eksisterer midlertidig, utledet fra en enkel spørring og definert under kjøringen av et SELECT, INSERT, UPDATE eller DELETE-uttrykk, og bare for bruk innenfor en større (ytre?[klargjør]) spørring. Det er et kraftig verkøy i SQL som kan forenkle spørringer ved at de kan deles i mindre komponenter. De gjør det mulig å referere til en spørring flere ganger uten å gjenta kode. Siden CTE-er er navngitte kan de gjøre det lettere for leseren hva et uttrykk er ment å returnere. En CTE lagrer resultatet midlertidig i minnet slik at det kan brukes av spørringer som refererer til den.[2]

Støtte

Felles tabelluttrykk støttes av blant annet databasene DB2, Firebird, Microsoft SQL Server, Oracle og PostgreSQL.

Syntaks

Syntaksen for et felles tabelluttrykk er på formen:

WITH [RECURSIVE] expression_with [, ...]
SELECT...

hvor expression_with skal være:

identification_name [ (column_name [,...]) ] AS (SELECT ...)

Semikolon

Det er veldig vanlig å starte et felles tabelluttrykk med et semikolon, altså

;WITH ...

, ettersom WITH kan brukes i andre typer uttrykk (eksempelvis

; ... FROM ... WITH (NOLOCK) ...

eller

; RESTORE ... WITH MOVE ...

), samt at semikolon er valgfritt i Microsoft SQL Server.

Referanser

  1. ^ «DB2-ordliste». www.ibm.com (norsk). Besøkt 19. mai 2023. 
  2. ^ Myrianthous, Giorgos (28. november 2022). «What are CTEs in SQL». Medium (engelsk). Besøkt 22. mai 2023. 
  • v
  • d
  • r
SQL (ISO/IEC 9075)
Versjoner
  • SEQUEL
  • SQL-86
  • SQL-89
  • SQL-92
  • SQL:1999
  • SQL:2003
  • SQL:2006
  • SQL:2008
  • SQL:2011
  • SQL:2016
  • SQL:2023
Nøkkelord
  • As
  • Case
  • Create
  • Delete
  • Drop
  • From
  • Group by
  • Having
  • Insert
  • Join
  • Merge
  • Null
  • Order by
  • Over
  • Prepare
  • Select
  • Truncate
  • Mengdeoperasjoner
  • Union
  • Update
  • Where
  • With
Relatert
  • Wikibook SQL
ISO/IEC SQL-deler
  • Rammeverk
  • Grunnlag
  • Kallnivå-grensesnitt
  • Vedvarende lagrede moduler
  • Håndtering av eksterne data
  • Objektspråk-bindinger
  • Informasjons- og definisjonsskjemaer
  • SQL-rutiner og typer for programmeringsspråket Java
  • XML-relaterte spesifikasjoner