通俗易懂:描述MySQL中SET和ENUM数据类型的异同。

MySQL中的SET和ENUM数据类型均用于限制字段可接受的值范围,但它们的设计用途和功能特性有所不同:

SET类型

- SET是一种集合类型,它可以存储一组预定义的离散值,并且在一个SET字段中可以同时存储多个值。

- SET字段内的值是互斥的,即同一时间不会存在相同的元素两次,但可以有多个不同的元素组合。

- 值之间的分隔通常用逗号(,)或其他指定字符。

- SET类型的字段最大可以容纳64个不同的成员值。

- 在内部存储时,MySQL将SET类型的值转换为位向量进行存储,从而节省空间。

- SET类型适合那些需要记录多选情况的场景,例如记录用户的兴趣爱好等。

ENUM类型

- ENUM是一种枚举类型,它只能存储预定义的一组单个值。

- ENUM字段每次只能存储这组枚举值中的一个,不允许同时存储多个枚举值。

- ENUM类型的值在声明时具有固定的顺序,并且会被赋予一个索引值(从1开始递增),可以基于此索引值进行排序。

- ENUM类型的字段最大可以容纳65535个不同的枚举值。

- 同样,在内部存储时,MySQL将ENUM类型的值转换为一个整数(对应值在枚举列表中的位置),以便更高效地存储。

异同总结

- 相似之处:

- 都是字符串类型,但实际存储为数字。

- 都要求预先定义一个合法的值列表。

- 都用于限制字段可接受的值范围,提高数据完整性。

- 不同之处:

- SET可以存储多个值,而ENUM只能存储一个值。

- SET类型的值不存在顺序关系,而ENUM类型的值则具有顺序,可以通过索引值排序。

- SET类型的字段可以用来表示多重状态,ENUM更适合单一选择的状态标识。

- 内存和磁盘空间占用上,由于存储机制不同,对于存储多个值的情况,SET相比多个ENUM字段更节省空间。

在设计数据库结构时,根据实际需求来选择使用SET还是ENUM能够有效约束数据并优化存储效率。需要注意的是,因为SET和ENUM类型的字段值受预先定义的集合限制,修改或扩展这些集合可能会导致数据迁移问题,所以在规划时应当充分考虑未来可能出现的变化。

超市购物清单的选择策略

想象一下,光头强正在为熊二准备生日派对,他手中有一张包含各种商品的购物清单,要在超市里快速购买所有物品。超市有多个入口(对应不同的表索引)和货架布局(对应表的数据结构)。

场景一:

购物清单上的商品大部分都是在零食区,而零食区恰好有一个独立的入口且内部按类别有序排列。光头强可以选择从零食区入口进入,逐项查找并放入购物车(类似于利用索引高效检索数据)。

场景二:

若清单上的商品分散在超市各处,而且没有明显的入口优势,光头强可能决定从任意一个主入口进入,然后逐一走过每个区域,逐个对照清单查找商品(类似于全表扫描)。

光头强会在考虑以下因素后做出决策:

- 购物清单上商品的位置集中度(类似数据在表中的分布情况)

- 各个入口通往商品的实际距离与时间消耗(类似索引访问的I/O成本)

- 按照货架顺序查找还是随机查找的效率(类似数据检索方式)

最后,他会选择预计耗时最少、走动路径最短的策略进行购物,这就是查询优化器选择执行计划的类比过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/774196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES5和ES6的深拷贝问题

深拷贝我们知道是引用值的一个问题,因为在拷贝的时候,拷贝的是在内存中同一个引用。所以当其中的一个应用值发生改变的时候,其他的同一个引用值也会发生变化。那么针对于这种情况,我们需要进行深度拷贝,这样就可以做到…

高效篇02-如何选择适合自己的工作/如何选择offer

前言 你有没有遇到以下3个问题。 1、对当前工作不满意,但是好像不知道具体哪里不满意。 2、有想要换工作的想法,但是不知道该换一个什么样的工作。 3、已经在找工作了,说不定手上也有几份 offer 了,但是不知道该如何选择。 在这篇…

Spring是如何解决循环依赖问题的?

目录 问题介绍什么是Spring中的三级缓存?Spring中的三级缓存是如何解决循环依赖问题的?解决Spring循环依赖问题一定需要第三级缓存吗?解决Spring循环依赖问题一定需要第二级缓存吗?什么场景下的Spring循环依赖问题无法解决?采用了构造器的注入方式相互依赖的bean都是原型b…

读3dsr代码②训练

train_dada 首先初始化权重 def weights_init(m):classname m.__class__.__name__if classname.find(Conv) ! -1:m.weight.data.normal_(0.0, 0.02)elif classname.find(BatchNorm) ! -1:m.weight.data.normal_(1.0, 0.02)m.bias.data.fill_(0)他的训练数据是imagenet的rgb&…

代码随想录算法训练营DAY7| C++哈希表Part.2|LeetCode:454.四数相加II、383.赎金信、15. 三数之和、18.四数之和

文章目录 454.四数相加II思路C代码 383.赎金信C 代码 15. 三数之和排序哈希法思路C代码 排序双指针法思路去重C代码 18.四数之和前言剪枝C代码 454.四数相加II 力扣题目链接 文章链接:454.四数相加II 视频链接:学透哈希表,map使用有技巧&…

