场景:在做数据库设计时,偶然疏忽将一个对象的ID设成了int(1)的数据类型,系统跑了一段时间,ID都涨到几万了,居然没出现问题,在做设计review的时候才发现这个问题。还真是奇怪,
int(1)的逻辑跟varchar(1)的逻辑不一样吗???
分析:网上一搜,还真的跟我理解的不一样,对于int型,永远需要占用4个字节,默认就是11位;
而指定的长度称作显示宽度,mysql中column定义中有个叫zerofill的属性,当该属性设置为true时,则int型后面的长度就起作用了。
当int值不满指定长度时,则显示时前面会自动补0;
如:int(6)的值为11,则显示为000011。