在MySQL中,enum是一种数据类型,用于定义指定数量的可选值。它的语法如下:
ENUM('value1', 'value2', ...)
其中,'value1', 'value2'等是枚举类型的值,可以添加任意数量的值。这些值必须用单引号括起来,用逗号隔开。
使用enum可以减少需要插入的数据,同时也可以保证插入的数据是有意义的。比如,一个性别属性只有男和女两种取值,那么可以使用enum来限制取值范围:
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'两种取值,如果尝试插入其他值会报错。
enum类型的字段可以通过普通的INSERT语句进行插入操作:
INSERT INTO `user` (`name`, `gender`, `age`) VALUES ('Tom', 'male', 25);
同样地,也可以通过SELECT语句查询enum类型的字段:
SELECT `name`, `gender`, `age` FROM `user` WHERE `id` = 1;
除了这些基本用法之外,enum还有一些其他的特性,比如可以通过SHOW COLUMNS语句查询枚举类型的每个元素:
SHOW COLUMNS FROM `user` WHERE FIELD = 'gender';
输出结果如下:
+--------+---------------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+--------+---------------------+------+-----+---------+-------+| gender | enum('male','female')| YES | | NULL | |+--------+---------------------+------+-----+---------+-------+
enum还有一些其他的特性,有兴趣的读者可以进一步了解。