在MySQL添加字段时, int(m) 这个m的作用是什么?

在MySQL添加字段时, int(m) 这个m的作用是什么?

对于这个问题,是考察你平时在工作中,有没有注意过MySQL的一些细节。这个也是平时容易忽略的,而在面试中会遇到的问题。

我们在数据库中实践下,看这个M到底有什么作用:

首先创建一个表:

其中total_quantity 字段  定义的长度是4,插入数字50000,看能不能保存:

从这个运行结果可以看出,定义的是4位,但5位数也可以保存,这说明:int数据类型设置的长度与实际存储大小没有关系。

思考一下,这个m到底有什么作用?(在验证的时候需增加一个属性zerofil,便于观察)

在custom_order 中增加一个int类型的字段(number):

在给该字段设置一个为5的值,看看结果:

从结果可以看出,number显示的是一个以0补充的5位的值,这说明,int(m) 中m的作用是用来显示长度;(注:未设置zerofill属性,看不出区别)

查询Mysql手册,得到这样的一个结论:

MySQL支持选择在该类型关键字后面的括号内指定的显示宽度(例如,INT(5))。该显示宽度规定--显示宽度小于指定的列宽度的值时从左侧补充宽度。显示宽度并不限制该列值的存储范围,也不限制超过列的指定宽度的值的显示。 换句话说 int的长度并不影响数据的存储精度,长度只和显示有关

zerofill的作用

1、插入数据时,当该字段的值的长度小于定义的长度时,会在该值的前面以0来补充;

2、当使用zerofill 时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍;

到此还有一个问题,int数据类型设置长度与存储的大小没有关系,那int类型字段的存储大小是多少呢?

关于这点,请看下表(来自Mysql手册):

对于开始的面试题,大家知道怎么回答了吗?

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容