SET类型用于存储预定义字符串集合中的多个值,通过位图机制以二进制形式存储,每个值对应一个位,最多支持64个成员,适用于固定多选场景如权限或标签,但不支持动态修改且迁移兼容性差,建议频繁变动的场景使用关联表替代。

MySQL中的SET类型是一种特殊的字符串对象,用来存储一组预定义的字符串值中的零个或多个。它和ENUM类似,但允许选择多个值,而不是只能选一个。
SET的基本定义方式
在创建表时,可以这样定义一个SET类型的字段:
CREATE TABLE example (tags SET('red', 'green', 'blue'));
这表示tags字段可以从’red’、’green’、’blue’中选择多个值,也可以不选(空值)或者选多个,比如同时选’red’和’blue’。
SET的取值规则
SET字段的值必须是定义时列出的选项的组合。支持以下几种写法:
插入单个值:INSERT INTO example VALUES ('red'); 插入多个值(用逗号分隔,无空格):INSERT INTO example VALUES ('red,blue'); 插入空值:INSERT INTO example VALUES ('');(表示没有选任何项)
注意:插入的值顺序不影响存储,MySQL会按定义的顺序自动排序显示。
PHPEIP
PhpEIP企业信息化平台主要解决企业各类信息的集成,能把各种应用系统(如内容管理系统,网上商城,论坛系统等)统一到企业信息化平台中,整个系统采用简单易用的模板引擎,可自定义XML标签,系统采用开放式模块开发,符合开发接口的模块可完全嵌入到平台;内容管理模块可自定义内容模型,系统自带普通文章模型和图片集模型,用户可以定义丰富的栏目构建企业门户,全站可生成静态页面,提供良好的搜索引擎优化;会员管理模
0 查看详情
SET的内部存储机制
MySQL使用位图(bit map)来存储SET值。每个允许的值对应一个二进制位:
‘red’ → 第1位(1) ‘green’ → 第2位(2) ‘blue’ → 第3位(4)
例如,’red,blue’ 对应 1 + 4 = 5,MySQL底层以整数5存储。最大支持64个成员,因此最多可以有64个可选项。
使用SET的注意事项
虽然SET方便,但也有一些限制和潜在问题:
修改SET定义(如增加选项)会触发表结构变更,可能影响性能 选项一旦定义,更改其名称或顺序可能导致数据混乱 不支持动态选项,不适合频繁变化的标签系统 与其他数据库兼容性差,迁移到其他数据库时容易出问题
基本上就这些。SET适合固定且有限的多选场景,比如权限标记、颜色选项等。如果需要更灵活的设计,建议用独立的关联表代替。
以上就是mysql中set类型如何理解的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1052724.html
微信扫一扫
支付宝扫一扫