前言
ENUM中文名称叫枚举类型,它的值范围需要在创建表时通过枚举方式显式指定,对1~255个成员的枚举需要1个字节存储;对于255~65535个成员,需要2个字节存储。最多允许有65535个成员。下面往测试表t中插入几条记录来看看ENUM的使用方法
MySQL版本:5.7
# 表结构说明:
CREATE TABLE `test_gender` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`gender` enum('M','F') DEFAULT NULL COMMENT '性别',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
一、插入测试
# 这里分别插入四个不同的状态值
# M 为正常插入、‘1’,‘2’测试 string 类型的索引下标、1 测试 int 类型的索引、f 测试小写写入
insert INTO test_gender (gender) VALUES ('M'),('1'),('2'),(1),('f')
插入结果如下:
可以看出,enum类型插入时并不区分大小写。并且采用下标的形式插入时类型限制并不严格(string 、int 类型均可)
二、查询测试
- 正常查询
select * from test_gender where gender='M'
结果正常
- 小写查询
select * from test_gender where gender='m'
查询出大写数据
- int 类型索引下标查询
select * from test_gender where gender=1
可查询出结果
- string 类型索引下标查询
select * from test_gender where gender='1'
查询结果为空
我们从上面的结果可以看出:
- 查询不区分大小写
- 使用索引下标查询可以只能使用 int 类型,string 类型会导致失效