创建枚举类型字段,需要在创建字段的时候给枚举类型赋初值
1、 创建表
2、 创建字段
3、 如果在创建枚举字段的时候没有给初值,默认只有Null或空值,如果想给没有赋初值的枚举字段给值,会报Data truncated for column错误,给值不成功
4、 如果想给枚举字段添加枚举值,需要先将使用枚举字段的数据全部删除,才能修改枚举值,rating为枚举类型的字段
alter table file modify column rating enum('G','PG','PG-13','R','NC-17');
MYSQL中ENUM类型
ENUM
在下列某些情况下,值也可以是空串("") 或 NULL:
· 如果将一个无效值插入一个 ENUM
· 如果一个 ENUM 被声明为 NULL,NULL 也是该列的一个合法值,并且该列的缺省值也将为 NULL 。如果一个 ENUM 被声明为 NOT NULL,该列的缺省值将是该列表所允许值的第一个成员。
每个枚举值均有一个索引值:
· 在列说明中列表值所允许的成员值被从 1 开始编号。
· 空字符串错误值的索引值为 0。这就意味着,你可以使用下面所示的 SELECT 语句找出被赋于无效 ENUM值的记录行。
mysql>SELECT * FROM tbl_name WHERE enum_col=0;
· NULL 值的索引值为 NULL。
例如,指定为 ENUM("one", "two","three")
值 | 索引值 |
NULL | NULL |
"" | 0 |
"one" | 1 |
"two" | 2 |
"three" | 3 |
换个枚举最大可以有 65535 个成员值。
从 MySQL 3.23.51 开始,当表被创建时,ENUM
当为一个 ENUM
如果在一个数字语境中检索一个ENUM,列值的索引值将被返回。例如,你可以像这样使用数字值检索一个 ENUM
mysql> SELECTenum_col+0 FROM tbl_name;
如果将一个数字存储到一个 ENUM 中,数字被当作为一个索引值,并且存储的值是该索引值所对应的枚举成员。(但是,这在 LOAD DATA 将不能工作,因为它视所有的输入均为字符串。) 在一个 ENUM
ENUM 值依照列规格说明中的列表顺序进行排序。(换句话说,ENUM 值依照它们的索引号排序。)举例来说,对于 ENUM("a", "b") "a" 排在 "b" 后,但是对于 ENUM("b", "a") , "b" 却排在 "a" 之前。空字符串排在非空字符串前,NULL 值排在其它所有的枚举值前。为了防止意想不到的结果,建议依照字母的顺序定义 ENUM 列表。也可以通过使用 GROUP BY CONCAT(col)来确定该以字母顺序排序而不是以索引值。
如果希望得到一个 ENUM 列的所有可能值,可以使用 SHOW COLUMNS FROM table_name LIKE enum_colum