CREATE TABLE

概要

CREATE TABLE [ IF NOT EXISTS ]
table_name (
  { column_name data_type [NOT NULL] [ COMMENT comment ] [ WITH ( property_name = expression [, ...] ) ]
  | LIKE existing_table_name [ { INCLUDING | EXCLUDING } PROPERTIES ]
  | [ CONSTRAINT constraint_name ] { PRIMARY KEY | UNIQUE } ( { column_name [, ...] } ) [ { ENABLED | DISABLED } ] [ [ NOT ] RELY ] [ [ NOT ] ENFORCED ] }
  [, ...]
)
[ COMMENT table_comment ]
[ WITH ( property_name = expression [, ...] ) ]

描述

建立具有指定欄位的新空表格。使用 CREATE TABLE AS 建立具有資料的表格。

如果表格已存在,則可選的 IF NOT EXISTS 子句會使錯誤被抑制。

可選的 WITH 子句可用於在新建立的表格或單一欄位上設定屬性。若要列出所有可用的表格屬性,請執行下列查詢

SELECT * FROM system.metadata.table_properties

若要列出所有可用的欄位屬性,請執行下列查詢

SELECT * FROM system.metadata.column_properties

LIKE 子句可用於在新表格中包含現有表格的所有欄位定義。可以指定多個 LIKE 子句,以便複製多個表格中的欄位。

如果指定 INCLUDING PROPERTIES,則所有表格屬性都會複製到新表格。如果 WITH 子句指定的屬性名稱與複製的屬性名稱相同,則會使用 WITH 子句中的值。預設行為是 EXCLUDING PROPERTIESINCLUDING PROPERTIES 選項最多只能為一個表格指定。

範例

建立新的表格 orders

CREATE TABLE orders (
  orderkey bigint,
  orderstatus varchar,
  totalprice double,
  orderdate date
)
WITH (format = 'ORC')

如果表格 orders 尚不存在,則建立該表格,並新增表格註解、欄位註解、欄位 orderstatus 的 not null 約束以及欄位 orderkey 的主鍵約束

CREATE TABLE IF NOT EXISTS orders (
  orderkey bigint,
  orderstatus varchar NOT NULL,
  totalprice double COMMENT 'Price in cents.',
  orderdate date,
  PRIMARY KEY (orderkey)
)
COMMENT 'A table to keep track of orders.'

使用 orders 中的欄位,加上開頭和結尾的額外欄位,建立表格 bigger_orders

CREATE TABLE bigger_orders (
  another_orderkey bigint,
  LIKE orders,
  another_orderdate date
)

另請參閱

ALTER TABLEDROP TABLECREATE TABLE ASSHOW CREATE TABLE