MySQL 如何在MySQL中创建和使用ENUM列?

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列的定义。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程