欠伸展肢体,吟咏心自愉。这篇文章主要讲述MySQL数据库(12):数据类型-Set集合相关的知识,希望能为你提供帮助。
数据类型-Set集合【MySQL数据库(12)(数据类型-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(篮球,足球,羽毛球,乒乓球)
1111(篮球,足球,乒乓球)
1 1 0 1
反转: 1 0 1 1=》 1 + 2 + 8 = 11(足球,篮球)
1100
反转: 0011=》 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复选
推荐阅读
- 电子邮件安全
- 如何使用AIRIOT物联网低代码平台进行报表管理()
- RxJava的操作符
- MongoDB数据库入门
- VMware Tanzu Community Edition 部署非托管集群
- 基于SSM+Shiro+Bootstrap实现用户权限管理系统
- netty系列之:kequeue传输协议详解
- 你该搞清楚的体系化安全思维
- VMWare实践(命令行方式升级ESXI6.7到最新版本)