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 sollten in allen Zeilen vom selben Typ sein3 – genau wie bei union.
VALUES [ROW]('Zeile 1 Spalte 1', 'Zeile 1 Spalte 2')
, [ROW]('Zeile 2 Spalte 1', 'Zeile 2 Spalte 2')Das optionale Schlüsselwort Row wird nicht auf breiter Basis unterstützt, wird jedoch von manchen Produkten benötigt (siehe Kompatibilität).
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
- Nur ohne Schlüsselwort
row - Nur mit Schlüsselwort
row:values row('r1c1','r1c2'), row('r2c1', 'r2c2') - Erfordert Spaltennamen in der
With-Klausel:with x (c1,c2) as (values …)• Nur ohne Schlüsselwortrow - Kein Zugriff auf Spalten möglich • Nur ohne Schlüsselwort
row

