【问题标题】:mySQL datatypes - why is there a number after int: int(11)mySQL 数据类型 - 为什么 int 后面有一个数字:int(11)
【发布时间】:2011-04-21 21:24:08
【问题描述】:

根据mySQL Docs,int (signed) 数据类型的范围为 -2147483648 到 2147483647。当我使用 phpMyAdmin 创建表并导出表结构时,它显示如下:

`unit_id` int(11) NOT NULL

为什么是 (11)? int 不会告诉 mySQL 它需要知道的一切吗?

【问题讨论】:

标签: mysql types


【解决方案1】:

这是可选的“宽度”属性,应用程序可以使用它来显示值。

引用documentation:

MySQL 支持扩展以可选地指定显示 base 关键字后面括号中整数数据类型的宽度 对于类型。例如,INT(4) 指定带有显示的 INT 四位数的宽度。这个可选的显示宽度可以由 应用程序来显示宽度小于 通过用空格向左填充它们为列指定的宽度。 (那 也就是说,这个宽度存在于与结果集一起返回的元数据中。 是否使用取决于应用程序。)

显示宽度不限制了可以显示的值的范围 存储在列中。它也不会阻止比列更宽的值 显示宽度无法正确显示。例如,一列 指定为SMALLINT(3) 具有通常的SMALLINT 范围-32768 到 32767,三位数允许范围之外的值为 使用三个以上的数字完整显示。

【讨论】:

  • 换句话说,括号中的数字纯粹是作为如何显示数字的提示。在内部,int总是占用相同的存储空间,无论你显示1位还是全部。
  • 直到现在我还在考虑限制范围,比如varchar(100)...学到了新的事实:)
  • 如果你使用 VARCHAR (n),它会有所作为。不是数字类型。
【解决方案2】:

设置与结果集一起返回的显示宽度。它与存储大小无关。

【讨论】:

    猜你喜欢
    • 2011-07-12
    • 2011-10-26
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2016-06-08
    相关资源
    最近更新 更多