创建表¶
概要¶
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 PROPERTIES
。 最多可以为一个表指定 INCLUDING PROPERTIES
选项。
示例¶
创建一个新表 orders
CREATE TABLE orders (
orderkey bigint,
orderstatus varchar,
totalprice double,
orderdate date
)
WITH (format = 'ORC')
如果表 orders
不存在,则创建它,添加表注释、列注释,对列 orderstatus
添加非空约束,以及对列 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
)