ALTER TABLEが結構便利

DBのテーブル作成にはもっぱらMySQL Workbenchを利用しています。ところが最初にテーブルを作るときは便利だけど、変更加えようとしたら、結構な頻度でエラーが発生してテーブルの定義を変更できなくなります。

最近頻繁にDBを弄っているのでイライラが募りまして、ALTER TABLEを覚えました。行の追加くらいしかした事が無かったのですが、結構色々できて便利です。

以下はMySQL限定です。他のDBは試していません。

  1. SERIALの値をリセット
    基本的にテーブルにはauto incrementでidを作るのですが、
    このidに採番される値をリセットしたい事がよくあります。今までは一度テーブルを削除して作成し直していたのですが、ALTER TABLEで行えます。

    ALTER TABLE (テーブル名) AUTO_INCREMENT=1
  2. 行の順番を変更
    ALTER TABLEで行を追加したは良いものの、列の順番が気持ち悪くて入れ替えたい事がよくあります。今まではレコードダンプを取ってテーブルに入れ直していましたが、これもALTER TABLEで行えます。

    ALTER TABLE (テーブル名) MODIFY COLUMN (カラム名) (カラム型) AFTER (移動先カラム名)

    また、そもそも行を追加するときに追加する位置を指定できます。

    ALTER TABLE (テーブル名) ADD COLUMN (カラム名) (カラム型) AFTER (追加先カラム名)
  3. カラムの名前と型を変更
    僕はよくカラム名を変更したくなるのですが、これもALTER TABLEで行けます。

    ALTER TABLE (テーブル名) CHANGE (カラム名) (新しいカラム名) (新しいカラム型)

    ただし型を変えない時も、カラムの型を指定する必要があります。

  4. データベースエンジンの変更
    WEBアプリとかをモックから徐々に作っていく過程でMyISAMからINNODBに変更したいシーンが時たまありますが、コレもALTER TABLEで行けます。逆も行けます。

    ATLER TABLE (テーブル名) ENGINE=INNODB
  5. テーブル名の変更
    複数形のs付け忘れた時等に重宝します。

    ALTER TABLE (テーブル名) RENAME TO (新しいテーブル名)
    
  6. 主キーの変更
    主キーの追加も可能

    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
主キーの項目を追加しました

Leave a Reply

Your email address will not be published. Required fields are marked *