美文网首页
咖啡加点糖:mysql中整数类型后面的数字

咖啡加点糖:mysql中整数类型后面的数字

作者: 逗逗兜豆豆 | 来源:发表于2017-03-16 16:21 被阅读0次

      之前对于mysql并没有太多的学习,所以对于整形类型后边的数字没有太多的理解,这次被一个后辈问到这个问题,自己也不知道如何解释,所以回头看了看资料,把该理解的给补上。

    一开始以为int(11)是指存储长度为11位,int(10)就是存储长度为10位,但是,这是错的

    首先,先解释一下字节(byte)和位(bit)的关系(在计算表示范围时会用到二者的关系)

    位(bit):英文bit,是计算机晶体管的一种状态(通电与断电).就是0与1,真与假,是计算机最基本的传输单位

    示例:
    2bit : 10;
    4bit : 1111;
    8bit : 1111 1111;

    字节(byte):是计算机信息技术用于计量存储容量的一种计量单位

    二者关系:
    1B = 8bit
    1B = 1111 1111(二进制)
    1B = 0至255(十进制)
    1B = -128至127(十进制)

    mysql的基本数据类型里几个int如下:
    类型                 大小         范围(有符号)         范围(无符号)         用途
    TINYINT           1字节         (-128,127)                (0,255)                   小整数值 
    SMALLINT      2 字节        ( -2^15 :-32 768,2^15 - 1:32 767) (0,65 535) 大整数值
    MEDIUMINT   3 字节        (-8 388 608,8 388 607) (0,16 777 215) 大整数值
    INT                   4 字节        (-2^31:-2 147 483 648, 2^31 - 1:2 147 483 647) (0,4 294 967 295) 大整数值
    BIGINT              8 字节        (-2^63:-9 233 372 036 854 775 808,2^63-1:9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值

    这些类型,是定长的,其容量是不会随着后面的数字而变化的,比如int(11)和int(8),都是一样的占4字节。tinyint(1)和tinyint(10)也都占用一个字节。所以数据类型括号内的数字不管是多少,所占的存储空间都固定的

    显然整数类型后边的数字不是表示的数据长度,而是表示数据在显示时显示的最小长度。

    当字符长度超过(m)时,相当于啥都没发生;
    当字符长度小于(m)时,就需要指定拿某个字符来填充,比如zerofill(表示用0填充)

    所以,没有zerofill,(m)就是无用的。

    综述:mysql整数类型后边的数字不是用来限制存储长度的(因为一个类型的存储空间是固定的),而是用来限制最小显示长度的,并且需要跟zerofill搭配使用才会有效果

    Happy coding...

    相关文章

      网友评论

          本文标题:咖啡加点糖:mysql中整数类型后面的数字

          本文链接:https://www.haomeiwen.com/subject/wisjnttx.html