### 11.1.6数字类型属性

[](<>)[](<>)[](<>)

MySQL支持一个扩展，可以选择在类型的base关键字后面的括号中指定整数数据类型的显示宽度。例如[`INT（4）`](integer-types.html)指定[`国际的`](integer-types.html)显示宽度为四位数。应用程序可以使用此可选的显示宽度，通过左键填充空格来显示宽度小于为列指定宽度的整数值。（也就是说，这个宽度存在于随结果集返回的元数据中。是否使用它取决于应用程序。）

显示器的宽度不一样*不*约束可存储在列中的值的范围。它也不会阻止比列显示宽度更宽的值正确显示。例如，指定为[`SMALLINT（3）`](integer-types.html)和往常一样[`斯莫林`](integer-types.html)范围`-32768`到`32767`，并且超出三位数允许范围的值将使用三位数以上的数字完整显示。

与可选选项（非标准）结合使用时`零填充`属性时，空格的默认填充将替换为零。例如，对于声明为[`INT（4）零填充`](integer-types.html)，价值`5.`被检索为`0005`.

笔记

这个`零填充`对于表达式或表达式中涉及的列，属性被忽略[`协会`](union.html)询问。

如果将大于显示宽度的值存储在具有`零填充`属性，当MySQL为一些复杂的连接生成临时表时，可能会遇到问题。在这些情况下，MySQL假设数据值符合列显示宽度。

从MySQL 8.0.17开始`零填充`对于数值数据类型，属性是不推荐的，对于整型数据类型，显示宽度属性也是不推荐的。你应该期待他们的支持`零填充`以及在未来版本的MySQL中删除的整数数据类型的显示宽度。考虑使用一种替代方法来产生这些属性的效果。例如，应用程序可以使用[`LPAD（）`](string-functions.html#function_lpad)函数将焊盘编号归零至所需的宽度，也可以将格式化后的数字存储在[`烧焦`](char.html)柱。

所有整数类型都可以有可选的（非标准）`未签名`属性无符号类型可用于仅允许列中的非负数，或在需要更大的列上限数值范围时。例如，如果[`国际的`](integer-types.html)专栏是`未签名`，列的范围大小相同，但其端点从`-2147483648`和`2147483647`到`0`和`4294967295`.

也可以选择浮点和定点类型`未签名`。与整数类型一样，此属性可防止在列中存储负值。与整数类型不同，列值的上限保持不变。从MySQL 8.0.17开始`未签名`属性不推荐用于类型为的列[`浮动`](floating-point-types.html), [`双重的`](floating-point-types.html)和[`十进制的`](fixed-point-types.html)（以及任何同义词），您应该期望在未来的MySQL版本中删除对它的支持。考虑使用简单的`检查`而不是为此类列设置约束。

如果你指定`零填充`对于数字列，MySQL会自动添加`未签名`属性

整数或浮点数据类型可以具有`自动增量`属性当您插入的值为`无效的`变成索引`自动增量`列，则该列被设置为下一个序列值。通常这是`*`价值`*+1`哪里*`价值`*是表中当前列的最大值。(`自动增量`序列以`1.`.)

储存`0`变成一个`自动增量`列具有与存储相同的效果`无效的`，除非[`零上无自动值`](sql-mode.html#sqlmode_no_auto_value_on_zero)SQL模式已启用。

插入`无效的`产生`自动增量`值要求声明该列`非空`.如果列被声明`无效的`，插入`无效的`储存`无效的`。当您将任何其他值插入`自动增量`列，则该列被设置为该值，并重置序列，以便下一个自动生成的值从插入的值开始依次出现。

的负值`自动增量`不支持列。

`检查`约束不能引用具有`自动增量`属性，也不能`自动增量`属性可以添加到中使用的现有列中`检查`限制。

从MySQL 8.0.17开始，`自动增量`不推荐使用支持[`浮动`](floating-point-types.html)和[`双重的`](floating-point-types.html)柱；您应该期望在MySQL的未来版本中删除它。考虑移除`自动增量`属性，或将其转换为整数类型。
