MySQL数据库(12):数据类型-Set集合

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: MySQL数据库(12):数据类型-Set集合

数据类型-Set集合

多个数据选项可以同时保存,本质按照对应的二进制位来控制


1表示选中

0表示没有选中

语法


set('值1', '值2'...)
1个字节,set只能有8个选项
2个字节,set只能有16个选项
3个字节,set只能有24个选项
8个字节,set只能有64个选项

set和enum一样,最终存储到数据字段中的依然是数字而不是真实的字符串


create table my_set(
    hobby set('篮球', '足球', '羽毛球', '乒乓球')
);
mysql> desc my_set;
+-------+------------------------------------------------+------+-----+---------+-------+
| Field | Type                                           | Null | Key | Default | Extra |
+-------+------------------------------------------------+------+-----+---------+-------+
| hobby | set('篮球','足球','羽毛球','乒乓球')           | YES  |     | NULL    |       |
+-------+------------------------------------------------+------+-----+---------+-------+
-- 多个选项逗号隔开
insert into my_set (hobby) values ('篮球,足球,乒乓球');
mysql> select * from my_set;
+-------------------------+
| hobby                   |
+-------------------------+
| 篮球,足球,乒乓球        |
+-------------------------+
-- 数据选项与插入的顺序无关,最终会变成选项对应的顺序
insert into my_set (hobby) values ('足球,篮球');
mysql> select * from my_set;
+-------------------------+
| hobby                   |
+-------------------------+
| 篮球,足球,乒乓球        |
| 篮球,足球               |
+-------------------------+

数据存储的方式

系统将对应的数据选项按照顺序进行编排,从第一个开始进行占位,每一个都对应一个二进制位


数据存储的时候,如果被选中,那么对应的为的值就变为1,否则为0


系统在存储的时候,会自动将的得到的二进制反转,然后转换成十进制存储

set('篮球','足球','羽毛球','乒乓球')
      1     1       1       1
('篮球,足球,乒乓球')
      1 1 0 1
反转: 1 0 1 1  =》 1 + 2 + 8 = 11
('足球,篮球')
      1  1  0  0
反转: 0  0   1   1  =》 1 + 2 = 3
-- 以数值方式查看数字
mysql> select hobby + 0 from my_set;
+-----------+
| hobby + 0 |
+-----------+
|        11 |
|         3 |
+-----------+

可以插入数值代替实际插入

mysql> insert into my_set (hobby) values (15);
mysql> select hobby from my_set;
+-----------------------------------+
| hobby                             |
+-----------------------------------+
| 篮球,足球,乒乓球                  |
| 篮球,足球                         |
| 篮球,足球,羽毛球,乒乓球           |
+-----------------------------------+

集合的意义


规范数据


节省存储空间


enum单选


set复选

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
监控 算法 安全
带用集合算法set union讲解
带用集合算法set union讲解
20 0
|
28天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
2天前
|
存储 SQL 关系型数据库
【mysql】mysql中的数据类型知多少?
【mysql】mysql中的数据类型知多少?
|
4天前
|
关系型数据库 MySQL
MySQL基础(二:常用数据类型及MySQL创建过程实例)
MySQL基础(二:常用数据类型及MySQL创建过程实例)
MySQL基础(二:常用数据类型及MySQL创建过程实例)
|
6天前
|
存储 缓存 关系型数据库
【Mysql】Schema与数据类型优化
【Mysql】Schema与数据类型优化
7 0
|
7天前
|
存储 JSON 关系型数据库
MySQL 数据类型剖析
MySQL 数据类型剖析
11 1
|
15天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
23天前
|
存储 JSON 关系型数据库
mysql数据类型
mysql数据类型
|
29天前
|
存储 SQL 关系型数据库
【MySQL】5. 数据类型
【MySQL】5. 数据类型
23 0
|
29天前
|
存储 安全 Java
Java集合详解(List、Map、Set)
Java集合详解(List、Map、Set)
34 4