在 MySQL 中向数据类型为枚举的列添加新值?

mysqlmysqli database

您可以使用 ALTER MODIFY 命令向数据类型为枚举的列添加新值。

如果您想要枚举的现有值,则需要在向数据类型为枚举的列添加新值时手动写入现有枚举值。

语法如下 −

ALTER TABLE yourTableName MODIFY COLUMN yourEnumColumnName
ENUM('yourExistingValue1','yourExistingValue2',........N,'yourNewValue1',’yourNewValue2’,.....N);

为了理解上述语法,让我们创建一个表。创建表的查询如下 −

mysql> create table AddingNewValueToEnumColumn
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Colors ENUM('RED','GREEN','BLUE'),
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.64 sec)

要检查上表的 DDL,请使用 show create 命令。查询如下 −

mysql> show create table AddingNewValueToEnumColumn\G

以下是输出 −

*************************** 1. row ***************************
Table − AddingNewValueToEnumColumn
Create Table − CREATE TABLE `addingnewvaluetoenumcolumn` (
   `Id` int(11) NOT NULL AUTO_INCREMENT,
   `Colors` enum('RED','GREEN','BLUE') DEFAULT NULL,
   PRIMARY KEY (`Id`)
   ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

查看枚举列"Colors",其值为"RED"、"GREEN"、"BLUE",如果您想要其他值,请使用上面讨论的 ALTER 命令。

现在,让我们添加新值,即"YELLOW"、"ORANGE"、"PINK"。以下是向枚举列"Colors"添加新值的查询 −

mysql> ALTER TABLE addingnewvaluetoenumcolumn MODIFY COLUMN Colors
   -> ENUM('RED','GREEN','BLUE','YELLOW','ORANGE','PINK');
Query OK, 0 rows affected (0.17 sec)
Records − 0 Duplicates − 0 Warnings − 0

检查表的描述以确保值是否被添加。语法如下 −

DESC yourTableName;

使用 DESC 检查表 ‘addingnewvaluetoenumcolumn’ 的描述−

mysql> desc AddingNewValueToEnumColumn;

以下是输出 −

+--------+-----------------------------------------------------+------+-----+---------+----------------+
| Field  | Type                                                | Null | Key | Default | Extra          |
+--------+-----------------------------------------------------+------+-----+---------+----------------+
| Id     | int(11)                                             | NO   | PRI | NULL    | auto_increment |
| Colors | enum('RED','GREEN','BLUE','YELLOW','ORANGE','PINK') | YES  |     | NULL    |                |
+--------+-----------------------------------------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)


相关文章