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)の内容を更新することはない。
列長は、既存のデータの最大長までなら縮小も可能(
)
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 ;