INT(256)
或任何其他整型字段如 INT
, TINYINT
, MEDIUMINT
, BIGINT
后面的括号内的数字,并不表示字符个数或数字大小范围。 int(256)——这个括号内的数字实际上是对列的显示宽度进行指定的,也就是说,它影响的是数据在被SELECT时的输出格式,而不是存储数据的实际大小或长度。
例如,当你定义一个 INT(256)
字段时,MySQL会尝试在查询结果中为该字段预留256个字符的宽度用于显示。但是,这并不意味着你可以存储一个超过 INT
数据类型所能支持的最大值的数字。INT
类型的范围通常是 -2147483648
到 2147483647
,而 INT(256)
依然只能在这个范围内存储数据。
如果你试图存储一个超出 INT
类型范围的数值,你会得到一个错误,而不会因为定义了更大的显示宽度就能存储更大的数值。
对于整型数据的大小范围,你可以参考以下标准:
TINYINT
:-128
到 127
或 0
到 255
(无符号)SMALLINT
:-32768
到 32767
或 0
到 65535
(无符号)MEDIUMINT
:-8388608
到 8388607
或 0
到 16777215
(无符号)INT
或 INTEGER
:-2147483648
到 2147483647
或 0
到 4294967295
(无符号)BIGINT
:-9223372036854775808
到 9223372036854775807
或 0
到 18446744073709551615
(无符号)如果需要存储更大的数值,应该选择更宽的数据类型,如 BIGINT
。如果主要关心的是显示宽度,那么可以调整这个括号内的数字,但这不会改变存储的数值范围。
参考来源于:通义千问2.5