SELECT INTO
SELECT INTO â ÑоздаÑÑ ÑаблиÑÑ Ð¸Ð· ÑезÑлÑÑаÑов запÑоÑа
СинÑакÑиÑ
[ WITH [ RECURSIVE ]запÑоÑ_WITH[, ...] ] SELECT [ ALL | DISTINCT [ ON (вÑÑажение[, ...] ) ] ] [ { * |вÑÑажение[ [ AS ]имÑ_ÑезÑлÑÑаÑа] } [, ...] ] INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ]новаÑ_ÑаблиÑа[ FROMÑлеменÑ_FROM[, ...] ] [ WHEREÑÑловие] [ GROUP BYвÑÑажение[, ...] ] [ HAVINGÑÑловие] [ WINDOWимÑ_окнаAS (опÑеделение_окна) [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ]вÑбоÑка] [ ORDER BYвÑÑажение[ ASC | DESC | USINGопеÑаÑоÑ] [ NULLS { FIRST | LAST } ] [, ...] ] [ LIMIT {ÑиÑло| ALL } ] [ OFFSETнаÑало[ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ÑиÑло] { ROW | ROWS } ONLY ] [ FOR { UPDATE | SHARE } [ OFимÑ_ÑаблиÑÑ[, ...] ] [ NOWAIT ] [...] ]
ÐпиÑание
SELECT INTO ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑаблиÑÑ Ð¸ заполнÑÐµÑ ÐµÑ Ð´Ð°Ð½Ð½Ñми, полÑÑеннÑми из запÑоÑа. ÐаннÑе не пеÑедаÑÑÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑ, как Ñ Ð¾Ð±ÑÑной командой SELECT. СÑолбÑÑ Ð½Ð¾Ð²Ð¾Ð¹ ÑаблиÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð¸Ð¼ÐµÐ½Ð° и ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
, ÑвÑзаннÑе Ñ Ð²ÑÑ
однÑми ÑÑолбÑами SELECT.
ÐаÑамеÑÑÑ
TEMPORARYилиTEMPÐÑли Ñказано, ÑÐ¾Ð·Ð´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ ÑаблиÑа бÑÐ´ÐµÑ Ð²Ñеменной. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº CREATE TABLE.
UNLOGGEDÐÑли Ñказано, ÑÐ¾Ð·Ð´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ ÑаблиÑа бÑÐ´ÐµÑ Ð½ÐµÐ¶ÑÑналиÑÑемой. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº CREATE TABLE.
новаÑ_ÑаблиÑаÐÐ¼Ñ Ñоздаваемой ÑаблиÑÑ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹).
ÐÑе дÑÑгие паÑамеÑÑÑ Ð¿Ð¾Ð´Ñобно опиÑÑваÑÑÑÑ Ð² SELECT.
ÐÑимеÑаниÑ
Ðоманда SELECT INTO дейÑÑвÑÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ CREATE TABLE AS, но ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ CREATE TABLE AS, Ñак как SELECT INTO не поддеÑживаеÑÑÑ Ð² ECPG и PL/pgSQL вÑледÑÑвие Ñого, ÑÑо они воÑпÑинимаÑÑ Ð¿Ñедложение INTO по-ÑвоемÑ. Ð ÑÐ¾Ð¼Ñ Ð¶Ðµ, CREATE TABLE AS пÑедоÑÑавлÑÐµÑ Ð±Ð¾Ð»ÑÑий Ð½Ð°Ð±Ð¾Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑей, Ñем SELECT INTO.
РоÑлиÑие Ð¾Ñ CREATE TABLE AS, команда SELECT INTO не позволÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ ÑвойÑÑва ÑаблиÑÑ, напÑÐ¸Ð¼ÐµÑ Ð²ÑбÑаÑÑ Ð¼ÐµÑод доÑÑÑпа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ USING или ÑаблиÑное пÑоÑÑÑанÑÑво Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¼ÐµÑодTABLESPACE . ÐÑли ÑÑо ÑÑебÑеÑÑÑ, иÑполÑзÑйÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ñабл_пÑоÑÑÑанÑÑвоCREATE TABLE AS. Таким обÑазом, Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑаблиÑÑ Ð²ÑбиÑаеÑÑÑ Ð¼ÐµÑод доÑÑÑпа к ÑаблиÑам по ÑмолÑаниÑ. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº default_table_access_method.
ÐÑимеÑÑ
Создание ÑаблиÑÑ films_recent, ÑодеÑжаÑей ÑолÑко поÑледние запиÑи из ÑаблиÑÑ films:
SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';
СовмеÑÑимоÑÑÑ
Ð ÑÑандаÑÑе SQL команда SELECT INTO пÑименÑеÑÑÑ Ð´Ð»Ñ Ð¿ÐµÑедаÑи ÑкалÑÑнÑÑ
знаÑений клиенÑÑкой пÑогÑамме, но не Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑаблиÑÑ. Ðменно ÑÑо пÑименение Ð¸Ð¼ÐµÐµÑ Ð¼ÐµÑÑо в ECPG (Ñм. ÐлавÑ 34) и в PL/pgSQL (Ñм. ÐлавÑ 41). Ð PostgreSQL команда SELECT INTO ÑвÑзана Ñ Ñозданием ÑаблиÑÑ Ð¿Ð¾ иÑÑоÑиÑеÑким пÑиÑинам. Таким же обÑазом ÑабоÑÐ°ÐµÑ SELECT INTO и в некоÑоÑÑÑ
дÑÑгие ÑеализаÑиÑÑ
SQL (но в болÑÑинÑÑве ÑеализаÑий поддеÑживаеÑÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑÐ¸Ñ CREATE TABLE AS). ÐÑли ÑÑи ÑообÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑовмеÑÑимоÑÑи не важнÑ, в новом коде Ð´Ð»Ñ ÑÑиÑ
Ñелей лÑÑÑе иÑполÑзоваÑÑ CREATE TABLE AS.