SQL 入門 > テーブル定義の変更(列の追加、変更、削除)

ALTER TABLE (列の追加、変更、削除)

ALTER TABLE ADD / ALTER TABLE DROP

カラムの追加

表へカラムの追加
表定義の最後にのみ追加できる。表の途中への挿入や列の順番の変更や入れ替えはできない。表の再定義(※)とデータ再エントリする。

(※) 表のオンライン再定義機能を使うことでシステムを稼動しながらカラム位置などのテーブル定義の変更ができる。

ALTER TABLE table_name
	ADD (
		col_name1 VARCHAR(8) DEFAULT 'xxx' NOT NULL ,
		col_name2 NUMBER(1)
	);

デフォルト値を指定している場合には既存行の該当カラムはデフォルト値で埋められる。

ALTER TABLE MODIFY

カラムの定義の変更、NOT NULL 制約の解除

カラムの定義の変更はサイズの増減、デフォルト値の変更、NOT NULL の変更

ALTER TABLE table_name
	MODIFY ( col_name VARCHAR(10) DEFAULT 'yyy' NULL) ;

カンマ区切りで複数 変更可能
デフォルト指定の変更は列の追加とは異なり、既存行(NULL)の内容を更新することはない。
列長は、既存のデータの最大長までなら縮小も可能(Oracle 10g)
NULL(NOT NULL) の指定は、現在設定と異なる場合に指定する(同じ指定を行うとエラーになる)

デフォルト値の変更と削除

デフォルト値の設定はできるが削除する構文はない。そのためデフォルト値を NULL にすることで同じ振る舞いにすることはできる。ディクショナリには残るので再作成できるなら DROP TABLE して CREATE TABLE し直した方が精神的には良いかも。

ALTER TABLE table_name
	MODIFY ( col_name  DEFAULT 'xxx' ) ;
 
ALTER TABLE table_name
	MODIFY ( col_name  DEFAULT NULL ) ;

ALTER TALBLE RENAME

カラム名の変更

ALTER TABLE table_name
	RENAME COLUMN old_colname TO new_colname ;

テーブル名の変更

ALTER TABLE old_table_name
	RENAME TO new_tablename ;

ALTER TABLE UNUSED

カラムの使用禁止と削除

-- 複数でも可能な形式
ALTER TABLE table_name
	SET UNUSED ( col_name1, col_name2, … )
	[CASCADE CONSTRAINTS] [INVALIDATE] ;
-- 1 列のみ削除
ALTER TABLE table_name
	SET UNUSED COLUMN col_name1
	[CASCADE CONSTRAINTS] [INVALIDATE] ;
  • 使用禁止列の削除
ALTER TABLE table_name
	DROP UNUSED COLUMN ;
  • カラムの削除
ALTER TABLE table_name
	DROP ( col_name1 [, col_name2, …] )
	[CASCADE CONSTRAINT] [INVALIDATE] ;
 
ALTER TABLE table_name
	DROP COLUMN col_name1
	[CASCADE CONSTRAINT] [INVALIDATE] ;

プライマリ・キーの追加、削除

ALTER TABLE table_name
	ADD [ CONSTRAINT primary_key_name ]
	PRIMARY KEY (col_name, colname2 ..) ;
ALTER TABLE table_name
	DROP PRIMARY KEY;
-- または
ALTER TABLE table_name
	DROP CONSTRAINT primary_key_name ;


 
カスタム検索
スポンサード リンク

テーブル定義の変更(列の追加、変更、削除)の関連トピックス

ITエンジニア キャリアアップ・転職・求人情報

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ オラクルサポートセンター