テーブルの定義を変更します。

構文

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;