enumの列挙値には文字列を指定する。
DBのenum型のカラムに実際に格納される値は、列挙値のインデックスの数値。
--enum型のsizeというカラムを定義する--
CREATE TABLE shirts (
name VARCHAR(40),
size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
);
ENUM カラムに数字を格納するのは、分かりづらいので良くない
以下のようなnumbersというENUM型のカラムを定義する
numbers ENUM('0','1','2')
--配列と違ってインデックスは1から始まる--
INSERT INTO t (numbers) VALUES(2)
-- insertした2は、インデックスとして解釈されるため1が返る --
SELECT * FROM t
INSERT INTO t (numbers) VALUES('2')
-- insertした'2'は、列挙値と一致するので2が返る --
SELECT * FROM t
INSERT INTO t (numbers) VALUES('3')
-- insertした'3'は、どの列挙値とも一致しないのでインデックスとして扱われ、2が返る --
SELECT * FROM t