zoukankan      html  css  js  c++  java
  • Mysql的int类型探究

    前言

    最近被问到了这个问题,原题目应该是mysql的int(1)和int(10)有什么区别。当时没答好,也确实没注意过,故在此研究记录下。

    探究

    mysql中int所能设置的长度范围是1~255。当你输入小于1的数字的时候,会自动给你置为11。当你输入的数值是大于255的时候,会提示你最大为255。
    但是实际上你设置多少是没有区别的,效果和int(11)是一摸一样的。你设置一个int(1),你以为只能存储0~9,其实不然,他可以存储最多11位数字。存储的范围是-2147483648 ~ 2147483647。
    那么int后面指定的数组到底是什么作用呢,只有在加入zerofill的时候,才能看出效果。如果你的int设置为int(4),当你存储1的时候,那么展示的就是0001。
    由此看出结论,int后面代表的是宽度。实际占用空间永远为4字节。
    需要注意的是,不要用navicat进行探究,navicat看不出效果,用控制台才可以。

    结论

    mysql的int的数字只是为了展示长度用的,float的数字才会限制实际的数据范围,比如 float(3,2) 只能够写入 0.00~999.99.

    扩展

    MySQL的 int 和 tinyint 的默认长度是 int(11) 和 tinyint(4), 而boolean 型实际存储的是 tinyint(1).

    存储范围


    上述表格中的数值类型都是定长的,也就是说,无论你存的数值是多少,多大或者多小,占用的字节大小都是固定的。例如,之前设置的int(1),虽然M值是1个字符,但是它所占用的空间大小永远都是4个字节的大小,换句话说就是,你可以存入有符号整型从-2 147 483 648到2 147 483 647包括这两个数的中间任何一个数。int(1)和int(11)占用的是4个字节,可以存入上述这些数,tinyint(1)和tinyint(4)占用的是1个字节,可以存入从-128到127的数,这也是为什么之前的一次试验,int(1)插入128成功,而tinyint(1)插入128却提示超出长度。
    除了bigdeciaml,其他的长度最大都是255。bigdecimal如下

    公众号
    作者:经典鸡翅
    微信公众号:经典鸡翅
    如果你想及时得到个人撰写文章,纯java的面试资料或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号)。
  • 相关阅读:
    中国国家授时中心的时间服务器IP地址及时间同步方法
    找不到aspnet用户权限的解决方法
    unbunt下刻录光盘
    关于ubuntu 是否需要使用std::到问题。
    acm题
    IIS发生意外错误0x8ffe2740
    SQL Server Express的使用
    解决用户"sa"登录失败。该用户与可信 sql server 连接无关联。
    在CSDN上的第一篇博客
    在线求助 man page(转)
  • 原文地址:https://www.cnblogs.com/jichi/p/14576879.html
Copyright © 2011-2022 走看看