メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

ALTER TABLE

データベーステーブルの定義を変更します。このコマンドは、CREATE TABLE で設定された値とプロパティを更新します。

注記

ALTER TABLE の操作が完了するまで、テーブルの読み取りと書き込みはロックされます。

構文

Copy
ALTER TABLE table_name { ADD table_constraint | DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ] | OWNER TO new_owner | RENAME TO new_name | RENAME COLUMN column_name TO new_name | ADD [ COLUMN ] column_name column_type [ DEFAULT default_expr ] [ ENCODE encoding ] [ NOT NULL | NULL ] | DROP [ COLUMN ] column_name [ RESTRICT | CASCADE ] } where table_constraint is: [ CONSTRAINT constraint_name ] { UNIQUE ( column_name [, ... ] ) | PRIMARY KEY ( column_name [, ... ] ) | FOREIGN KEY (column_name [, ... ] ) REFERENCES reftable [ ( refcolumn ) ]}

Parameters

table_name

変更するテーブルの名前。テーブル名のみを指定するか、schema_name.table_name 形式で特定のスキーマを使用します。また、ALTER TABLE ステートメントを使用してビュー名かビューの所有者を変更する場合、ビュー名を指定することもできます。テーブル名の最大長は 127 バイトです。それより長い名前は 127 バイトまで切り詰められます。最大 4 バイトまで UTF-8 マルチバイト文字を使用できます。有効な名前の詳細については、「名前と識別子」を参照してください。

ADD table_constraint

指定した制約をテーブルに追加します。有効な table_constraint 値については、「CREATE TABLE」を参照してください。

注記

プライマリキー制約を null が許容された列に追加することはできません。列が元々 NOT NULL 制約で作成された場合、プライマリキー制約を追加できます。

DROP CONSTRAINT constraint_name

テーブルから指名された制約を削除します。制約を削除するには、制約タイプではなく制約の名前を指定します。テーブルの制約名を表示するには、次のクエリを実行します。

Copy
select constraint_name, constraint_type from information_schema.table_constraints;

RESTRICT

指定の制約のみ削除します。DROP CONSTRAINT のオプション。CASCADE と共に使用することはできません。

CASCADE

制約およびその制約に依存するすべてを削除します。DROP CONSTRAINT のオプション。RESTRICT と共に使用することはできません。

OWNER TO new_owner

テーブル (またはビュー) の所有者を new_owner 値に変更します。

RENAME TO new_name

テーブル (またはビュー) の名前を new_name で指定された値に変更します。テーブル名の最大長さは 127 文字です。それより長い名前は 127 バイトまで切り詰められます。

永続テーブルの名前を「#」で始まる名前に変更することはできません。「#」で始まるテーブル名は、一時テーブルを示します。

RENAME COLUMN column_name TO new_name

列の名前を new_name で指定された値に変更します。列名の最大長は 127 バイトです。それより長い名前は 127 文字まで切り詰められます。有効な名前の詳細については、「名前と識別子」を参照してください。

ADD [ COLUMN ] column_name

指定した名前を持つ列をテーブルに追加します。各 ALTER TABLE ステートメントでは 1 列しか追加できません。

テーブルの分散キー (DISTKEY) またはソートキー (SORTKEY) である列は追加できません。

ALTER TABLE ADD COLUMN コマンドを使用して次のテーブルと列の属性を変更することはできません。

  • UNIQUE

  • PRIMARY KEY

  • REFERENCES (外部キー)

  • IDENTITY

列名の最大長は 127 バイトです。それより長い名前は 127 文字まで切り詰められます。1 つのテーブルで定義できる列の最大数は 1,600 です。

column_type

追加する列のデータ型。CHAR および VARCHAR の列の場合、最大長を宣言する代わりに MAX キーワードを使用できます。MAX は、最大長を CHAR では 4096 バイト、VARCHAR では 65535 バイトに設定します。Amazon Redshift は、次の データ型 をサポートしています。

  • SMALLINT (INT2)

  • INTEGER (INT、INT4)

  • BIGINT (INT8)

  • DECIMAL (NUMERIC)

  • REAL (FLOAT4)

  • DOUBLE PRECISION (FLOAT8)

  • BOOLEAN (BOOL)

  • CHAR (CHARACTER)

  • VARCHAR (CHARACTER VARYING)

  • DATE

  • TIMESTAMP

  • TIMESTAMPTZ

DEFAULT default_expr

列のデフォルトのデータ値を割り当てる句。default_expr のデータ型は列のデータ型に一致する必要があります。DEFAULT 値は、変数を使用しない式にする必要があります。サブクエリ、現在のテーブルに含まれる他の列の相互参照、およびユーザー定義の関数は使用できません。

default_expr は、列の値を指定しないすべての INSERT 操作で使用されます。 デフォルト値を指定しなかった場合、列のデフォルト値は null です。

COPY 操作で、DEFAULT 値と NOT NULL 制約が設定された列に null フィールドが見つかった場合、COPY コマンドは default_expr の値を挿入します。

ENCODE encoding

列の圧縮エンコード。圧縮が選択されていない場合、Amazon Redshift は以下のように自動的に圧縮エンコードを割り当てます。

  • 一時テーブルのすべての列には RAW 圧縮がデフォルトで割り当てられます。

  • ソートキーとして定義されている列には、RAW 圧縮が割り当てられます。

  • BOOLEAN、REAL、または DOUBLE PRECISION データ型として定義されている列には、RAW 圧縮が割り当てられます。

  • 他のすべての列には LZO 圧縮が割り当てられます。

注記

列を圧縮しない場合は、明示的に RAW エンコードを指定します。

次の compression encodingsがサポートされています。

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MOSTLY8

  • MOSTLY16

  • MOSTLY32

  • RAW (非圧縮)

  • RUNLENGTH

  • TEXT255

  • TEXT32K

  • ZSTD

NOT NULL | NULL

NOT NULL は、列に null 値を使用できないことを指定します。NULL はデフォルトであり、列で null 値を使用できることを指定します。

DROP [ COLUMN ] column_name

テーブルから削除する列の名前。

テーブルの分散キー (DISTKEY) またはソートキー (SORTKEY) である列は削除できません。ビュー、プライマリキー、外部キー、UNIQUE 制約などの依存オブジェクトが列にある場合、DROP COLUMN のデフォルト動作は RESTRICT です。

RESTRICT

DROP COLUMN と共に使用する場合に RESTRICT が意味することは、定義されたビューが削除対象列を参照する場合、または外部キーが列を参照する場合、または列がマルチパートキーに属する場合、列は削除されないことです。CASCADE と共に使用することはできません。

CASCADE

DROP COLUMN と共に使用すると、指定した列およびその列に依存するすべてのものを削除します。RESTRICT と共に使用することはできません。

このページの内容: