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 |
Если указан, таблица создается как нелогируемая. Данные, записываемые в нерегистрируемые таблицы, не записываются в журнал предзаписи (Write-Ahead Log, WAL), в результате чего такие таблицы работают гораздо быстрее обычных. Однако содержимое нерегистрируемой таблицы не реплицируется на зеркальные сегменты. Кроме того, нелогируемая таблица не является отказоустойчивой. При сбое экземпляра сегмента или некорректном завершении работы данные для нерегистрируемой таблицы в этом сегменте усекаются. Любые индексы, создаваемые для нерегистрируемой таблицы, также автоматически не регистрируются |
new_table |
Имя создаваемой таблицы (опционально указанное со схемой) |
Примеры
Создание новой таблицы films_recent, содержащей только последние записи из таблицы films:
SELECT *
INTO films_recent
FROM films
WHERE date_prod >= '2026-01-01';
Совместимость
В стандарте SQL команда SELECT INTO применяется для передачи выбранных значений в скалярные переменные клиентской программы, но не для создания новой таблицы. В Greengage DB команда SELECT INTO исторически связана с созданием таблицы. В новых приложениях для этой цели лучше использовать CREATE TABLE AS.