# 11.1.6数字类型属性

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

显示器的宽度不一样约束可存储在列中的值的范围。它也不会阻止比列显示宽度更宽的值正确显示。例如,指定为SMALLINT(3)和往常一样斯莫林范围-3276832767,并且超出三位数允许范围的值将使用三位数以上的数字完整显示。

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

笔记

这个零填充对于表达式或表达式中涉及的列,属性被忽略协会询问。

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

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

所有整数类型都可以有可选的(非标准)未签名属性无符号类型可用于仅允许列中的非负数,或在需要更大的列上限数值范围时。例如,如果国际的专栏是未签名,列的范围大小相同,但其端点从-2147483648214748364704294967295.

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

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

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

储存0变成一个自动增量列具有与存储相同的效果无效的,除非零上无自动值SQL模式已启用。

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

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

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

从MySQL 8.0.17开始,自动增量不推荐使用支持浮动双重的柱;您应该期望在MySQL的未来版本中删除它。考虑移除自动增量属性,或将其转换为整数类型。