当前位置:   article > 正文

mysql中set 用法_mysql中set和enum使用(简单介绍)

mysql set

简单介绍

SET类型

在创建表时,就指定SET类型的取值范围。

属性名 SET('值1','值2','值3'...,'值n')

其中,“属性名”参数指字段的名称;“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与ENUM类型一样。SET类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是有64个元素构成的组合,根据成员的不同,存储上也有所不同:

1~8成员的集合,占1个字节。

9~16成员的集合,占2个字节。

17~24成员的集合,占3个字节。

25~32成员的集合,占4个字节。

33~64成员的集合,占8个字节。

同ENUM类型一样,列表中的每个值都有一个顺序排列的编号。MySQL中存入的是这个编号,而不是列表中的值。插入记录时,SET字段中的元素顺序无关紧要。存入MySQL数据库后,数据库系统会自动按照定义时的顺序显示。如果插入的成员中有重复,则只存储一次。

比如:

drop table if EXISTStest2;create tabletest2(user varchar(30),

sexSET('male','female')

)ENGINE=INNODB;insert into test2 select 'haha1','male';insert into test2 select 'haha2','female';insert into test2 select 'haha3','nofemal';

最后一行会报错

原因也是因为’nofemal’不是他们其中的’male’和’female’不是其中的任何一个

ENUM类型

ENUM类型的值范围需要在创建表时通过枚举方式显式指定,对1~255个成员的枚举需要1个字节存储;对于256~65535个成员,需要2个字节存储。最多可以有65535个成员,而SET类型最多只能包含64个成员。两者的取值只能在成员列表中选取。ENUM类型只能从成员中选择一个,而SET类型可以选择多个。因此,对于多个值中选取一个的,可以选择ENUM类型。例如,“性别”字段就可以定义成ENUM类型,因为只能在“男”和“女”中选其中一个。对于可以选取多个值的字段,可以选择SET类型。例如,“爱好”字段就可以选择SET类型,因为可能有多种爱好。

属性名 ENUM('值1','值2','值3'...'值n')

drop table if EXISTStest;create tabletest(user varchar(30),

sex enum('male','female')

)ENGINE=INNODB;insert into test select 'haha1','male';insert into test select 'haha2','female';insert into test select 'haha3','nofemal';

注意:

ENUM和SET类型都是集合类型,不同的是ENUM类型最多可枚举65535个元素,而SET类型最多枚举64个元素。且set中可以存set枚举中的组合,比如执行

insert into test2 select ‘haha4’,’ 'male', 'female'’;

这样也是成功的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/752816
推荐阅读
相关标签
  

闽ICP备14008679号