前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【mysql】SET类型

【mysql】SET类型

原创
作者头像
兮动人
发布2022-03-13 10:32:52
1.5K0
发布2022-03-13 10:32:52
举报

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;
在这里插入图片描述
在这里插入图片描述
  • 插入重复的SET类型成员时,MySQL会自动删除重复的成员#插入重复的SET类型成员时,MySQL会自动删除重复的成员 INSERT INTO test_set (s) VALUES ('A,B,C,A');
    在这里插入图片描述
    在这里插入图片描述
  • 向SET类型的字段插入SET成员中不存在的值时,MySQL会抛出错误。#向SET类型的字段插入SET成员中不存在的值时,MySQL会抛出错误。 INSERT INTO test_set (s) VALUES ('A,B,C,D');
    在这里插入图片描述
    在这里插入图片描述

举例:

CREATE TABLE temp_mul(
gender ENUM('男','女'),
hobby SET('吃饭','睡觉','打豆豆','写代码')
);
INSERT INTO temp_mul VALUES('男','睡觉,打豆豆'); #成功
在这里插入图片描述
在这里插入图片描述
  • 因为枚举类型一次只能取一个值,所以报错# Data truncated for column 'gender' at row 1 INSERT INTO temp_mul VALUES('男,女','睡觉,写代码'); #失败
    在这里插入图片描述
    在这里插入图片描述
  • 当插入没有被定义的值时,也会报错# Data truncated for column 'gender' at row 1 INSERT INTO temp_mul VALUES('兮动人','睡觉,写代码');#失败
    在这里插入图片描述
    在这里插入图片描述
  • 只有符合类型的要求时才会添加成功INSERT INTO temp_mul VALUES('男','睡觉,写代码,吃饭'); #成功
    在这里插入图片描述
    在这里插入图片描述

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SET类型
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档