【MySQL】MySQL 中 ENUM 的用法

MySQL 中 ENUM 的用法

在 MySQL 中,ENUM 是一种字符串数据类型,用于列出一组预定义的值。它允许你为列指定一个有限的选项集,确保插入的数据仅限于这些选项之一。

1. 定义 ENUM 列

在创建表时,可以使用 ENUM 数据类型定义列。例如:

sql 复制代码
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    status ENUM('active', 'inactive', 'suspended') NOT NULL
);

在这个例子中,status 列只能包含 'active'、'inactive' 或 'suspended' 这三个值。

2. 插入数据

插入数据时,ENUM 列只能使用定义的值:

sql 复制代码
INSERT INTO users (name, status) VALUES ('Alice', 'active');
INSERT INTO users (name, status) VALUES ('Bob', 'inactive');

如果尝试插入一个不在定义范围内的值,会导致错误:

sql 复制代码
INSERT INTO users (name, status) VALUES ('Charlie', 'banned');  -- 错误

3. 修改 ENUM 列

可以使用 ALTER TABLE 命令修改 ENUM 列的定义。例如,添加一个新的选项:

sql 复制代码
ALTER TABLE users MODIFY status ENUM('active', 'inactive', 'suspended', 'deleted') NOT NULL;

5. 注意事项

存储:ENUM 类型的值在内部以整数形式存储,实际存储的字节数取决于定义的值的数量(最多 65535 个值)。

排序:ENUM 值的排序顺序与定义的顺序相同。

空值:如果列定义为 NOT NULL,则必须提供有效的 ENUM 值。

性能:在某些情况下,使用 ENUM 可以提高性能,因为它使用整数存储和比较。

sql 复制代码
CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    category ENUM('electronics', 'furniture', 'clothing') NOT NULL
);

INSERT INTO products (name, category) VALUES ('Laptop', 'electronics');
INSERT INTO products (name, category) VALUES ('Sofa', 'furniture');

总结

ENUM 是一个方便的 MySQL 数据类型,用于限制列的值为一组预定义的字符串,确保数据的有效性和一致性。

相关推荐
z442475326几秒前
CSS如何实现文本溢出显示省略号_掌握text-overflow使用方法
jvm·数据库·python
m0_515098422 分钟前
如何处理.NET中的Oracle Number溢出_OracleDecimal与C# decimal数据类型对应
jvm·数据库·python
2401_887724503 分钟前
Less如何优化CSS文件大小_利用压缩配置去除冗余样式
jvm·数据库·python
吕源林4 分钟前
Python中PyTorch如何处理NaN损失值_添加梯度裁剪与检查输入数据
jvm·数据库·python
Absurd5878 分钟前
SQL如何利用JOIN查询进行数据报表汇总_聚合函数与分组连接方法
jvm·数据库·python
程序员陆业聪8 分钟前
你调的每一个接口背后,到底发生了什么?
android
m0_5145205711 分钟前
如何在 Go 中基于接口样例动态创建对象实例
jvm·数据库·python
2501_9142459314 分钟前
如何测试FSFO观察者进程的自动切换_模拟主库断网与Observer心跳超时
jvm·数据库·python
StackNoOverflow16 分钟前
Sentinel服务保护框架完全指南:从原理到实践
java·数据库·sentinel
m0_7349497917 分钟前
如何按优先级控制 Flex 容器内子元素的截断顺序
jvm·数据库·python