7.7. Списки VALUES#

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, за которым следуют списки выражений, рассматривается как эквивалент:

SELECT select_list FROM table_expression

и может появляться в любом месте, где может быть SELECT. Например, вы можете использовать его как часть UNION или присоединить sort_specification (ORDER BY, LIMIT и/или OFFSET) к нему. VALUES наиболее часто используется в качестве источника данных в команде INSERT, а затем как подзапрос.

Для получения дополнительной информации см. VALUES.