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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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复选
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
关系型数据库 MySQL
用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识
这篇文章介绍了如何在DBeaver中创建MySQL表的枚举(ENUM)字段,并探讨了MySQL中ENUM类型的一些行为特点,例如ENUM值的默认排序和在插入重复值时的表现。
65 1
用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识
|
7月前
|
NoSQL 数据挖掘 MongoDB
深入了解MongoDB:利用$type操作符轻松操控数据类型
深入了解MongoDB:利用$type操作符轻松操控数据类型
|
8月前
|
存储 SQL 关系型数据库
Mysql鸡础(从数据库中导入学生数据用list集合存储emp成员)
Mysql鸡础(从数据库中导入学生数据用list集合存储emp成员)
|
存储 关系型数据库 MySQL
mysql中修改某个数据列的名字或数据类型
mysql中修改某个数据列的名字或数据类型
273 1
|
存储 关系型数据库 MySQL
MySQL数据库(12):数据类型-Set集合
MySQL数据库(12):数据类型-Set集合
238 0
|
关系型数据库 MySQL 数据库
MySQL基本语句大囊集,可当作字典来翻看
MySQL基本语句大囊集,可当作字典来翻看
|
NoSQL MongoDB
一日一技:修改MongoDB集合中的字段名
一日一技:修改MongoDB集合中的字段名
243 0
ES6 从入门到精通 # 10:Set 集合数据类型
ES6 从入门到精通 # 10:Set 集合数据类型
69 0
ES6 从入门到精通 # 10:Set 集合数据类型
|
存储 NoSQL Redis
数据类型-set 类型介绍与基本操作| 学习笔记
快速学习数据类型-set 类型介绍与基本操作
数据类型-set 类型介绍与基本操作| 学习笔记
|
存储 NoSQL Redis
数据类型-sorted_set 类型介绍与基本操作 | 学习笔记
快速学习数据类型-sorted_set 类型介绍与基本操作
数据类型-sorted_set 类型介绍与基本操作 | 学习笔记

推荐镜像

更多