テーブルの定義を変更します。
構文
ALTER TABLE name
action [, ...]
ALTER TABLE name
RENAME COLUMN column TO new_column
ALTER TABLE name
RENAME TO new_name
上記の構文では、action
を次の句のいずれかに設定できます。
ADD column type [ column_constraint [ ... ] ]
DROP COLUMN column
ADD table_constraint
DROP CONSTRAINT constraint_name [ CASCADE ]
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
DISABLE TRIGGER [ trigger_name | ALL | USER ]
OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING }
説明
ベース テーブルにシンプルなビューが作成されている場合、ベース テーブルの列のデータ型を変更するために alter table alter column
文を実行する前に、関連付けられているビューを削除する必要はありません。
ALTER TABLE 文を実行して、既存のテーブルを再定義できます。 ALTER TABLE 文は、次の句をサポートしています。
ADD column type
: テーブルに列を追加します。 ALTER TABLE 文でこの句を使用する構文は、CREATE TABLE 文でこの句を使用する構文と同じです。DROP COLUMN
: テーブルから列を削除します。 列に関連するインデックスとテーブル制約も削除されます。ADD table_constraint
: テーブルに制約を追加します。 ALTER TABLE 文でこの句を使用する構文は、CREATE TABLE 文でこの句を使用する構文と同じです。DROP CONSTRAINT
: テーブルから制約を削除します。 異なる制約に同じ名前を付けることができます。 句で指定した名前が複数の制約と一致する場合、指定した制約名と一致するすべての制約が削除されます。RENAME
: テーブルまたはテーブル内の列の名前を変更します。 この句を使用して、インデックス、シーケンス、またはビューの名前を変更することもできます。名前変更操作は、保存されているデータには影響しません。
所有しているテーブルに対してのみ、ALTER TABLE 文を実行できます。
ADD COLUMN 句を使用して列を追加する場合、既存の各行と列が交差するセルには、列のデフォルト値が入力されます。 DEFAULT 句でデフォルト値が指定されていない場合、既存の各行と列が交差するセルには、NULL 値が入力されます。 DEFAULT 句で揮発性値が指定されている場合、列を追加するとテーブル全体が書き換えられます。 DEFAULT 句で非揮発性値が指定されている場合、テーブルは書き換えられません。 テーブルに大量のデータが含まれている場合、書き換えプロセスに時間がかかることがあります。 書き換えプロセス中は、占有されるディスク容量が 2 倍になります。 CHECK 制約または NOT NULL 制約を追加するには、テーブルをスキャンして、列の値が制約を満たしていることを確認できます。
DROP COLUMN 句を使用して列を削除する場合、列は削除されません。代わりに、列は SQL 操作に対して非表示になります。 後続のテーブルに対する挿入操作および更新操作中に、列のセルには NULL 値が入力されます。 DROP COLUMN 文を実行した後、列はすぐに削除されます。 ただし、削除された列によって占有されていたディスク容量は、既存の行が更新されるまで再利用されないため、テーブルによって占有されるディスク容量は変更されません。
システム ディレクトリ テーブルは変更できません。次の表に、ALTER TABLE の有効なパラメーターを示します。 パラメーターの詳細については、「CREATE TABLE」をご参照ください。
パラメーター
パラメーター | 説明 |
name | 変更するテーブルの名前。 名前にスキーマ修飾子を付けることができます。 |
column | 作成する列の名前、または名前を変更する既存の列の名前。 |
new_column | 既存の列の新しい名前。 |
new_name | テーブルの新しい名前。 |
type | 新しい列のデータ型。 |
table_constraint | テーブルの新しい制約。 |
constraint_name | 削除する制約の名前。 |
CASCADE | 削除された制約に依存するオブジェクトを自動的に削除することを指定します。 |
例
VARCHAR2 データ型の列をテーブルに追加します。
ALTER TABLE emp ADD address VARCHAR2(30);
テーブルから列を削除します。
ALTER TABLE emp DROP COLUMN address;
列の名前を変更します。
ALTER TABLE emp RENAME COLUMN address TO city;
テーブルの名前を変更します。
ALTER TABLE emp RENAME TO employee;
CHECK 制約をテーブルに追加します。
ALTER TABLE emp ADD CONSTRAINT sal_chk CHECK (sal > 500);
テーブルから CHECK 制約を削除します。
ALTER TABLE emp DROP CONSTRAINT sal_chk;