SELECT INTO

Определение новой таблицы на основе результатов запроса.

Обзор

[ WITH [ RECURSIVE ] with_query [, ...] ]
SELECT [ALL | DISTINCT [ON ( expression [, ...] )]]
    * | expression [AS output_name] [, ...]
    INTO [TEMPORARY | TEMP | UNLOGGED ] [TABLE] new_table
    [FROM from_item [, ...]]
    [WHERE condition]
    [GROUP BY expression [, ...]]
    [HAVING condition [, ...]]
    [{UNION | INTERSECT | EXCEPT} [ALL | DISTINCT ] select]
    [ORDER BY expression [ASC | DESC | USING operator] [NULLS {FIRST | LAST}] [, ...]]
    [LIMIT {count | ALL}]
    [OFFSET start [ ROW | ROWS ] ]
    [FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
    [FOR {UPDATE | SHARE} [OF table_name [, ...]] [NOWAIT] 
    [...]]

Описание

SELECT INTO создает новую таблицу и заполняет её данными, вычисленными посредством запроса. Данные не возвращаются клиенту, как это происходит при обычной команде SELECT. Столбцы новой таблицы получают имена и типы данных, соответствующие выходным столбцам выражения SELECT.

Параметры

Большинство параметров SELECT INTO совпадают с параметрами SELECT.

TEMPORARY

TEMP

  • Если указано, таблица создается как временная.

UNLOGGED

  • Если указано, таблица создается как незаписываемая в журнал (unlogged). Данные, записываемые в такие таблицы, не фиксируются в журнале предзаписи (WAL), что делает операции с ними значительно быстрее по сравнению с обычными таблицами. Однако содержимое unlogged-таблиц не реплицируется на зеркальные экземпляры. Аналогично, такие таблицы не являются отказоустойчивыми: после сбоя или аварийного завершения работы сегмента данные в unlogged-таблицах на этом сегменте будут усечены. Все индексы, созданные на unlogged-таблицах, автоматически также становятся unlogged.

new_table

  • Имя создаваемой таблицы (может включать схему).

Пример

Создание новой таблицы films_recent, содержащей только самые свежие записи из таблицы films:

SELECT * INTO films_recent FROM films WHERE date_prod >= '2016-01-01';

Совместимость

В стандарте SQL выражение SELECT INTO используется для выборки значений в скалярные переменные хост-программы, а не для создания новой таблицы. Использование SELECT INTO в базах данных YMatrix для создания таблиц является историческим. Для этих целей в новых приложениях рекомендуется применять команду CREATE TABLE AS.