VALUES
#
VALUES
fournit une façon de générer une table de
« constantes » qui peut être utilisée dans une requête sans
avoir à réellement créer et peupler une table sur disque. La syntaxe est
VALUES ( expression
[, ...] ) [, ...]
Chaque liste d'expressions entre parenthèses génère une ligne dans la table.
Les listes doivent toutes avoir le même nombre d'éléments (c'est-à-dire une
liste de colonnes dans la table), et les entrées correspondantes dans chaque
liste doivent avoir des types compatibles. Le type réel affecté à chaque colonne
du résultat est déterminé en utilisant les mêmes règles que pour
UNION
(voir Section 10.5).
Voici un exemple :
VALUES (1, 'un'), (2, 'deux'), (3, 'trois');
renverra une table de deux colonnes et trois lignes. C'est équivalent à :
SELECT 1 AS column1, 'un' AS column2 UNION ALL SELECT 2, 'deux' UNION ALL SELECT 3, 'trois';
Par défaut, PostgreSQL affecte les noms
column1
, column2
, etc. aux colonnes
d'une table VALUES
. Les noms des colonnes ne sont pas
spécifiés par le standard SQL et les différents SGBD le font de façon
différente. Donc, il est généralement mieux de surcharger les noms par
défaut avec une liste d'alias, comme ceci :
=> SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')) AS t (num,letter); num | letter -----+-------- 1 | one 2 | two 3 | three (3 rows)
Syntaxiquement, VALUES
suivi par une liste d'expressions
est traité de la même façon que
SELECTliste_select
FROMexpression_table
et peut apparaître partout où un SELECT
le peut. Par
exemple, vous pouvez l'utiliser comme élément d'un UNION
ou y attacher une spécification de tri
(ORDER BY
, LIMIT
et/ou OFFSET
).
VALUES
est habituellement utilisée comme source de données
dans une commande INSERT
command, mais aussi dans une
sous-requête.
Pour plus d'informations, voir VALUES.