MySQL中的tinyint(1)、tinyint(2)、tinyint(3)和tinyint(4)有什么区别?

63
3个回答

66

TinyINT(M)表示的范围总是在-128..+127带符号或0..255无符号之间。M是显示宽度。

M表示整数类型的最大显示宽度。最大显示宽度为255。显示宽度与类型可以包含的值的范围无关,如第11.2节“数字类型”描述的那样。对于浮点和定点类型,M是可以存储的总位数。

来源:http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html


1
我猜最大显示宽度为255与无符号TINYINT的最大值也为255是没有关系的,我的猜测正确吗?这只是巧合吗? - Nathan Wailes
2
@NathanWailes 是的。实际上,TinyInt(3) unsigned 就足以显示最大值为 255 的情况了。而如果要显示 -128 等数值,则需要使用 TinyInt(4) - colm.anseo
1
显示的是什么,位置在哪里?如果我正在编写客户端应用程序或Web应用程序,我只关心所检索到的值,如何格式化/显示取决于我自己。你可能感到困惑。 - joedotnot
答案中的参考页面现在已经丢失,由于有太多待处理的编辑,无法对其进行编辑。请查看Mysql数据类型代替。 - undefined

7
根据Mysql手册,所有十进制数值类型都支持以下语法:
Integer Types (Exact Value)

使用 DECIMAL 时,它允许您指定精度

对于 *INT 类型,它主要具有显示功能还指定了在使用 ZEROFILL 时应添加多少位数。

字节大小保持不变(TINYINT 的字节大小为 1B)。


3

TinyINT = -128...+127

(n) 用于显示目的。


27
“用于展示目的”是什么意思? - Foysal Vai
5
用于显示目的,即在从表格中选择时给予该列的实际字符间距长度。 - Alkanshel
4
在使用控制台时,对于开发人员将SQL数据摄取到结构中来说,显示宽度值是毫无意义的。 - colm.anseo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接