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句がコピーされたプロパティの1つと同じプロパティ名を指定した場合、WITH句の値が使用されます。デフォルトの動作はEXCLUDING PROPERTIESです。INCLUDING PROPERTIESオプションは、最大で1つのテーブルに対して指定できます。

新しいテーブルordersを作成する

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

テーブルordersが存在しない場合は作成し、テーブルコメント、列コメント、列orderstatusの非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.'

テーブルbigger_ordersordersの列を使用して作成し、先頭と末尾に追加の列を追加します

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

関連項目

ALTER TABLEDROP TABLECREATE TABLE ASSHOW CREATE TABLE