在MySQL中,enum是一種數(shù)據(jù)類(lèi)型,用于定義指定數(shù)量的可選值。它的語(yǔ)法如下:
ENUM('value1', 'value2', ...)
其中,'value1', 'value2'等是枚舉類(lèi)型的值,可以添加任意數(shù)量的值。這些值必須用單引號(hào)括起來(lái),用逗號(hào)隔開(kāi)。
使用enum可以減少需要插入的數(shù)據(jù),同時(shí)也可以保證插入的數(shù)據(jù)是有意義的。比如,一個(gè)性別屬性只有男和女兩種取值,那么可以使用enum來(lái)限制取值范圍:
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `gender` enum('male', 'female') DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在上面的示例中,gender字段只能選擇'male'或'female'兩種取值,如果嘗試插入其他值會(huì)報(bào)錯(cuò)。
enum類(lèi)型的字段可以通過(guò)普通的INSERT語(yǔ)句進(jìn)行插入操作:
INSERT INTO `user` (`name`, `gender`, `age`) VALUES ('Tom', 'male', 25);
同樣地,也可以通過(guò)SELECT語(yǔ)句查詢(xún)enum類(lèi)型的字段:
SELECT `name`, `gender`, `age` FROM `user` WHERE `id` = 1;
除了這些基本用法之外,enum還有一些其他的特性,比如可以通過(guò)SHOW COLUMNS語(yǔ)句查詢(xún)枚舉類(lèi)型的每個(gè)元素:
SHOW COLUMNS FROM `user` WHERE FIELD = 'gender';
輸出結(jié)果如下:
+--------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+---------------------+------+-----+---------+-------+ | gender | enum('male','female')| YES | | NULL | | +--------+---------------------+------+-----+---------+-------+
enum還有一些其他的特性,有興趣的讀者可以進(jìn)一步了解。