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处理时间。