7.7. Списки VALUES#
7.7. Списки VALUES
#
VALUES
предоставляет способ создания “константной таблицы”,
которая может быть использована в запросе без необходимости создания и заполнения
таблицы на диске. Синтаксис такой
VALUES ( expression
[, ...] ) [, ...]
Каждый список выражений в скобках генерирует строку в таблице.
Все списки должны иметь одинаковое количество элементов (т.е. количество
столбцов в таблице), и соответствующие записи в каждом списке должны
иметь совместимые типы данных. Фактический тип данных, назначаемый каждому столбцу
результата, определяется с использованием тех же правил, что и для 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';
По умолчанию, Tantor BE назначает имена column1
, column2
и т. д. столбцам таблицы VALUES
. Имена столбцов не указываются в стандарте 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
, за которым следуют списки выражений, рассматривается как эквивалент:
SELECTselect_list
FROMtable_expression
и может появляться в любом месте, где может быть SELECT
. Например, вы можете использовать его как часть UNION
или присоединить sort_specification
(ORDER BY
, LIMIT
и/или OFFSET
) к нему. VALUES
наиболее часто используется в качестве источника данных в команде INSERT
, а затем как подзапрос.
Для получения дополнительной информации см. VALUES.