zoukankan      html  css  js  c++  java
  • Mysql int类型你了解多少

    前两天和朋友闲聊,聊到了数据库设计相关的问题,朋友突然画风一转--为什么数据库里面int最大长度只能int(11),long最大长度只能bigint(20)?为什么int(4)可以存下999999?

    我当时的回答有点含糊--int类型4字节,4*8=32bit,2^32-1是11位吧! int(*)里面的*并非数字的长度吧!(有点心虚qwq...)

    事后想起了这件事,用计算器算了下2^ 32-1,结果居然是4294967295,只有十位啊??? 当时觉得应该是某个环节弄错了,肯定是(自信满满..) 突然注意到建表语句中的unsigned(无符号的)这个单词,恍然大悟,还有符号位(+/-),正好11位.

    我比较在意的是后面一个问题,为什么int(4)可以存下999999,难道像varchar一样是一种可变长度的类型.我觉得问题不会这么简单,于是借助强大的浏览器搜索了一下,终于弄明白了到底是怎么回事.

    这里我把查到的资料整理一下

    下图是来自详解mysql int类型的长度值问题

     从上图可以看出来:sql每种整形类型的取值范围及最大长度

    另外,int(*)都可以存储上述范围的数字,也就是说int(1)和int(11)都能存储上述范围内的数字.(注意有无符号范围不一样)

    具体的区别就是,用int(11)存储32,数据库会在前面补满0.要查看出不同效果可以在创建类型的时候加 zerofill这个值,表示用0填充,否则看不出效果的。

  • 相关阅读:
    第二章.md
    第四章.md
    第一章.md
    第九章.md
    png简析.md
    第五章.md
    好看的粒子效果
    缓动 减速运动
    收集的小效果
    粒子效果2
  • 原文地址:https://www.cnblogs.com/JackpotHan/p/13426556.html
Copyright © 2011-2022 走看看