枚举(ENUM)是MySQL中一种非常有用的数据类型。当我们需要限定一个字段只能取一些特定值的时候,就可以使用枚举型。模拟一个简单的用户角色表,其中role字段只能取admin、user、guest三个值。
CREATE TABLE user (id INT NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL,role ENUM('admin', 'user', 'guest') NOT NULL,PRIMARY KEY (id));
上述代码中,我们在定义数据表时指定了枚举型的取值范围,每个取值之间用逗号隔开,用单引号包围。在实际使用时,我们只能给这个字段赋值为这些取值之一。
INSERT INTO user(name, role) VALUES('Alice', 'admin');INSERT INTO user(name, role) VALUES('Bob', 'user');INSERT INTO user(name, role) VALUES('Charlie', 'guest');INSERT INTO user(name, role) VALUES('David', 'manager'); // 这一行会报错
注意,如果我们试图给一个枚举型字段赋值为不在枚举范围内的值,MySQL会抛出一个错误。
使用枚举型的好处在于,它可以让我们在语法上限定字段的取值范围,确保数据的有效性。此外,它还可以减少存储空间的占用,因为MySQL会把枚举值转换成整型存储。