工业物联网关的应用及相关产品-天拓四方

随着科技的飞速发展,智能制造业已成为工业领域的转型方向。在这一转变中,工业物联网关发挥着至关重要的作用。作为连接物理世界与数字世界的桥梁,工业物联网关不仅实现了设备与设备、设备与云平台之间的互联互通,更通过实时数据采…

0.96寸OLED屏调试 ----(四)

所需设备: 1、USB 转 SPI I2C 适配器;内附链接 2、0.96寸OLED显示模块; 备注:专业版、升级版都适用; 继续我们OLED模块的熟悉 : 指令详解 基础指令 1.设置对比度 (81HA[7:0])  …

贵金属投资热:为何投资者纷纷涌入黄金、白银市场

在当今复杂多变的市场中,贵金属投资热度居高不下,尤其以黄金、白银为代表的贵金属。那这背后的原因到底是什么呢,跟随金田金业的脚步,我们来一探究竟。 贵金属投资之所以备受瞩目,首先源于其独特的避险属性。在全球经济…

兼顾陪读|本科学历律师自费赴美国加州大学伯克利分校访学

S律师拟陪同孩子赴海外就读,决定以访问学者身份,申请美国J类签证出国以兼顾陪读。因本科学历,无文章且有地域要求,自己申请无果后做了全权委托。为此我们酌情制定了三条申请策略,最终落实加州大学伯克利分校的访学职位…

AI大模型学习——AI领域技术发展

目录 前言 一、AI大模型学习的理论基础 二、AI大模型的训练与优化 三、AI大模型在特定领域的应用 四、AI大模型学习的伦理与社会影响 五、未来发展趋势与挑战 总结 前言 在当前技术环境下,AI大模型学习不仅要求研究者具备深厚的数学基础和编程能力&#xff…

鸿蒙打包so及引用

一、打包so 1. 环境,DevEco Studio3.1 2. 创建c工程 创建完成后,如下图: 3. 打包so 先配置 然后 二、引用so 1. 新建普工项目 2. 在src同一层级下创建libs文件夹,将so文件拷入 3. 将c工程中的侧接口文件及声明文件复制到项目…

手术室智慧管理平台

手术室智慧管理平台 所属领域 数字化手术室智慧管理平台处于医疗信息化和医疗智能化领域的交叉点上。它不仅涉及医疗信息系统的建设和管理,更是医疗智能化的典型应用之一。在医疗信息化方面,该平台利用先进的信息技术和数据管理手段,实现对手…

协程库-锁类-实现线程互斥同步

mutex.h:信号量,互斥锁,读写锁,范围锁模板,自旋锁,原子锁 锁 **锁不能进行拷贝操作:**锁是用于管理多线程并发访问共享资源的同步原语。这些锁包括互斥锁(mutex)、读写锁…

Allegro许可更新流程

解锁企业软件管理新篇章,Allegro许可更新流程助力高效运营 在数字化经济的时代,软件已经成为企业运营的关键要素。然而,随着技术的不断更新换代,软件的许可证也需要随之更新。如何确保软件许可的及时更新,避免因过期或…

AI智能分析网关V4使用GB28181注册到EasyCVR平台的具体步骤

旭帆科技的智能分析网关V4内含近40种智能分析算法,包括人体、车辆、消防、环境卫生、异常检测等等,在消防安全、生产安全、行为检测等场景应用十分广泛。如常见的智慧工地、智慧校园、智慧景区、智慧城管等等,还支持抓拍、记录、告警、语音对…

小黑的Vue前端之路:js中通过构造函数封装,设置对象getter和setter方法

js中构造函数创建对象 JavaScript本身并不是设计成面向对象的,所以没有class之类的关键字用来定义类,但JavaScript本身相当灵活,可以利用function关键字来定义类并创建对象。 例如js创建person对象 通过new关键字,把函数当成了创建对象的构造函数 function Pers…

某康安全开发工程师一面

一、反射型XSS跟DOM型XSS的最大区别 DOM型xss和别的xss最大的区别就是它不经过服务器,仅仅是通过网页本身的JavaScript进行渲染触发的。 二、Oracle数据库了解多吗 平常用的多的是MySQL数据库,像Oracle数据库也有了解,但是用的不多。 三、…

Fastjson反序列化漏洞原理与漏洞复现(基于vulhub靶场)

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

【码银送书第十五期】一本书掌握数字化运维方法,构建数字化运维体系

前言 数字化转型已经成为大势所趋,各行各业正朝着数字化方向转型,利用数字化转型方法论和前沿科学技术实现降本、提质、增效,从而提升竞争力。 数字化转型是一项长期工作,包含的要素非常丰富,如数字化转型顶层设计、…

macOS Sonoma 14.4.1 (23E224) 正式版发布,ISO、IPSW、PKG 下载

macOS Sonoma 14.4.1 (23E224) 正式版发布,ISO、IPSW、PKG 下载 2024 年 3 月 26 日凌晨,macOS Sonoma 14.4.1 更新修复了一个可能导致连接到外部显示器的 USB 集线器无法被识别的问题。它还解决了可能导致 Java 应用程序意外退出的问题,并修…