mysql中enum类型理解

时间:2021-10-02 10:19:09

ENUM是枚举类型,它虽然只能保存一个值,却能够处理多达65535个预定义的值。下面是我写的一个mysql语句

CREATE TABLE student(
id INT(11) PRIMARY key auto_increment,
name VARCHAR(10) not null,
sex ENUM('boy','girl','secret') DEFAULT 'secret'
)ENGINE=INNODB

如果sex列中插入了除bor,girl,secret之外的其它字符,则视为空字符串

1 每个枚举值都有一个索引:

  • 列出的元素被分配从1开始的索引值。
  • 空字符串作为错误值的索引值为0。可以使用select语句找出那些被指定无效枚举值的数据行。
SELECT * FROM tbl_name WHERE enum_col=0;
  • NULL的索引为NULL。
  • 这里的索引只是指出枚举表里该元素的位置,和表索引不同。

2 最多可以有65535个不同的元素值(实际限制小于3000)。 
3 枚举值不能是0或空字符串(虽然存在特殊情况)

4.enum在底层的存储方式是以整型进行存储的,比如这样的字段sex enum('male' , 'female' , 'both' , 'unknow')在查询时where sex='male'和where sex=1是等效的