# 11.1.6数字类型属性
MySQL支持一个扩展,可以选择在类型的base关键字后面的括号中指定整数数据类型的显示宽度。例如INT(4)
指定国际的
显示宽度为四位数。应用程序可以使用此可选的显示宽度,通过左键填充空格来显示宽度小于为列指定宽度的整数值。(也就是说,这个宽度存在于随结果集返回的元数据中。是否使用它取决于应用程序。)
显示器的宽度不一样不约束可存储在列中的值的范围。它也不会阻止比列显示宽度更宽的值正确显示。例如,指定为SMALLINT(3)
和往常一样斯莫林
范围-32768
到32767
,并且超出三位数允许范围的值将使用三位数以上的数字完整显示。
与可选选项(非标准)结合使用时零填充
属性时,空格的默认填充将替换为零。例如,对于声明为INT(4)零填充
,价值5.
被检索为0005
.
笔记
这个零填充
对于表达式或表达式中涉及的列,属性被忽略协会
询问。
如果将大于显示宽度的值存储在具有零填充
属性,当MySQL为一些复杂的连接生成临时表时,可能会遇到问题。在这些情况下,MySQL假设数据值符合列显示宽度。
从MySQL 8.0.17开始零填充
对于数值数据类型,属性是不推荐的,对于整型数据类型,显示宽度属性也是不推荐的。你应该期待他们的支持零填充
以及在未来版本的MySQL中删除的整数数据类型的显示宽度。考虑使用一种替代方法来产生这些属性的效果。例如,应用程序可以使用LPAD()
函数将焊盘编号归零至所需的宽度,也可以将格式化后的数字存储在烧焦
柱。
所有整数类型都可以有可选的(非标准)未签名
属性无符号类型可用于仅允许列中的非负数,或在需要更大的列上限数值范围时。例如,如果国际的
专栏是未签名
,列的范围大小相同,但其端点从-2147483648
和2147483647
到0
和4294967295
.
也可以选择浮点和定点类型未签名
。与整数类型一样,此属性可防止在列中存储负值。与整数类型不同,列值的上限保持不变。从MySQL 8.0.17开始未签名
属性不推荐用于类型为的列浮动
, 双重的
和十进制的
(以及任何同义词),您应该期望在未来的MySQL版本中删除对它的支持。考虑使用简单的检查
而不是为此类列设置约束。
如果你指定零填充
对于数字列,MySQL会自动添加未签名
属性
整数或浮点数据类型可以具有自动增量
属性当您插入的值为无效的
变成索引自动增量
列,则该列被设置为下一个序列值。通常这是*
价值*+1
哪里*价值
*是表中当前列的最大值。(自动增量
序列以1.
.)
储存0
变成一个自动增量
列具有与存储相同的效果无效的
,除非零上无自动值
SQL模式已启用。
插入无效的
产生自动增量
值要求声明该列非空
.如果列被声明无效的
,插入无效的
储存无效的
。当您将任何其他值插入自动增量
列,则该列被设置为该值,并重置序列,以便下一个自动生成的值从插入的值开始依次出现。
的负值自动增量
不支持列。
检查
约束不能引用具有自动增量
属性,也不能自动增量
属性可以添加到中使用的现有列中检查
限制。
从MySQL 8.0.17开始,自动增量
不推荐使用支持浮动
和双重的
柱;您应该期望在MySQL的未来版本中删除它。考虑移除自动增量
属性,或将其转换为整数类型。