Documentation Home
MySQL 8.0 参考手册  / 第 11 章数据类型  / 11.1 数值数据类型  /  11.1.6 数值类型属性

11.1.6 数值类型属性

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

显示宽度不限制可以存储在列中的值的范围。它也不会阻止正确显示比列显示宽度宽的值。例如,指定为 的列 SMALLINT(3)的通常 SMALLINT范围为 -3276832767,超出三位数允许范围的值将使用多于三位数完整显示。

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

笔记

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

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

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

浮点和定点类型也可以是 UNSIGNED. 对于整数类型,此属性可防止负值存储在列中。与整数类型不同,列值的上限范围保持不变。

如果您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不支持列的 负值。