先说结论,对于存储和计算来说,int(10)和int(11)没有区别,10代表数字长度,但是int类型占用4个字节,取值范围是-2147483648~2147483647,也就是最大长度是10,如果写成int(11), 插入11位数的时候是插入不进去的,mysql会默认int最大10位(2147483647),2147483648也将插入不了。所以int(1)和int(20)是没有区别的,但是写int(20)会认为对mysql字段类型理解不到位。但是TINYINT和INT区别就大了,TINYINT占用1个字节,也就是取值是-128~127。所以尽可能取占用空间小的整数类型。合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。

https://dev.mysql.com/doc/refman/5.7/en/integer-types.html