• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 数值类型属性

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

    显示宽度也没有限制,可以被存储在列中的值的范围内。也不会阻止宽于列显示宽度的值正确显示。例如,指定为的列SMALLINT(3)具有通常SMALLINT-32768to 范围32767,并且超过三位的数字将完整显示三位数字所允许的范围之外的值。

    与可选(非标准)ZEROFILL属性一起使用时,默认的空格填充将替换为零。例如,对于声明为的列INT(4)ZEROFILL,将5检索到的值0005

    注意

    ZEROFILL对于表达式或UNION查询中涉及的列,该属性将被忽略。

    如果将大于显示宽度的值存储在具有该ZEROFILL属性的整数列中,则当MySQL为某些复杂的联接生成临时表时,您可能会遇到问题。在这些情况下,MySQL假定数据值适合列显示宽度。

    从MySQL 8.0.17开始,ZEROFILL不推荐使用数字数据类型的属性,也不推荐使用整数数据类型的display width属性。ZEROFILL在将来的MySQL版本中,将删除对整数数据类型的支持和显示宽度。考虑使用替代方法来产生这些属性的效果。例如,应用程序可以使用该LPAD()功能对数字进行零填充以达到所需的宽度,或者可以将格式化的数字存储在CHAR列中。

    所有整数类型都可以具有可选的(非标准)UNSIGNED属性。无符号类型可用于仅允许一列中使用非负数,或者在您需要该列的较大的较高数字范围时使用。例如,如果某INT列为UNSIGNED,则该列的范围的大小相同,但其端点从-2147483648,向上移动214748364704294967295

    浮点和定点类型也可以是UNSIGNED。与整数类型一样,此属性可防止将负值存储在列中。与整数类型不同,列值的上限范围保持不变。从MySQL 8.0.17开始,该UNSIGNED属性不适用于类型为FLOATDOUBLE和和DECIMAL(以及任何同义词)的列,并且在将来的MySQL版本中将不再支持该属性。考虑CHECK对此类列使用简单约束。

    如果ZEROFILL为数字列指定,MySQL将自动添加UNSIGNED属性。

    整数或浮点数据类型可以具有该AUTO_INCREMENT属性。在NULL索引AUTO_INCREMENT列中插入值时,该列将设置为下一个序列值。通常,这是value +1,其中value是表中当前列的最大值。(AUTO_INCREMENT序列以开头1。)

    除非启用了SQL模式,否则存储0AUTO_INCREMENT列中与存储具有相同的效果。NULLNO_AUTO_VALUE_ON_ZERO

    插入NULL以生成AUTO_INCREMENT值需要声明该列NOT NULL。如果声明了该列NULL,则插入NULL存储一个NULL。当您将任何其他值插入到AUTO_INCREMENT列中时,该列将被设置为该值,并且将重置序列,以便从插入值开始依次生成下一个自动生成的值。

    AUTO_INCREMENT不支持列的负值。

    CHECK约束不能引用具有AUTO_INCREMENT属性的列,也不能将AUTO_INCREMENT属性添加到CHECK约束中使用的现有列中。

    从MySQL 8.0.17开始,AUTO_INCREMENT不支持FLOATDOUBLE列支持,并将在以后的MySQL版本中删除。考虑AUTO_INCREMENT从此类列中删除属性,或将其转换为整数类型。