ALTER TABLE 構文
ALTER TABLE を使用すると表の定義を変更することができます。
ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification ...]
alter_specification:
ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
or ADD [COLUMN] (create_definition, create_definition,...)
or ADD INDEX [index_name] (index_col_name,...)
or ADD PRIMARY KEY (index_col_name,...)
or ADD UNIQUE [index_name] (index_col_name,...)
or ADD FULLTEXT [index_name] (index_col_name,...)
or ADD [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]
or ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
or CHANGE [COLUMN] old_col_name create_definition
[FIRST | AFTER column_name]
or MODIFY [COLUMN] create_definition [FIRST | AFTER column_name]
or DROP [COLUMN] col_name
or DROP PRIMARY KEY
or DROP INDEX index_name
or DISABLE KEYS
or ENABLE KEYS
or RENAME [TO] new_tbl_name
or ORDER BY col
or table_options
create_definition については、 CREATE TABLE を参照してください。
以下、簡単な使い方を紹介します。
FOREIGN KEY 、 CHECK 及び REFERENCES 節は、 InnoDB のときのみ有効ですのでここでは省略します。
列を最後に追加する
列を最後に追加するには
ALTER TABLE テーブル名 ADD 追加する列名 型;
又は
ALTER TABLE テーブル名 ADD (追加する列名 型,追加する列名 型);
列を先頭に追加する
列を先頭に追加するには
ALTER TABLE テーブル名 ADD 追加する列名 型 FIRST;
列を指定の列の後に追加する
列を指定の列の後に追加するには
ALTER TABLE テーブル名 ADD 追加する列名 型 AFTER 列名;
テーブルにインデックスを追加する
インデックスを追加するには
ALTER TABLE テーブル名 ADD INDEX [インデックス名] 列名;
又は
ALTER TABLE テーブル名 ADD INDEX [インデックス名] (列名,列名);
インデックス名は、省略可能です。
主キー(プライマリーキー)を追加する
プライマリーキーを追加するには
ALTER TABLE テーブル名 ADD PRIMARY KEY (列名,...);
ユニーク制約を追加する
ユニーク制約を追加するには
ALTER TABLE テーブル名 ADD UNIQUE [インデックス名] (列名,...);
インデックス名は、省略可能です。
全文検索インデックスを追加する
ユニーク制約を追加するには
ALTER TABLE テーブル名 ADD FULLTEXT [インデックス名] (列名,...);
インデックス名は、省略可能です。
CHAR,VARCHAR,TEXT列に付けることができます。
日本語での処理は、ただいま調査中です。
列名を変更する
列名を変更するには
ALTER TABLE テーブル名 CHANGE 古い列名 新しい列名;
列名の定義を変更する
列名の定義を変更するには
ALTER TABLE テーブル名 MODIFY 列名 型 NOT NULL DEFAULT デフォルト値;
列を削除する
列を削除するには
ALTER TABLE テーブル名 DROP 削除する列名;
主キー(プライマリーキー)を削除する
主キー(プライマリーキー)を削除するには
ALTER TABLE テーブル名 DROP PRIMARY KEY;
インデックスを削除する
インデックスを削除するには
ALTER TABLE テーブル名 DROP INDEX インデックス名;
テーブル名を変更する
テーブル名を変更するには
ALTER TABLE テーブル名 RENAME [TO] 新しいテーブル名;