枚举与集合要点
- ENUM 从给定清单里选一个,写入非法值会报错或变空
- SET 可同时勾选多个值,适合标签、权限位这类
- 底层按整数存,比存长字符串更省空间
- 取值写字符串即可,MySQL 自动映射到底层数字
- 增删可选值要 ALTER TABLE,频繁变动的字段别用 ENUM
- 排序按定义顺序而非字母序,这点容易踩坑
枚举与集合示例
CREATE TABLE user (
id INT PRIMARY KEY,
gender ENUM('M','F','U') NOT NULL DEFAULT 'U',
tags SET('vip','new','active') NOT NULL
);
INSERT INTO user (id, gender, tags) VALUES (1, 'M', 'vip,active');
避坑提醒:ENUM 排序按定义先后,想按字母排得用额外转换,新手常以为按拼音或字母序。