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个值(空值不算)的缘故。

     
  • 相关阅读:
    redis-client和redis-template存储的key的格式不一样
    dubbo+zookeeper基础
    java面试题1
    Spring线程池(异步、同步)
    Java并发多线程
    Java并发-并发工具类JUC
    Java并发面试题
    ActiveMQ
    一键部署springboot到Docker
    Quartz任务调度学习
  • 原文地址:https://www.cnblogs.com/peter-yan/p/6868544.html
Copyright © 2011-2022 走看看