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.