MySQLで列にENUM型を設定する方法
MySQLでは、テーブルを作成する際に、あらかじめ決められた文字列のリストから値を選ばせたい列に対してENUM型を設定できます。ENUMは、指定した候補値以外のデータが登録されるのを防ぎたい場合に便利なデータ型です。ここでは、実際にテーブルを作成しながら基本的な使い方を見ていきましょう。
ENUM型を含むテーブルを作成する
まず、学生の点数と合否ステータスを管理するテーブルを作成します。「StudentStatus」列には「First」「Second」「Fail」の3つの値のみを許可するENUM型を設定しています。
mysql> create table DemoTable2019
-> (
-> StudentMarks int,
-> StudentStatus ENUM('First','Second','Fail')
-> );
Query OK, 0 rows affected (1.75 sec)
INSERTコマンドでレコードを追加する
次に、insertコマンドを使用してテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable2019 values(96,'First');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable2019 values(28,'Fail');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable2019 values(45,'Second');
Query OK, 1 row affected (0.19 sec)
SELECT文ですべてのレコードを表示する
select文を実行して、テーブル内の全レコードを確認してみましょう。
mysql> select *from DemoTable2019;
実行すると、以下のような出力が得られます。
+--------------+---------------+
| StudentMarks | StudentStatus |
+--------------+---------------+
| 96 | First |
| 28 | Fail |
| 45 | Second |
+--------------+---------------+
3 rows in set (0.00 sec)
ENUM列の値を条件にレコードを取得する
続いて、ENUM型の列を持つテーブルから特定のレコードを取得するクエリを紹介します。where句でStudentMarksが28のレコードに絞り込み、order byとlimitを組み合わせて1件だけ取得しています。
mysql> select *from DemoTable2019
-> where StudentMarks=28
-> order by StudentStatus limit 1;
このクエリを実行すると、次の結果が出力されます。
+--------------+---------------+
| StudentMarks | StudentStatus |
+--------------+---------------+
| 28 | Fail |
+--------------+---------------+
1 row in set (0.00 sec)
ENUM型を使う際のポイント
ENUM型は内部的には整数として保存されるため、検索やソートも効率的に行えます。ただし、後から候補値を変更する場合はALTER TABLEによる修正が必要になるため、テーブル設計の段階で許可する値を慎重に決めておくことが重要です。
-
MySQLで最初の3件のレコードに特定の値を設定する方法
MySQLで、テーブルの最初の3件のレコードだけに特定の値を設定したい場合は、UPDATE文と組み合わせて LIMIT 3 を使用します。MySQLのUPDATE文は ORDER BY 句と LIMIT 句をサポートしているため、更新対象の行数を簡単に制御できます。ここでは、実際の手順をサンプルコードとともに解説します。 サンプルテーブルの作成 まず、テーブルを作成しましょう。 mysql> create table DemoTable1968 ( Id int NOT NULL AUTO_I
-
MySQLでENUM型の値にカスタムメッセージを表示する方法
MySQLでENUM型の値にカスタムメッセージを表示する方法MySQLでは、IF関数による条件分岐を使うことで、ENUM型の値に応じたカスタムメッセージを簡単に表示できます。ここでは、実際のサンプルを使いながら、テーブル作成からメッセージ表示までの手順を順番に解説します。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。isActive列には「Y」「N」の2つの値を持つENUM型を定義しています。mysql> create table DemoTable1992 ( ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY