CREATE TABLE AS#

Синтаксис#

CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ] table_name [ ( column_alias, ... ) ]
[ COMMENT table_comment ]
[ WITH ( property_name = expression [, ...] ) ]
AS query
[ WITH [ NO ] DATA ]

Описание#

Создает новую таблицу, содержащую результат запроса SELECT. Используйте CREATE TABLE, чтобы создать пустую таблицу.

Необязательное выражение OR REPLACE заменяет существующую таблицу с заданным именем на новую таблицу. Поддержка данного выражения зависит от конкретного коннектора.

Необязательное выражение IF NOT EXISTS позволяет завершить выполнение команды без ошибки, если таблица уже существует. Существующая таблица при этом не будет пересоздана.

OR REPLACE и IF NOT EXISTS не могут быть использованы одновременно.

Если список псевдонимов столбцов не указан, будут использованы имена колонок из запроса. Если список псевдонимов столбцов указан, количество столбцов таблицы должно совпадать с количеством столбцов, возвращаемых запросом.

Выражение WITH (свойства таблицы)#

Необязательное выражение WITH можно использовать для установки свойств создаваемой таблицы. Список доступных свойств зависит от каталога.

Чтобы получить список доступных свойств таблицы для всех каталогов, выполните следующий запрос:

SELECT * FROM system.metadata.table_properties;

Данный запрос может вернуть пустой результат, если ни один из сконфигурированных каталогов не имеет доступных свойств.

Выражение COMMENT#

Необязательное выражение COMMENT может быть использовано для задания комментария таблицы или столбца. Поддержка COMMENT зависит от конкретного каталога.

Примеры#

Создает новую таблицу orders_column_aliased с результатами запроса и заданными именами столбцов:

CREATE TABLE orders_column_aliased (order_date, total_price)
AS
SELECT orderdate, totalprice
FROM orders;

Создает новую таблицу orders_by_date, которая суммирует orders:

CREATE TABLE orders_by_date
COMMENT 'Summary of orders by date'
WITH (format = 'ORC')
AS
SELECT orderdate, sum(totalprice) AS price
FROM orders
GROUP BY orderdate;

Создает таблицу orders_by_date, если она не существует:

CREATE TABLE IF NOT EXISTS orders_by_date AS
SELECT orderdate, sum(totalprice) AS price
FROM orders
GROUP BY orderdate;

Создает новую таблицу empty_nation с той же схемой, что и nation без данных:

CREATE TABLE empty_nation AS SELECT * FROM nation WITH NO DATA;

См. также#

CREATE TABLE, ALTER TABLE, DROP TABLE, SHOW TABLES, SHOW CREATE TABLE, SELECT