网站 备案 查询,北京网站建设q.479185700強,云南公共资源交易中心,在线考试系统网站模板mysql中的set和enum类型的用法和区别 mysql中的enum和set其实都是string类型的而且只能在指定的集合里取值, 不同的是set可以取多个值,enum只能取一个值。 12345678910111213[php] CREATE TABLE 20121101_t ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(20) N…mysql中的set和enum类型的用法和区别 mysql中的enum和set其实都是string类型的而且只能在指定的集合里取值, 不同的是set可以取多个值,enum只能取一个值。 1 2 3 4 5 6 7 8 9 10 11 12 13 [php] CREATE TABLE 20121101_t ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(20) NOT NULL, cl set(x,w,r) NOT NULL, c2 enum(f,d) NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB insert into 20121101_t values(null,a.txt,r,w,d); insert into 20121101_t values(null,b.txt,r,w,f); ENUM 是一个字符串对象其值通常选自一个允许值列表中该列表在表创建时的列规格说明中被明确地列举。 在下列某些情况下值也可以是空串() 或NULL 如果将一个无效值插入一个 ENUM (即一个不在允许值列表中的字符串)空字符串将作为一个特殊的错误值被插入。事实上这个字符串有别于一个普通的空字符串因为这个字符串有个数字索引值为 0。稍后有更详细描述。 如果一个 ENUM 被声明为NULLNULL 也是该列的一个合法值并且该列的缺省值也将为NULL 。如果一个ENUM 被声明为NOT NULL该列的缺省值将是该列表所允许值的第一个成员。 每个枚举值均有一个索引值 在列说明中列表值所允许的成员值被从 1 开始编号。 空字符串错误值的索引值为 0。这就意味着你可以使用下面所示的 SELECT 语句找出被赋于无效ENUM值的记录行。 mysql SELECT * FROM tbl_name WHERE enum_col0; NULL 值的索引值为NULL。 例如指定为 ENUM(one, two, three) 的一个列可以有下面所显示的任一值。每个值的索引值也如下所示 值 索引值 NULL NULL 0 one 1 two 2 three 3 测试时发现时用0来表示查不到数据。 换个枚举最大可以有 65535 个成员值。 从 MySQL 3.23.51 开始当表被创建时ENUM 值尾部的空格将会自动删除。 当为一个 ENUM 列赋值时字母的大小写是无关紧要的。然而以后从列中检索出来的值的大小写却是匹配于创建表时所指定的允许值。 如果在一个数字语境中检索一个ENUM列值的索引值将被返回。例如你可以像这样使用数字值检索一个ENUM 列 mysql SELECT enum_col0 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 转载于:https://www.cnblogs.com/xzj8023tp/p/6251629.html