DBのテーブル作成にはもっぱらMySQL Workbenchを利用しています。ところが最初にテーブルを作るときは便利だけど、変更加えようとしたら、結構な頻度でエラーが発生してテーブルの定義を変更できなくなります。
最近頻繁にDBを弄っているのでイライラが募りまして、ALTER TABLEを覚えました。行の追加くらいしかした事が無かったのですが、結構色々できて便利です。
以下はMySQL限定です。他のDBは試していません。
- SERIALの値をリセット
基本的にテーブルにはauto incrementでidを作るのですが、
このidに採番される値をリセットしたい事がよくあります。今までは一度テーブルを削除して作成し直していたのですが、ALTER TABLEで行えます。ALTER TABLE (テーブル名) AUTO_INCREMENT=1
- 行の順番を変更
ALTER TABLEで行を追加したは良いものの、列の順番が気持ち悪くて入れ替えたい事がよくあります。今まではレコードダンプを取ってテーブルに入れ直していましたが、これもALTER TABLEで行えます。ALTER TABLE (テーブル名) MODIFY COLUMN (カラム名) (カラム型) AFTER (移動先カラム名)
また、そもそも行を追加するときに追加する位置を指定できます。
ALTER TABLE (テーブル名) ADD COLUMN (カラム名) (カラム型) AFTER (追加先カラム名)
- カラムの名前と型を変更
僕はよくカラム名を変更したくなるのですが、これもALTER TABLEで行けます。ALTER TABLE (テーブル名) CHANGE (カラム名) (新しいカラム名) (新しいカラム型)
ただし型を変えない時も、カラムの型を指定する必要があります。
- データベースエンジンの変更
WEBアプリとかをモックから徐々に作っていく過程でMyISAMからINNODBに変更したいシーンが時たまありますが、コレもALTER TABLEで行けます。逆も行けます。ATLER TABLE (テーブル名) ENGINE=INNODB
- テーブル名の変更
複数形のs付け忘れた時等に重宝します。ALTER TABLE (テーブル名) RENAME TO (新しいテーブル名)
- 主キーの変更
主キーの追加も可能ALTER TABLE (テーブル名) ADD PRIMARY KEY (カラム名);
もちろん削除も可能
ALTER TABLE (テーブル名) DROP PRIMARY KEY;
-
特定のテーブルのカラム定義を取得
ALTER TABLE関係ないんですが、テーブルの定義を見るときに今まではshow column from (テーブル名) とかやってたんですが、desc (テーブル名)で同じ働きでした。タイプ数が結構減りましたね。
てかWP-SyntaxってSQLも対応してるんや。凄いな。
追記 2009.11.26
テーブル名の変更を加えました。
追記 2011.6.9
主キーの項目を追加しました
関連する記事
タグ: sql

