7.7. Списки VALUES
#
Предложение VALUES
позволяет создать «постоянную таблицу», которую можно использовать в запросе, не создавая и не наполняя таблицу в БД. Синтаксис предложения:
VALUES ( выражение
[, ...] ) [, ...]
Для каждого списка выражений в скобках создаётся строка таблицы. Все списки должны иметь одинаковое число элементов (т. е. число столбцов в таблице) и соответствующие элементы во всех списках должны иметь совместимые типы данных. Фактический тип данных столбцов результата определяется по тем же правилам, что и для UNION
(см. Раздел 10.5).
Как пример:
VALUES (1, 'one'), (2, 'two'), (3, 'three');
вернёт таблицу из двух столбцов и трёх строк. Это равносильно такому запросу:
SELECT 1 AS column1, 'one' AS column2 UNION ALL SELECT 2, 'two' UNION ALL SELECT 3, 'three';
По умолчанию Postgres Pro назначает столбцам таблицы VALUES
имена column1
, column2
и т. д. Имена столбцов не определены в стандарте SQL и в другой СУБД они могут быть другими, поэтому обычно лучше переопределить имена списком псевдонимов, например так:
=> SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')) AS t (num,letter); num | letter -----+-------- 1 | one 2 | two 3 | three (3 rows)
Синтаксически список VALUES
с набором выражений равнозначен:
SELECTсписок_выборки
FROMтабличное_выражение
и допускается везде, где допустим SELECT
. Например, вы можете использовать его в составе UNION
или добавить к нему определение_сортировки
(ORDER BY
, LIMIT
и/или OFFSET
). VALUES
чаще всего используется как источник данных для команды INSERT
, а также как подзапрос.
За дополнительными сведениями обратитесь к справке VALUES.