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填充,否则看不出效果的。

  • 相关阅读:
    个人博客作业Week2
    个人作业
    软件工程——个人博客作业三
    软工个人博客二
    软件工程——个人博客作业一
    Linux服务器搭建常用环境(一)
    Swift学习之语言基础
    Python——函数的参数
    Python——函数的调用
    Python 导语
  • 原文地址:https://www.cnblogs.com/JackpotHan/p/13426556.html
Copyright © 2011-2022 走看看