在MySQL中,如果我们创建一个数据类型为INT
的字段,并且不指定任何长度/值,则它会自动变成int(11)
。如果我们设置属性UNSIGNED或UNSIGNED ZEROFILL,则它会变成int(10)
那么这个length(1)是什么意思呢?
在MySQL中,如果我们创建一个数据类型为INT
的字段,并且不指定任何长度/值,则它会自动变成int(11)
。如果我们设置属性UNSIGNED或UNSIGNED ZEROFILL,则它会变成int(10)
那么这个length(1)是什么意思呢?
整型值可以是-2147483648,这些是11位数字,因此默认的显示大小为11
无符号整数不允许负数,因此默认情况下只需要显示大小为10
如下面的文档所示,存储SIGNED INT和UNSIGNED INT所需的位数相同,可存储数字范围仅被移动:
可以使用无符号类型来在列中仅允许非负数或当您需要更大的上限数字范围的列时。例如,如果一个INT列是UNSIGNED,则该列的范围大小相同,但其端点从-2147483648和2147483647移动到0和4294967295。
UNSIGNED INT
的默认显示宽度比非UNSIGNED INT
少一位,因为您永远不会显示 -
字符。如果有人不太理解Shakti的回答(就像我一样),这里是一个视觉化表示:
Signed minimum:
- 2 1 4 7 4 8 3 6 4 8
1 2 3 4 5 6 7 8 9 10 11
Unsigned max (also the signed max):
4 2 9 4 9 6 7 2 9 5
1 2 3 4 5 6 7 8 9 10