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