MySQL 如何在ENUM数据类型中插入默认值

MySQL 如何在ENUM数据类型中插入默认值

在MySQL中,ENUM是一种数据类型,它提供了一组预定义的值供用户选择。ENUM列可以接受零个或多个值,但它只能指定其中的一个值作为默认值。然而,很多开发人员因为缺乏经验,在使用MYSQL时常常会遇到关于如何插入默认值的问题。

阅读更多:MySQL 教程

插入ENUM列的预定义值

在MYSQL中,当你想在一个列中插入预定义的值时,可以通过指定列中的每个值来完成,详细的示例如下:

CREATE TABLE IF NOT EXISTS `user` (
   `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
   `name` VARCHAR(255) NOT NULL,
   `status` ENUM('ACTIVE','INACTIVE') NOT NULL DEFAULT 'INACTIVE',
   PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

在上面的示例中,status列使用了ENUM数据类型,并默认指定了值为'INACTIVE',前两个值为预定义的值'ACTIVE''INACTIVE'。所以当你在插入user表数据时,status列默认值为'INACTIVE'

INSERT INTO `user` (`name`) 
VALUES ('张三');

然后,你可以通过SELECT语句来确认插入成功,示例代码如下:

SELECT * FROM `user`;

运行以上代码段,将会返回如下结果:

+----+----+----------+
| id | name | status |
+----+------|---------+
| 1 | 张三 | INACTIVE |
+----+------|---------+

如何更改ENUM列的默认值

假如你已经创建表并指定了某个列的默认枚举值,但是后续的业务需求更改了默认枚举值,或者者根据业务情况需要选择另一个枚举值作为默认值怎么办?MYSQL中,只需要使用ALTER TABLE命令并通过MODIFY关键字来修改ENUM列的默认值即可。

示例如下:

ALTER TABLE `user` MODIFY COLUMN `status` ENUM('ACTIVE','INACTIVE','DELETED') NOT NULL DEFAULT 'DELETED';

代码中增加了一个预定义值'DELETED',并将默认值更改为'DELETED'。以上的代码修改了status列的定义。需要注意的是,使用ALTER TABLE命令修改表结构的时候,要进行备份工作,以免数据丢失。

如何插入新的ENUM预定义值

你创建了一个ENUM列,并指定了它可用的预定义值。在这种情况下,你希望添加新的选项,可能是因为业务需要或者你只是想增强ENUM列的灵活性。你可以使用ALTER TABLE命令和ADD关键字来添加新的预定义选项。

例如,下面是为user表添加新的预定义选项'BANNED’的代码:

ALTER TABLE `user` MODIFY COLUMN `status` 
   ENUM('ACTIVE','INACTIVE','BANNED') NOT NULL DEFAULT 'INACTIVE';

这将会在现有的预定义选项中添加一个新的选项'BANNED’,同时将默认值保留在现有的预定义选项上。

结论

在MYSQL中使用ENUM列时,可以通过指定每个预定义值来插入值,也可以使用ALTER TABLE命令来更改和添加ENUM列的预定义值。使用ENUM列可以为数据库提供更好的可读性和表现力。同时,开发人员应该清楚ENUM列的缺点,因为它会增加数据库中的数据存储大小,同时使用ENUM列需要更多的磁盘空间和CPU处理时间。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程