在 MySQL 中,INT(11)
的括号内的数字(如这里的 11)实际上并不表示该整数类型可以存储的数值范围。
对于 INT
类型来说,它占用4个字节,无论你指定的宽度是多少,其能够存储的数值范围都是固定的:-2,147,483,648 到 2,147,483,647 对于有符号数,或者 0 到 4,294,967,295 对于无符号数。
那么括号里的数字到底代表什么呢?其实,这个数字是用于指示客户端显示字符的宽度或说是提示信息,并不会影响实际存储的数据值或是数据类型的大小。具体来说:
- 展示宽度:括号中的数字是指定的展示宽度,主要用于当使用
ZEROFILL
属性时填充前导零。
例如,如果你有一个列定义为INT(5) ZEROFILL
并插入了值123
,那么在查询时这个值会以00123
的形式返回。
如果没有使用ZEROFILL
,则括号中的数字基本上没有实际意义。
因此,在大多数情况下,INT(11)
或者其他任何 INT(n)
中的 n
只是一个与显示相关的提示,而不是与底层存储机制有关的因素。
这也就意味着,你在设计数据库表结构的时候,不需要过于担心这个数字会影响你能存储的数据大小。
真正需要关注的是选择正确的整数类型(如 TINYINT
, SMALLINT
, MEDIUMINT
, INT
, BIGINT
),以便根据你的应用需求来决定合适的数值范围。
THE END