データベースを運用していると、「カラム名を変更したい」という場面が出てくることがあります。たとえば、仕様変更や命名ルールの統一などが理由です。しかし、MySQLでカラム名を変更するには注意が必要です。単純な変更でも、システム全体に影響を及ぼす可能性があるためです。本記事では、MySQLにおけるカラム名の変更方法を、基本的なSQL構文から注意点、トラブルを避けるためのポイントまで、わかりやすく解説します。
MySQLでカラム名を変更するには?
MySQLでは、ALTER TABLE
文を使ってテーブルの構造を変更できます。カラム名の変更もこのALTER TABLE
で行います。構文は以下の通りです。
ALTER TABLE テーブル名 CHANGE 旧カラム名 新カラム名 データ型;
ポイントは、CHANGE
キーワードを使うこと、そしてデータ型を再指定しなければならない点です。これはMODIFY
ではできないため、注意が必要です。
基本構文の例
例えば、users
テーブルにあるusername
カラムをuser_name
に変更したい場合、次のように記述します。
ALTER TABLE users CHANGE username user_name VARCHAR(50);
ここでVARCHAR(50)
の部分は、変更前のカラムのデータ型をそのまま指定します。データ型を変更したくない場合も必須です。
MODIFYとの違いに注意
MODIFY
はカラムのデータ型や属性を変更する際に使いますが、カラム名の変更には使えません。以下のような構文はエラーになります。
-- エラーになる例
ALTER TABLE users MODIFY username user_name VARCHAR(50);
カラム名を変えたい場合は必ずCHANGE
を使いましょう。
複数カラムを同時に変更できる?
MySQLでは、CHANGE
を連続して書くことで複数のカラム名を一度に変更できます。
ALTER TABLE employees
CHANGE fname first_name VARCHAR(100),
CHANGE lname last_name VARCHAR(100);
ただし、複数変更する場合でも、それぞれのカラムについてデータ型を明示する必要があります。
カラム名変更の注意点
ビューやストアドプロシージャへの影響
カラム名を変更すると、ビューやストアドプロシージャで参照している名前が一致しなくなり、エラーが発生します。変更前に以下の点を確認しましょう。
- ビューに該当カラムが使われていないか
- ストアドプロシージャ内に該当カラム名が記述されていないか
- アプリケーション側のSQL文にハードコーディングされていないか
バックアップを取ってから作業を
安全のため、作業前には必ずバックアップを取得しましょう。特に本番環境では、変更ミスが重大な障害を引き起こすこともあります。
情報スキーマを使った確認方法
カラム名を変更する前に、現在のカラム情報を確認するにはINFORMATION_SCHEMA.COLUMNS
を使います。
SELECT COLUMN_NAME, COLUMN_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'users' AND TABLE_SCHEMA = 'your_database';
これにより、どのようなデータ型・属性が設定されているのかを事前に把握できます。
テーブル設計における命名ルールを見直す
カラム名の変更は、テーブル設計における命名ルールの見直しを意味することもあります。プロジェクト全体で命名規則が統一されていないと、今後も同様の変更が繰り返されるリスクがあります。
おすすめの命名ルール:
- 複数単語はスネークケース(例:
user_name
) - 英語で簡潔に表現(例:
created_at
,email_address
) - 省略語を避ける(例:
addr
よりもaddress
)
MySQL Workbenchでカラム名を変更する方法
MySQL WorkbenchなどのGUIツールを使えば、SQLを手打ちせずにカラム名を変更できます。
- 対象のテーブルを右クリックして「Alter Table」を選択
- 「Columns」タブで変更したいカラム名を編集
- 「Apply」をクリックしてSQLを実行
GUI操作でも、裏ではALTER TABLE
構文が実行されています。
エラーが出た場合の対処法
変更時に以下のようなエラーが出ることがあります。
- ERROR 1054 (42S22): Unknown column
→ 指定した旧カラム名が存在しない可能性があります。 - ERROR 1064 (42000): You have an error in your SQL syntax
→CHANGE
文でデータ型を忘れていないか確認しましょう。 - ERROR 1292 (22007): Incorrect datetime value
→ データ型を変更しようとして、既存データと不整合がある場合です。
実運用でのTips
- 変更作業はメンテナンス時間に行うのが理想
- スクリプトでロールバックできるようにしておく
- アプリケーション側の動作確認も忘れずに
まとめ
MySQLでのカラム名変更は、ALTER TABLE ... CHANGE
構文を用いれば簡単に実行できますが、影響範囲の確認やデータ型の指定など、いくつかの注意点があります。誤って構文を使うとエラーになるだけでなく、既存システムに不具合を起こす可能性もあるため、慎重な対応が求められます。
カラム名を変更する際は、事前準備と影響調査をしっかり行い、安全にデータベースを運用していきましょう。