zoukankan      html  css  js  c++  java
  • 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个值(空值不算)的缘故。

     
  • 相关阅读:
    关于网页代码加密解密保护,保障页面安全
    DS--知识积累
    知识积累
    Nested DollsHDU1677
    CF335B
    HDU2385Stock
    滚动数组处理数据很大的公共子序列问题
    HDU4635
    HDU4638
    HDU4639
  • 原文地址:https://www.cnblogs.com/peter-yan/p/6868544.html
Copyright © 2011-2022 走看看