MySQL中int长度的意义

以前一直以为MySQL中int类型的长度代表允许存储的最大宽度,今天才发现这样是大错特错的!!!

结论:

  • "浮点型"的长度是用来限制数字存储范围的. 比如 float(3,2) 只能够写入 0.00~999.99.
  • "整型"的长度并不会限制存储的数字范围. 比如, intint(3) 的存储范围都是 -2147483648 ~ 2147483647, int unsignedint(3) unsigned 的存储范围都是0 ~ 4294967295.
  • "整型"的长度实际上可以理解为"显示长度", 如果该字段开启 "Zerofill/补零"就能很明显地知道它的作用.

下面举一个例子:


备注:使用navicat创建字段和添加值是为了方便,真实结果要通过数据库操作界面查看。

1.用navicat工具在一个表中定义了三个字段如下:

  • test_filed_a字段类型为int(1),没有勾选填充零。
  • test_filed_b字段类型为int(3),没有勾选填充零。
  • test_filed_c字段类型为int(11),勾选了填充零(Zerofill/补零功能)。

MySQL中int长度的意义

 2.用navicat工具给3个字段添加这些值:

MySQL中int长度的意义

 3.结果如下:

MySQL中int长度的意义

 


综上得出以下结论:

  1. test_field_a字段类型为int(1),却可以存储10,100,1000这样的数字,可见int(1)中的1代表的不是最大展示宽度。
  2. test_field_b字段类型为int(3),却可以存储1000这样的数字,可见int(3)中的3代表的不是最大展示宽度。
  3. test_field_c字段类型为int(11),Zerofill/补零功能,存储的数字1,10,100,1000都在原基础上左侧补0补到了11位。
  4. 可以猜测如果test_field_b字段类型为int(3),Zerofill/补零功能,那么存储的数字1,10显示结果为001,010。

至此得出总结!