values — Zeilen aus dem Nichts erschaffen


Das Schlüsselwort values ist vermutlich so alt wie SQL selbst und aufgrund seiner Verwendung bei insert allseits bekannt. Das ist jedoch nur die Funktionalität, die vom SQL-92 Einstiegslevel gefordert wird. Mit vollem SQL-920 hat values weitreichendere Funktionen: Es ist überall gültig, wo auch select gültig ist, und kann mehrere Zeilen erzeugen.

Verwendung mit vollem SQL-92

Mit vollem SQL-92 folgt auf values im allgemeinen1 eine kommaseparierte Liste von Zeilen, die jeweils eine in Klammern gesetzte Spalten-Liste enthalten. Dabei muss jede Zeile dieselbe Anzahl an Spalten2 haben und die entsprechenden Spalten müssen in allen Zeilen vom selben Typ sein3 – genau wie bei union.

VALUES ('Zeile 1 Spalte 1', 'Zeile 1 Spalte 2')
     , ('Zeile 2 Spalte 1', 'Zeile 2 Spalte 2')

Das Ergebnis dieses Beispieles ist eine 2×2 Tabelle, deren Werte wie in den Texten angegeben angeordnet sind. Die Spalten-Namen sind implementationsabhängig können aber in ein from-Klausel umbenannt werden.

Dieses Beispiel kann überall eingesetzt werden, wo auch select erlaubt ist4. Das ist, um Daten an insert zu übergeben (mehrere Zeilen), in Unterabfragen, und sogar als eigenständige Anweisung.

Anwendungsfälle

Kompatibilität

Über den Autor

Foto von Markus Winand

Markus Winand lehrt effizientes SQL – inhouse und online. Er minimiert die Entwicklungszeit durch modernes SQL und optimiert die Laufzeit durch schlaue Indizierung – dazu hat er auch das Buch SQL Performance Explained veröffentlicht.

Kaufen Sie sein Buch bei Amazon

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Bei Amazon kaufen
(Taschenbuch)

Taschenbuch und PDF auch auf Markus' Webseite erhältlich.

Holen Sie sich Markus

…für ein Training ins Büro.

Sein beliebtes Training stimmt Entwickler auf SQL Performance ein.

Erfahren Sie mehr»

Fußnoten

  1. Feature F641, “row and table constructors”, in späteren Standards.

  2. <row value special case> wir hier bewusst vernachlässigt.

  3. SQL-92, §7.2, Syntax Rule 1; SQL:2016, Part 2, §7.3, Syntax Rule 1

  4. SQL-92, §7.2, General Rule 1. Spätere Standards erlauben Konvertierungen (siehe SQL:2016, Part 2, §7.3, Syntax Rule 4 welche auf §9.5 verweist).

  5. Sowohl values als auch select werden aus <simple table> referenziert.

„modern SQL“ von Markus Winand ist unter einer Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License lizenziert.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz | CC-BY-NC-ND 3.0 Lizenz