×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

6.1.84. CREATE TABLE AS

6.1.84. CREATE TABLE AS

CREATE TABLE AS — создание новой таблицы на основе результатов запроса

Синтаксис

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
    [ (column_name [, ...] ) ]
    [ USING метод ]
    [ WITH ( storage_parameter [= значение] [, ... ] ) | WITHOUT OIDS ]
    [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
    [ TABLESPACE tablespace_name ]
    AS запрос
    [ WITH [ NO ] DATA ]

Описание

CREATE TABLE AS создает таблицу и заполняет её данными, полученными в результате выполнения SELECT команды. Столбцы таблицы имеют имена и типы данных, соответствующие именам и типам выходных столбцов SELECT (за исключением случаев, когда имена столбцов переопределяются путем указания явного списка новых имен).

CREATE TABLE AS имеет определенное сходство с созданием представления, но в действительности существенно отличается: она создает новую таблицу и выполняет запрос лишь единожды для первоначального заполнения созданной таблицы. Новая таблица не будет отслеживать последующие изменения в исходных таблицах запроса. Напротив, представление заново вычисляет свое определяющее SELECT выражение при каждом обращении к нему с запросом.

CREATE TABLE AS требуется CREATE привилегия в схеме, используемой для таблицы.

Параметры

GLOBAL или LOCAL

Игнорируется для обеспечения совместимости. Использование данных ключевых слов не рекомендуется; обратитесь к CREATE TABLE для получения подробных сведений.

TEMPORARY или TEMP

Если этот параметр указан, таблица создается как временная. Обратитесь к CREATE TABLE для получения подробных сведений.

UNLOGGED

Если этот параметр указан, таблица создается как нежурналируемая. Обратитесь к CREATE TABLE для получения подробных сведений.

IF NOT EXISTS

Не выдавать ошибку в случае, если отношение с таким же именем уже существует; в этом случае просто вывести уведомление и оставить таблицу без изменений.

table_name

Имя создаваемой таблицы (возможно, дополненное именем схемы).

column_name

Имя столбца в новой таблице. Если имена столбцов не указаны, они определяются на основе имен столбцов в выводе запроса.

USING метод

Данное необязательное предложение определяет метод доступа к таблице, применяемый для хранения содержимого новой таблицы; выбранный метод должен относиться к типу TABLE. См. Глава 7.11 для получения дополнительной информации. Если данный параметр не указан, для новой таблицы выбирается метод доступа к таблице по умолчанию. См. default_table_access_method для получения дополнительной информации.

WITH ( storage_parameter [= значение] [, ... ] )

Это предложение задает необязательные параметры хранения для новой таблицы; см. Storage Parameters в CREATE TABLE документации для получения дополнительной информации. Для обеспечения обратной совместимости WITH предложение для таблицы может также включать OIDS=FALSE для указания того, что строки новой таблицы не должны содержать OID (объектных идентификаторов), OIDS=TRUE более не поддерживается.

WITHOUT OIDS

Данный синтаксис используется для обеспечения обратной совместимости при объявлении таблицы WITHOUT OIDS, создание таблицы WITH OIDS более не поддерживается.

ON COMMIT

Поведением временных таблиц по завершении блока транзакции можно управлять, используя ON COMMIT. Доступны три варианта:

PRESERVE ROWS

Никаких специальных действий при завершении транзакций не выполняется. Данное поведение используется по умолчанию.

DELETE ROWS

Все строки во временной таблице будут удалены по завершении каждого блока транзакции. По сути, автоматическая команда TRUNCATE выполняется при каждом COMMIT.

DROP

Временная таблица будет удалена по завершении текущего блока транзакции.

TABLESPACE tablespace_name

Это tablespace_name — имя табличного пространства, в котором должна быть создана новая таблица. Если оно не указано, default_tablespace используется значение параметра, либо temp_tablespaces если таблица является временной.

запрос

Команда SELECT, TABLE, или VALUES команда, либо EXECUTE команда, выполняющая подготовленный SELECT, TABLE, или VALUES запрос.

WITH [ NO ] DATA

Данное предложение определяет, должны ли данные, возвращаемые запросом, копироваться в новую таблицу. В противном случае копируется только структура таблицы. По умолчанию данные копируются.

Примечания

Данная команда функционально аналогична SELECT INTO, однако она является предпочтительной, поскольку менее вероятно ее смешивание с другими вариантами использования синтаксиса SELECT INTO . Более того, CREATE TABLE AS предоставляет расширенный набор функциональных возможностей по сравнению с SELECT INTO.

Примеры

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

CREATE TABLE films_recent AS
  SELECT * FROM films WHERE date_prod >= '2002-01-01';

Для полного копирования таблицы используется краткая форма с применением TABLE command can also be used:

CREATE TABLE films2 AS
  TABLE films;

Создание новой временной таблицы films_recent, состоящей только из последних записей таблицы films, с использованием подготовленного оператора. Новая таблица будет удалена при фиксации транзакции (commit):

PREPARE recentfilms(date) AS
  SELECT * FROM films WHERE date_prod > $1;
CREATE TEMP TABLE films_recent ON COMMIT DROP AS
  EXECUTE recentfilms('2002-01-01');

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

CREATE TABLE AS соответствует стандарту SQL standard. Следующие возможности являются нестандартными расширениями:

  • Стандарт требует заключения подзапроса в скобки; в Digital Q.DataBase, данные скобки являются необязательными.

  • В стандарте WITH [ NO ] DATA предложение является обязательным; в Digital Q.DataBase оно является необязательным.

  • Digital Q.DataBase обрабатывает временные таблицы способом, существенно отличающимся от стандарта; см. CREATE TABLE для получения подробных сведений.

  • Это WITH предложение является Digital Q.DataBase расширением; параметры хранения не входят в стандарт.

  • Это Digital Q.DataBase концепция табличных пространств не является частью стандарта. Таким образом, предложение TABLESPACE является расширением.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению