说明:
一开始认为 int11与varchar(11)的表现相同。
其实int(11)和int(1)对于mysql数据存储是一样的。
int(11)在这里不是存储了11位,而是在数据库连接工具上显示的宽度为11位,不足补零
验证:
1. int(11)存储12位是否可行?
尝试存储123456789012这样一个12位的数据
这种结果可能给我们误导:12位的数据存不进int(11)的数据里,其实是12位的数据存不进int类型的数据,即int(13)也无法存上面的数据
2. int(11)如何显示出补0的数据?
alter table file_info_copy add COLUMN test_int int(11) ZEROFILL
ZEROFILL是补零的设置项,请勾选上
假设我们对于int(11)的填充0 类型只存1
注意:在Navicat工具上看不到补0,大概率是Navicat工具自己做了处理【这种处理方式很多,类似的比如乱码的显示,Navicat也会处理】。我们采用workbench查看同一条数据。
如上图,补0出现
建议
如果是数字类型,如文章类型,流转状态,或者性别这种确定范围的数据,可以采用tinyint类型,如果数据较大,而且可能一直增加,建议采用bigInt类型,其他的数据可以从smallint----int酌情选择