MySQL 如何在MySQL中创建和使用ENUM列?
在MySQL中,ENUM列是一种枚举列,它可以帮助我们将一个列限定为一组预定义的值,而不是任意的值。这个特性可以用于优化表的设计以及保证数据的一致性。在本文中,我们将讲解如何创建和使用ENUM列。
阅读更多:MySQL 教程
创建ENUM列
我们可以在创建表时定义ENUM列,如下所示:
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
gender ENUM('male', 'female'),
age INT
);
在上面的SQL语句中,我们定义了一个名为user
的表,其中包含了一个gender
列,它的类型为ENUM,包含了两个值:'male'
和'female'
,任何其他的值都将被拒绝。
插入ENUM列的值
我们可以通过SQL语句中的INSERT INTO
语句向表中插入数据,并给ENUM列赋值。下面是一些示例:
INSERT INTO user (name, gender, age) VALUES ('Tom', 'male', 18);
INSERT INTO user (name, gender, age) VALUES ('Lucy', 'female', 20);
INSERT INTO user (name, gender, age) VALUES ('Mike', 'unknow', 21); -- 错误,因为'unknow'不在预定义的值中
在上面的示例中,我们成功地向user
表中插入了两条记录,而第三条记录由于gender
列的值不在预定义的值中而被拒绝。
查询ENUM列的值
我们可以使用SELECT
语句查询ENUM列的值:
SELECT * FROM user WHERE gender='male';
这将返回所有gender
列的值为'male'
的记录。
另外,我们还可以使用ENUM
类型的内置函数,例如enum_range()
和enum_value()
:
SELECT enum_range('gender'); -- 返回预定义的值范围:'male', 'female'
SELECT enum_value('gender', 1); -- 返回第二个预定义的值:'female'
修改ENUM列的值
我们可以使用ALTER TABLE
语句来修改ENUM列的定义,例如添加或删除一个预定义的值:
ALTER TABLE user MODIFY gender ENUM('male', 'female', 'unknow'); -- 添加一个预定义的值
ALTER TABLE user MODIFY gender ENUM('male'); -- 只保留一个预定义的值:'male'
在上面的示例中,我们分别添加了一个预定义的值和删除了除了'male'
以外的预定义的值。
当我们修改一个ENUM列的定义时,我们同时也可以指定默认的值:
ALTER TABLE user MODIFY gender ENUM('male', 'female', 'unknow') DEFAULT 'unknow';
这将默认使用'unknow'
作为gender
列的值,除非我们在插入记录时明确地指定了另一个值。
结论
ENUM列是一种枚举列,它可以帮助我们将一个列限定为一组预定义的值,而不是任意的值。我们可以在创建表时定义ENUM列,使用INSERT INTO
语句向表中插入数据,并使用SELECT
语句查询ENUM列的值。我们还可以使用ALTER TABLE
语句来修改ENUM列的定义。