【mysql】SET类型
  TEZNKK3IfmPf 2023年11月12日 46 0
SET类型
  • SET表示一个字符串对象,可以包含0个或多个成员,但成员个数的上限为64。设置字段值时,可以取 取值范围内的 0 个或多个值。

  • 当SET类型包含的成员个数不同时,其所占用的存储空间也是不同的,具体如下:

成员个数范围(L表示实际成员个数) 占用的存储空间
1 <= L <= 8 1个字节
9 <= L <= 16 2个字节
17 <= L <= 24 3个字节
25 <= L <= 32 4个字节
33 <= L <= 64 8个字节
  • SET类型在存储数据时成员个数越多,其占用的存储空间越大。
  • 注意:SET类型在选取成员时,可以一次选择多个成员,这一点与ENUM类型不同。

举例:

创建表:

CREATE TABLE test_set(
s SET ('A', 'B', 'C')
);

向表中插入数据:

INSERT INTO test_set (s) VALUES ('A'), ('A,B');

SELECT *
FROM test_set;

【mysql】SET类型_数据库

  • 插入重复的SET类型成员时,MySQL会自动删除重复的成员
#插入重复的SET类型成员时,MySQL会自动删除重复的成员
INSERT INTO test_set (s) VALUES ('A,B,C,A');

【mysql】SET类型_mysql SET类型_02

  • 向SET类型的字段插入SET成员中不存在的值时,MySQL会抛出错误。
#向SET类型的字段插入SET成员中不存在的值时,MySQL会抛出错误。
INSERT INTO test_set (s) VALUES ('A,B,C,D');

【mysql】SET类型_database_03

举例:

CREATE TABLE temp_mul(
gender ENUM('男','女'),
hobby SET('吃饭','睡觉','打豆豆','写代码')
);
INSERT INTO temp_mul VALUES('男','睡觉,打豆豆'); #成功

【mysql】SET类型_mysql SET类型_04

  • 因为枚举类型一次只能取一个值,所以报错
# Data truncated for column 'gender' at row 1
INSERT INTO temp_mul VALUES('男,女','睡觉,写代码'); #失败

【mysql】SET类型_数据库_05

  • 当插入没有被定义的值时,也会报错
# Data truncated for column 'gender' at row 1
INSERT INTO temp_mul VALUES('兮动人','睡觉,写代码');#失败

【mysql】SET类型_database_06

  • 只有符合类型的要求时才会添加成功
INSERT INTO temp_mul VALUES('男','睡觉,写代码,吃饭'); #成功

【mysql】SET类型_mysql set_07

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   25   0   0 mysql
  TEZNKK3IfmPf   2024年05月31日   26   0   0 sqlite数据库
  TEZNKK3IfmPf   2024年05月31日   31   0   0 数据库mysql
  TEZNKK3IfmPf   2024年05月31日   27   0   0 数据库mysql
TEZNKK3IfmPf