テーブルの定義を変更します。
構文
ALTERテーブル名
action [, ...]
ALTERテーブル名
RENAME COLUMN列にnew_column
ALTERテーブル名
新しい_name
に名前を付ける上記の構文では、action
は次のいずれかの句に設定できます。
ADDカラムタイプ [column_constraint [ ... ] ]
ドロップコラム
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式
ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
DISABLE TRIGGER [ trigger_name | ALL | ユーザー]
{new_owner | CURRENT_USER | SESSION_USER} への所有者
REPLICA IDENTITY {デフォルト | 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句に値または式が指定されている場合、列を追加するとテーブル全体が書き換えられます。 テーブルに大量のデータが含まれている場合、書き換え処理に時間がかかる可能性があります。 書き換えプロセス中に、占有されるディスク容量は2倍になります。 CHECKまたはNOT NULL制約を追加するには、テーブルをスキャンして、列の値が制約を満たしていることを確認します。
DROP COLUMN句を使用して列を削除する場合、列は削除されません。 代わりに、列はSQL操作に対して非表示になります。 テーブルに対する後続の挿入および更新操作中に、列のセルはヌル値で満たされる。 DROP COLUMNステートメントを実行すると、列はすぐに削除されます。 ただし、削除された列が占有するディスクスペースは、既存の行が更新されるまで再利用されないため、テーブルが占有するディスクスペースは変更されません。
システムディレクトリテーブルは変更できません。 次の表に、ALTER tableの有効なパラメーターを示します。 パラメーターの詳細については、「CREATE TABLE」トピックをご参照ください。
パラメーター
パラメーター | 説明 |
name | 変更するテーブルの名前。 名前はスキーマで修飾できます。 |
column | 作成する列の名前、または名前を変更する既存の列の名前。 |
new_column | 既存の列の新しい名前。 |
new_name | テーブルの新しい名前。 |
type | 新しい列のデータ型。 |
table_constraint | テーブルの新しい制約。The new constraint for the table. |
constraint_name | 削除する制約の名前。 |
CASCADE | 削除された制約に依存するオブジェクトが自動的に削除されるように指定します。 |
例
VARCHAR2データ型の列をテーブルに追加します。
ALTER TABLE empアドアドレスVARCHAR2(30);
テーブルから列を削除します。
ALTER TABLE emp DROP COLUMNアドレス;
列の名前を変更します。
ALTER TABLE emp RENAME COLUMNアドレスTO city;
テーブルの名前を変更します。
ALTER TABLE empは従業員に名前を付けます。
テーブルにCHECK制約を追加します。
ALTER TABLE emp ADD CONSTRAINT sal_chkチェック (sal > 500);
テーブルからCHECK制約を削除します。
ALTER TABLE emp DROP CONSTRAINT sal_chk;