set&enum小结(database)
今天发现mysql中有set这种数据类型,工作的业务中也使用到了。网上查阅资料后,小结一下
先总结一下两者的分别
set和enum类似表单中的多选和单选,set和enum在数据库内部是用整数表示的,显示给我们看的可以是字符串(避免使用数字字符串)
api中对两种类型的解释如下
两种类型的数据个数有限制,再根据2^64=65536,所以推测跟计算机的硬件有关系,目前计算机有64位,还没有128位的缘故
set中的多选怎么实现的呢?自己做了些测试,如下
新建一个表db_set,拥有set以及enum两个列对比
DROP TABLE if EXISTS db_set;
create table db_set(
id int AUTO_INCREMENT primary
set1 set('x','y','z') not null,
enum1 enum('one','two','three') not null);
以整数形式插入几条数据,由于两种类型的数据在内部是以整数形式表示的,所以插入数值型值
insert into db_set(set1, enum1) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11);
查询表中的数据
SELECT * FROM db_set;
结果如下
到这里大家应该知道了,set是通过二进制的位进行映射的,这也解释了为什么set只支持最多64个值(空值不算)的缘故。
相关推荐
Airuio 2020-02-12
NoBlueSky 2019-11-17
AlexZhao 2019-11-09
taizuduojie 2019-11-03
liangds 2019-08-02
zhglinux 2019-06-29
paopao00 2019-06-29
囧芝麻 2013-08-22
jerry00 2019-06-28
surpassdream 2012-11-03
rosekissyou 2010-12-28
hhboyggyy 2010-04-26
两个蝴蝶飞 2010-03-25
jifangege 2019-06-21
尘封飞扬 2009-04-14
ITxiaobaibai 2019-04-07
举 2019-04-02