MySQL支持一个扩展,可以在类型的base关键字后面的括号中指定整数数据类型的显示宽度。例如,int(4)
指定一个㈡
显示宽度为四位数。应用程序可以使用该可选显示宽度来显示宽度小于用空格的左填充到列为列指定的宽度的整数值。(即,使用结果集返回的元数据中存在此宽度。是否使用它是达到应用程序。)
显示宽度不约束可存储在列中的值的范围。它也不会阻止比列显示宽度更宽的值被正确显示。例如,指定为的列短整型(3)
有常用small
范围的-32768
来32767
,并且在三位数允许的范围之外的值以超过三位数字完全显示。
当与可选(非标准)一起使用时Zerofill.
属性,使用零替换空格的默认填充。例如,对于声明的列int(4)zerofill
,价值5
检索是0005
.
的Zerofill.
属性中涉及的列将被忽略联盟
查询。
如果将值大于具有的整数列中的显示宽度存储Zerofill.
属性,当MySQL为一些复杂的连接生成临时表时,您可能会遇到问题。在这些情况下,MySQL假定数据值适合列显示宽度。
从MySQL 8.0.17开始Zerofill.
属性不赞成用于数字数据类型,整数数据类型的display width属性也是如此。你应该期待支持Zerofill.
以及在MySQL的未来版本中移除的整数数据类型的显示宽度。考虑使用另一种方法来产生这些属性的效果。例如,应用程序可以使用LPAD()
函数将零填充数设置为所需的宽度,或者它们可以在其中存储格式化的数字char
列。
所有整数类型都可以有一个可选的(非标准)无符号
属性。无符号类型可用于仅允许列中的非负编号,也可在列中需要较大的列数。例如,如果是㈡
列是无符号
,则列范围的大小相同,但其端点向上移动,从-2147483648
和2147483647
来0
和4294967295
.
浮点和定点类型也可以是无符号
.与整数类型一样,此属性防止在列中存储负值。与整数类型不同,列值的上范围保持不变。从MySQL 8.0.17开始无符号
属性不赞成用于类型为的列漂浮
,双倍的
, 和十进制
(以及任何同义词),你应该期望在MySQL的未来版本中删除对它的支持。考虑使用简单的查看
限制而不是此类列。
如果您指定Zerofill.
对于数字列,MySQL会自动添加无符号
属性。
整数或浮点数据类型可以具有自动递增
属性。的值时空值
到一个索引自动递增
列,列被设置为下一个序列值。通常是这是
,在那里价值
+1价值
表中当前列的最大值。(自动递增
序列的开始1
.)
储存0
进入自动递增
列具有与存储相同的效果空值
,除非是NO_AUTO_VALUE_ON_ZERO
启用SQL模式。
插入空值
生成自动递增
值要求声明列非空
.如果列被声明空值
、插入空值
商店A.空值
.当您将任何其他值插入时自动递增
列,则列被设置为该值,并重置序列,以便在插入的值之后依次自动生成下一个值。
负值自动递增
不支持列。
查看
约束不能引用具有自动递增
属性,也不能自动递增
属性中使用的现有列查看
约束。
从MySQL 8.0.17开始,自动递增
支持不推荐使用漂浮
和双倍的
列;你应该期望它在MySQL的未来版本中被删除。考虑删除自动递增
属性,或将它们转换为整数类型。