MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのENUM型カラムに新しいメンバー(値)を追加する方法

MySQLのENUM型カラムに新しいメンバー(選択肢となる値)を追加するには、ALTER TABLEコマンドを使用します。ポイントは、既存の値をすべて含めたうえで、追加したい新しい値を一緒に列挙し直すことです。

基本構文

ALTER TABLE yourTableName
MODIFY COLUMN yourColumnName
enum(yourOldValue1,yourOldValue2,....N,yourNewValue1,yourNewValue2,....N);

MODIFY COLUMN句でENUM型を再定義する際は、既存の値を必ず先頭から順番どおりに記述してください。ENUMは内部的に値をインデックス(1から始まる番号)として管理しているため、既存の値の順序を入れ替えたり削除したりすると、すでに格納されているデータとの対応関係が崩れる恐れがあります。

サンプルテーブルの作成

まず、動作を確認するためのテーブルを作成しましょう。以下のクエリを実行します。

mysql> create table EnumDemo
-> (
-> AllColors enum('RED','GREEN')
-> );
Query OK, 0 rows affected (0.66 sec)

この時点で、AllColorsカラムには「RED」と「GREEN」の2つのメンバーが定義されています。

ENUM型に新しいメンバーを追加する

それでは、「YELLOW」と「BLUE」の2つの値を追加してみましょう。以下のようにALTER TABLE文を実行します。

mysql> alter table EnumDemo
-> modify column AllColors enum('RED','GREEN','YELLOW','BLUE');
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0

変更結果の確認

テーブル構造が正しく更新されているかどうかを確認しましょう。SHOW CREATE TABLE文を実行して現在のテーブル定義を表示します。

mysql> SHOW CREATE TABLE EnumDemo;

出力結果

+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table    | Create Table                                                                                                                   |
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EnumDemo | CREATE TABLE `enumdemo` (`AllColors` enum('RED','GREEN','YELLOW','BLUE') DEFAULT NULL ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci      |
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

出力結果を見ると、ENUM定義に「YELLOW」と「BLUE」の2つの新しいメンバーが正常に追加されていることが確認できます。

まとめ

  • ENUM型へのメンバー追加は ALTER TABLE ... MODIFY COLUMN を使えば簡単に行えます。
  • 既存の値は順序を変えずにすべて残し、新しい値は末尾に追加するのが安全です。
  • 重要なテーブルを変更する場合は、実行前にバックアップを取得しておくと安心です。
  1. MySQLでDATETIME型の列に時間を追加する方法|ADDTIME()関数の使い方を解説

    DATETIME型の値に時間を加算したい場合、MySQLではADDTIME()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、ADDTIME()関数で時間を追加する手順をわかりやすく解説します。1. テーブルを作成するまず、DATETIME型の列を持つテーブルを作成します。mysql> create table DemoTable1848 ( ShippingDate datetime ); Query OK, 0 rows affected (0.00 sec)2. サンプルデータを挿入する次に、INSERT文を使って

  2. PythonでMySQLのテーブルに新しい列(カラム)を追加する方法

    既存のテーブルに後から新しい列を追加したい場面は少なくありません。例えば、「Students(学生)」というテーブルに「Name(名前)」「Age(年齢)」「Roll no(出席番号)」といった列があるとします。ここに、新しく「Address(住所)」という列を追加したい場合、どうすればよいのでしょうか。このようなときに活躍するのがALTERコマンドです。ALTERコマンドは、データベース内の列を変更・削除・更新するためのコマンドで、ADD句と組み合わせることで、テーブルに新しい列を追加することもできます。構文ALTER TABLE table_name ADD new_column_name