Amazon Redshift
データベース開発者ガイド

ALTER TABLE の例

次の例は、ALTER TABLE コマンドの基本用法を示しています。

テーブル名の変更

次のコマンドは、USERS テーブルを USERS_BKUP に名前変更します。

alter table users rename to users_bkup;

このタイプのコマンドを使用して、ビューの名前を変更することもできます。

テーブルまたはビューの所有者の変更

次のコマンドは VENUE テーブルの所有者をユーザー DWUSER に変更します。

alter table venue owner to dwuser;

次のコマンドは、ビューを作成した後、その所有者を変更します。

create view vdate as select * from date; alter table vdate owner to vuser;

列名の変更

次のコマンドは VENUE テーブルの列名を VENUESEATS から VENUESIZE に変更します。

alter table venue rename column venueseats to venuesize;

テーブルの制約を削除する

プライマリキー、外部キーまたは一意の制約のようなテーブルの制約を削除するには、まず内部の制約名を見つけます。その後、ALTER TABLE コマンドで制約名を指定します。次の例では、CATEGORY テーブルの制約を見つけてから、category_pkey という名前のプライマリキーを削除します。

select constraint_name, constraint_type from information_schema.table_constraints where constraint_schema ='public' and table_name = 'category'; constraint_name | constraint_type ----------------+---------------- category_pkey | PRIMARY KEY alter table category drop constraint category_pkey;

VARCHAR 列の変更

ストレージを節約するため、最初に現在のデータ要件に必要な最小サイズの VARCHAR 列を使用してテーブルを定義することができます。後でより長い文字列を収容するには、テーブルを変更して列のサイズを大きくすることができます。

次の例では、EVENTNAME 列のサイズを VARCHAR(300) に増やします。

alter table event alter column eventname type varchar(300);

DISTSTYLE KEY DISTKEY 列の変更

次の例は、テーブルの DISTSTYLE および DISTKEY を変更する方法を示しています。

EVEN 分散スタイルを指定してテーブルを作成します。SVV_TABLE_INFO ビューは、DISTSTYLE が EVEN であることを示しています。

create table inventory( inv_date_sk int4 not null , inv_item_sk int4 not null , inv_warehouse_sk int4 not null , inv_quantity_on_hand int4 ) diststyle even; Insert into inventory values(1,1,1,1); select "table", "diststyle" from svv_table_info; table | diststyle -----------+---------------- inventory | EVEN (1 row)

テーブル DISTKEY を inv_item_sk に変更し、BEGIN…COMMIT ブロック内で inv_warehouse_sk に変更します。SVV_TABLE_INFO ビューは、inv_warehouse_sk 列を結果の分散キーとして示しています。

begin; alter table inventory alter distkey inv_item_sk; alter table inventory alter distkey inv_warehouse_sk; commit; select "table", "diststyle" from svv_table_info; table | diststyle -----------+----------------------- inventory | KEY(inv_warehouse_sk) (1 row)

テーブルの DISTKEY を変更し、トランザクションを中止します。分散キーは変更されません。

begin; alter table inventory alter distkey inv_item_sk; abort; select "table", "diststyle" from svv_table_info; table | diststyle -----------+---------------------- inventory | KEY(inv_warehouse_sk) (1 row)