numeric-type-attributes.md 4.0 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
### 11.1.6数字类型属性

[](<>)[](<>)[](<>)

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

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

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

笔记

这个`零填充`对于表达式或表达式中涉及的列,属性被忽略[`协会`](union.html)询问。

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

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

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

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

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

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

储存`0`变成一个`自动增量`列具有与存储相同的效果`无效的`,除非[`零上无自动值`](sql-mode.html#sqlmode_no_auto_value_on_zero)SQL模式已启用。

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

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

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

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