创建枚举类型字段,需要在创建字段的时候给枚举类型赋初值

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