MySQLのENUM型カラムに新しい値を追加する方法【ALTER TABLE活用ガイド】
MySQLでは、ALTER TABLE ... MODIFYコマンドを使用することで、ENUM型のカラムに新しい値を追加できます。
ただし注意点として、すでに登録されている既存のENUM値をそのまま残したい場合は、新しい値を追加する際に既存の値もすべて明示的に記述する必要があります。既存の値を書き忘れると、それらは定義から削除されてしまうためです。
基本構文
ENUM型カラムに新しい値を追加する際の構文は以下の通りです。
ALTER TABLE テーブル名 MODIFY COLUMN カラム名
ENUM('既存値1','既存値2',........N,'新規値1','新規値2',.....N);この構文を実際に動かしながら理解していきましょう。まずはサンプルテーブルを作成します。
サンプルテーブルの作成
以下のクエリで、「Colors」というENUM型カラムを持つテーブルを作成します。
mysql> create table AddingNewValueToEnumColumn
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Colors ENUM('RED','GREEN','BLUE'),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.64 sec)このテーブルには、RED(赤)・GREEN(緑)・BLUE(青)の3つの値を持つENUM型カラム「Colors」が定義されています。
テーブルのDDLを確認する
作成したテーブルの定義(DDL)を確認するには、SHOW CREATE TABLEコマンドを使用します。
mysql> show create table AddingNewValueToEnumColumn\G
実行結果は以下の通りです。
*************************** 1. row ***************************
Table − AddingNewValueToEnumColumn
Create Table − CREATE TABLE `addingnewvaluetoenumcolumn` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Colors` enum('RED','GREEN','BLUE') DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci
1 row in set (0.00 sec)出力結果を見ると、「Colors」カラムには現在 'RED','GREEN','BLUE' の3つの値のみが定義されていることがわかります。
ALTER TABLEで新しい値を追加する
ここで、新しい値として 'YELLOW'(黄)・'ORANGE'(オレンジ)・'PINK'(ピンク) を追加してみましょう。重要なのは、既存の3つの値を先頭に記述し、その後に新しい値を続けることです。
mysql> ALTER TABLE addingnewvaluetoenumcolumn MODIFY COLUMN Colors
-> ENUM('RED','GREEN','BLUE','YELLOW','ORANGE','PINK');
Query OK, 0 rows affected (0.17 sec)
Records − 0 Duplicates − 0 Warnings − 0エラーなく実行されれば、新しい値の追加は完了です。
変更結果を確認する
値が正しく追加されたかどうかは、DESCコマンドでテーブルの構造を確認すればわかります。
DESC テーブル名;
実際にサンプルテーブルに対して実行してみましょう。
mysql> desc AddingNewValueToEnumColumn;
実行結果は以下の通りです。
+--------+-----------------------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------------------------------------------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| Colors | enum('RED','GREEN','BLUE','YELLOW','ORANGE','PINK') | YES | | NULL | |
+--------+-----------------------------------------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)「Colors」カラムのType欄に enum('RED','GREEN','BLUE','YELLOW','ORANGE','PINK') と表示されており、6つの値すべてが正しく登録されていることが確認できました。
まとめ
- ENUM型カラムへの値の追加は
ALTER TABLE ... MODIFY COLUMNコマンドで行う - 既存の値を残したい場合は、必ず既存の値も含めて列挙する
- 変更後は
DESCやSHOW CREATE TABLEで定義内容を確認すると安心
ENUM型は許可される値を制限できる便利なデータ型ですが、値の追加・変更時には既存定義の扱いに注意しましょう。
-
MySQLで開始値を指定してAUTO_INCREMENTカラムを追加する方法
すでに作成済みのテーブルに新しいカラムを追加するには、ALTER TABLE 文と ADD COLUMN 句を使用します。さらに AUTO_INCREMENT 属性を組み合わせることで、連番が自動的に採番されるカラムに対して、任意の開始値(初期値)を設定することも可能です。本記事では、既存のテーブルへ「1000」から始まる自動増加カラムを追加する手順を、実際のSQL実行例とあわせて解説します。 ステップ1:テーブルを作成する まずはサンプル用のテーブルを作成しましょう。ここでは学生名だけを持つシンプルなテーブルを定義します。 mysql> create table DemoTable
-
MySQLでJSON型カラムにデフォルト値を設定する方法
MySQLでは、JSON型のカラムにもデフォルト値を設定できます。その場合は、DEFAULT制約を使用します。基本的な構文は以下の通りです。ALTER TABLE テーブル名 MODIFY COLUMN カラム名 JSON NOT NULL DEFAULT ( JSON_OBJECT() );サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。ここでは demo24 というテーブルを作成します。mysql> create table demo24 -> ( -> employee_information text -> ) ->; Query OK,