闲谈MySQL中int(10)和int(11)的区别?
mysql中int类型占⽤4个字节,⽽⼀个字节占⽤8个⽐特位,所以⼀个int类型的字段会占⽤2的32次⽅,我们就能换算出int UNSIGNED(⽆符号)类型的能存储的最⼩值为0, 最⼤值为4294967295;有符号的时候存储是从-2147483647,到2147483647;由此可以发现,正好是10位的长度;所以int默认的长度就是10,但是最⼤的存储长度也是10。
接下来说int10和int11的区别
⾸先新建⼀个表test,表中有三个字段id,id1(10),id2(11)(id 假装是⼀个主键,可以忽略它)
在命令窗⼝执⾏命令 alter table test modify id2 int(12) zerofill;(如果int中不加具体的数值,则默认是10)
注:不能⽤navicat查看结果,navicat是⾃动过滤前⾯的0;
添加⼀条数据(1,1,1);
结果如下
mysql下载不了什么原因可见宽度是不⼀样的,id1是10位,id2是是12位。
再来试⼀下如果插⼊超过10位的开头⼤于0的数值,看看结果
可见超出范围,原因就是开头说的最⼤值不能超过4294967295;
总结:
mysql中int(M)类型的字段最多可以存放10位长度的字段,但是如果⼩于最⼤值(4294967295)的情况下,前⾯⽤0补全(前提是该字段设置了zerofill属性),⽐如12345,那么int(11)则展⽰的是00000012345,⽐如12345678912,这种就不能存放了,原因是超过了最⼤值;M表⽰的是宽度,M
最⼤是255;所以int10 和int11 的区别就是宽度不⼀致,设置字段的显⽰宽度并不限制字段存储值的范围,⽐如字段d设置为int(5),但是仍然可以存储1234567890这个10位数字;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。