面试题:MySQL 中 int(11) 的 11 表示什么?

在 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
喜欢就支持一下吧
点赞15 分享