VALUES #
VALUES proporciona uma maneira de gerar uma
“tabela de constantes” que pode ser usada em uma consulta
sem ter que realmente criar e preencher uma tabela em disco.
A sintaxe é:
VALUES ( expressão [, ...] ) [, ...]
Cada lista de expressões entre parênteses gera uma linha na tabela.
Todas as listas devem ter o mesmo número de elementos (ou seja, o
número de colunas na tabela), e as entradas correspondentes em cada
lista devem ter tipos de dados compatíveis. Os tipos de dados reais
atribuídos a cada coluna do resultado é determinado usando as mesmas
regras que para UNION
(veja a Seção 10.5).
Como exemplo:
VALUES (1, 'one'), (2, 'two'), (3, 'three');
retorna uma tabela com duas colunas e três linhas. É de fato equivalente a:
SELECT 1 AS column1, 'one' AS column2 UNION ALL SELECT 2, 'two' UNION ALL SELECT 3, 'three';
Por padrão, o PostgreSQL atribui os nomes
column1, column2, etc.
para as colunas da tabela VALUES.
Os nomes das colunas não são especificados pelo padrão
SQL, então diferentes sistemas de banco de dados
fazem isto de maneira diferente, portanto é geralmente melhor
substituir os nomes padrão por uma lista de alias de tabela, assim:
=> SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')) AS t (num,letter); num | letter -----+-------- 1 | one 2 | two 3 | three (3 linhas)
Sintaticamente, VALUES seguido por listas de
expressões é tratado como equivalente a
SELECTlista_de_seleçãoFROMexpressão_de_tabela
e pode aparecer em qualquer lugar onde o SELECT possa aparecer.
Por exemplo, pode ser usado como parte de uma UNION,
ou pode ser anexada uma especificação_de_ordenação
(ORDER BY, LIMIT e/ou
OFFSET) a ele.
VALUES é mais comumente usado como fonte de dados
em um comando INSERT,
e o próximo mais comum como uma subconsulta.
Para obter mais informações veja VALUES.