MySQL データベースのテーブル構造でカラムの順番を変更する

データベースの構造を構築していく中で作成したテーブルのカラムの順番を変更したいときがあります。
そういった場合はALTER TABLE文でテーブルの定義を変更していきます。

データベースのテーブルを構築している途中で変更したいとなった時にも、いちいちカラムを削除して作り直すなんて必要もなく移動させることができます。ただし実際に運用が始まっている場合は、プログラミングでカラムの順番が関係するSQL文を発行しているところもプログラム改修作業が発生しますので注意しなくてはいけません。

それではデータベースのテーブル構造のカラムの順番を変更するを説明していきます。
ここではMacのターミナルやWindowsのコマンドプロンプトを使ったコマンド操作と、phpMyAdminでの操作と2つの変更方法をご紹介します。


コマンド操作で順番を変更する


MacのターミナルやWindowsのコマンドプロンプトでのコマンド操作では、まずMySQLモニターを起動して使うデータベースの指定します。
以下の例はMacのMAMPでのサンプルです。
rootユーザーでMySQLモニターを起動して、useコマンドでデータベース「phptest」を指定しています。

コマンド操作でMySQLモニターを起動

一応、SHOWやDESCコマンドでこれから編集するテーブルやテーブルの構造を確認しておきます。

MySQL データベースのテーブル構造の確認

確認できたところでさっそくカラムの順番を変更していきます。


カラムの順番を変えるSQL文


カラムの順番を変えるにはALTER TABLE文を使います。

ALTER TABLE テーブル名 MODIFY 順番を変えたいカラム名 データ型 AFTER 移動後に上に来るカラム名;

ALTER TABLE文でテーブルを指定します。
MODIFYとして順番を変えたいカラム名を記述して、そのあとにデータ型を記述します。
移動させるカラムのデータ型は必ず明記しないといけないので忘れずに。

テーブル「questionnaire」のカラム「opinion」を「email」のあとに移動させる場合。

例)

ALTER TABLE questionnaire MODIFY opinion varchar(200) AFTER email;

移動する場所を指定する時には、最後に「AFTER」として移動後に上に来るカラム名を記述します。

先頭に移動させるSQL文


あまりないとは思いますが、順番を先頭に移動させる場合もあります。
その場合はAFTERではなく「FIRST」としてあげます。

ALTER TABLE テーブル名 MODIFY 順番を変えたいカラム名 データ型 FIRST;


例えば、カラム「email」を先頭に移動させる場合。

例)

ALTER TABLE questionnaire MODIFY email varchar(50) FIRST;


先頭への移動はシンプルですね。


phpMyAdminで順番を変更する


phpMyAdminが利用できる環境ではGUI操作で簡単に順番を変更することができます。

データベースを選択した状態でテーブルの「構造(Structure)」タブからカラムの一覧が確認できます。
カラムを編集するには「操作(Action)」の項目の「変更(Change)」をクリックします。

phpMyAdminでテーブルのカラムを編集

カラムの構造から一番右の「Move column」の項目のセレクトボックスでカラムの移動の設定をします。

phpMyAdminでカラムの順番を変更

選択項目として「after ‘code’」のように、どのカラムの後に移動させるかを設定できます。
一番先頭に移動させたい場合は「first」を選択します。

phpMyAdminでカラムの順番を設定

設定ができましたら最後に「保存(Save)」ボタンをクリックして変更完了です。


まとめ


コマンド操作とphpMyAdminの2つの方法をご紹介してきました。
テーブルの構造を構築している時にたまに変更したいときが出てきますので、そんな時はさらりと移動させてください。

ただ冒頭でもお話したように実際に運用が始まっている場合は、プログラムの改修をする必要が出る可能性がありますのでそこは注意してください。