テーブルの定義を変更します。
構文
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 TABLE コマンドを使用して、テーブルの定義を変更できます。 このコマンドには、次の句が含まれます。
ADD column type
: CREATE TABLE コマンドと同じ構文を使用して、テーブルに新しい列を追加します。DROP COLUMN
: テーブルから列を削除します。 列に関連するインデックスとテーブル制約は自動的に削除されます。ADD table_constraint
: CREATE TABLE コマンドと同じ構文を使用して、テーブルに新しい制約を追加します。DROP CONSTRAINT
: テーブルの制約を削除します。 テーブル制約の名前は一意である必要はなく、指定した名前と複数の制約が一致する場合があります。 すべての一致した制約が削除されます。RENAME
: テーブル名または、テーブル内の個々の列名を変更します。 このタイプの構文を使用して、インデックス、シーケンス、またはビューの名前を変更することもできます。 格納されたデータは影響を受けません。
テーブルの所有者のみが ALTER TABLE コマンドを使用できます。
注 ADD COLUMN 句を使用すると、テーブルのすべての行が列のデフォルト値で初期化されます。 DEFAULT 句が指定されていない場合は、値は null となります。
null 以外のデフォルト値を持つ列を追加するには、テーブルを書き換える必要があります。 大きなテーブルの書き換えには時間がかかり、2 倍のディスク容量が必要です。
CHECK または NOT NULL 制約を追加するには、テーブルをスキャンして、既存の行が制約を満たすことを確認する必要があります。
DROP COLUMN 句は列を物理的には削除せず、列をSQL 操作から見えなくします。 テーブルへの後続の挿入および更新操作が行われると、列に null 値が格納されます。 したがって、列の削除は高速に行われますが、削除された列が占有していたスペースは再利用されないため、テーブルが占有するディスクスペースはすぐには減少しません。 ディスクスペースは、既存の行が更新された後に再利用されます。
システムディレクトリテーブルについては、いかなる部分も変更することはできません。 有効なパラメーターの詳細については、CREATE TABLE ページをご参照ください。
パラメーター
パラメーター | 説明 |
---|---|
name | 変更するテーブルの名前。 名前はスキーマで修飾できます。 |
column | 新規または既存の列の名前。 |
new_column | 既存の列の新しい名前。 |
new_name | テーブルの新しい名前。 |
type | 新しい列のデータ型。 |
table_constraint | テーブルの新しい制約。 |
constraint_name | 削除する既存の制約の名前。 |
CASCADE | 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;