

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_selectFROMexpression_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.