ENUM是MySQL中一种数据类型,它只能存储预定义的值,相当于在数值的基础上添加了一层限制,防止数据不合规。
举个例子,如果我们有一个“性别”字段需要存储,那么在定义表的时候就可以使用ENUM数据类型:
CREATE TABLE user (id INT(11) unsigned NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL DEFAULT '',gender ENUM('男', '女', '未知') NOT NULL DEFAULT '未知',PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这样我们定义的gender字段就只能存储‘男’、‘女’、‘未知’这三个值了,使用其他值就会报错。当然,也可以不定义默认值DEFAULT,这样在插入数据时gender就必须有值了。
在SQL语句中,使用ENUM作为筛选条件也很容易:
SELECT * FROM user WHERE gender = '男';
这样就可以查询所有gender为‘男’的用户了。
总的来说,ENUM是一种简单但有效的方式来限制数据的输入,确保数据的合规性。但是如果需要修改枚举值,就需要改变表结构,这一点需要注意。