1. M和数据类型的取值范围是无关的
  2. M只是指明MYSQL最大可能显示的数字个数,数值的位数小于M时会有空格填充;大于M时,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能显示出来
  3. M的效果需要配合zerofill使用

引用: http://blog.csdn.net/slyjit/article/details/54290486

Mysql整数类型及存储范围

一个字节(Byte) 等于8个位(bit) 一个位就代表一个0或1
即一个字节最大值等于二进制11111111,转为十进制即为2的8次方减1,值为255

类型 字节 最小值 最大值
TinyInt(有符号) 1 -128 127
TinyInt(无符号) 1 0 255
SmallInt(有符号) 2 -32768 32767
SmallInt(无符号) 2 0 65535
MediumInt(有符号) 3 -8388608 8388607
MediumInt(无符号) 3 0 16777215
Int(有符号) 4 -2147483648 2147483647
Int(无符号) 4 0 4294967295
BigInt(有符号) 8 -9223372036854775808 9223372036854775807
BigInt(无符号) 8 0 18446744073709551615

显示宽度解释:

  1. 创建一个字段:newInt int(3) unsigned NOT NULL DEFAULT ‘0’,
    继续创建一个:newInts int(3) unsigned zerofill NOT NULL DEFAULT ‘000’,
  2. 插入一条数据 values(123456,123456)
    继续长如数据 values(3,3)

  3. M和数据类型的取值范围是无关的

  4. M只是指明MYSQL最大可能显示的数字个数,数值的位数小于M时会有空格填充;大于M时,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能显示出来
  5. M的效果需要配合zerofill使用