tinyint存储在一个字节中为8位,只能包含2^8个数字,即256个数字。 在mysql实现中,有符号为-128-127,无符号为0-255
tinyint后面带括号的数字以后称为m,与存储的值没有任何关系,但有时与显示的宽度有关
1 .常规测试
使用基本表格插入基本数据
查询后发现没有任何区别
你会发现没有任何区别。 实际上没有任何区别。 如果用navicat等工具尝试,就会发现没有任何不同。 有关详细信息,请参阅引用http://www.void cn.com/article/p-kekzoqwy-bsk.html中的Aamir答案进行良好的验证。
2 .无符号表格,同时zerofill
制作表格的基本句子如下
最后的查询结果如下,很明显
zerofill中的整数字段必须无符号。 现在,您可以看到m显示了特定的宽度。 不够时填0,多余时不处理
官方文档的解释为5.7英文版
这里摘录其中重要的一段
mysqlsupportsanextensionforoptionallyspecifyingthedisplaywidthofintegerdatatypesinparenthesesfollowingthebasekeywordforthetype specifiesanintwithadisplaywidthoffourdigits.thisoptionaldisplaywidthmaybeusedbyapplicationstodisplayintegervalueshavingawidawididttitod edforthecolumnbyleft-paddingthemwithspaces.(thatis,thiswidthispresentinthemetadatareturnedwithresultsets.whetherititisure
thedisplaywidthdoesnotconstraintherangeofvaluesthatcanbestoredinthecolumn.nordoesitpreventvalueswiderthanthecolumndisplaywid tly.forexample,acolumnspecifiedassmallint(3) hastheusualsmallintrangeof-32768 to 32767,andvaluesoutsidetherangepepermitrant
whenusedinconjunctionwiththeoptional (nonstandard ) attribute ZEROFILL,thedefaultpaddingofspacesisreplacedwithzeros.forex arax
到此为止,我们的结论也验证了。
绝对与保存的值无关
mysql控制台也会忽略这些
对于无符号和zerofill,填充0,并显示为与m对应的宽度
整数类型都相同,有默认的显示宽度
m作为元数据存储推荐的是显示宽度,但最终解释权归程序所有
最后,提出了我的建议。 那就是m实际上没有用。 tinyint的默认值为4,其馀的也有默认值。 在今后的程序开发中,涉及整形数字m时,可以不要在意,直接忽略,最后使用数据库的默认m值即可