mySQL数据类型 - 为什么在int之后有一个数字:int(11)

Wil*_*ill 13 mysql types

根据mySQL Docs,int(signed)的数据类型的范围是-2147483648到2147483647.当我使用phpMyAdmin创建一个表,并导出表结构时,它显示以下内容:

`unit_id` int(11) NOT NULL
Run Code Online (Sandbox Code Playgroud)

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

Eug*_*ash 17

这是可选的'width'属性,应用程序可以使用它来显示值.

引用文档:

MySQL支持扩展,可以选择在类型的base关键字后面的括号中指定整数数据类型的显示宽度.例如,INT(4)指定INT显示宽度为四位的a.应用程序可以使用此可选显示宽度来显示宽度小于为列指定的宽度的整数值,方法是用空格填充它们.(也就是说,此宽度存在于使用结果集返回的元数据中.是否使用它取决于应用程序.)

显示宽度也没有限制,可以被存储在列中的值的范围内.它也不会阻止比列显示宽度更宽的值正确显示.例如,指定为SMALLINT(3)具有通常SMALLINT范围的-32768to的列 32767,以及超过三位数允许的范围之外的值将使用超过三位数完全显示.

  • 换句话说,括号中的数字纯粹是作为如何显示数字的提示.在内部,int始终占用相同的存储空间,无论您是显示1位还是全部. (5认同)
  • 到现在为止我正在考虑限制范围,如`varchar(100)`...了解到新的事实:) (3认同)
  • 如果你使用VARCHAR(n),它会有所作为.不是数字类型. (2认同)

Dan*_*een 5

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