对于整数数据类型,米
表示最大显示宽度。最大显示宽度为255.显示宽度与类型可以存储的值范围不相关,如图所示第11.1.6节,“数值类型属性”.
对于浮点和定点数据类型,米
是可存储的总位数。
正如MySQL 8.0.17的那样,弃用显示宽度属性用于整数数据类型;你应该期望在MySQL的未来版本中移除对它的支持。
如果您指定Zerofill.
对于数字列,MySQL会自动添加无符号
属性到列。
从MySQL 8.0.17开始Zerofill.
属性不赞成用于数值数据类型;你应该期望在MySQL的未来版本中移除对它的支持。考虑使用另一种方法来产生此属性的效果。例如,应用程序可以使用LPAD()
函数到零焊盘编号,直到所需的宽度,或者它们可以存储格式化的数字char
列。
允许的数字数据类型无符号
属性也允许签
.但是,这些数据类型默认签名,所以签
属性无效。
从MySQL 8.0.17开始无符号
属性不赞成用于类型为的列漂浮
,双倍的
,小数
(以及任何同义词);你应该期望在MySQL的未来版本中移除对它的支持。考虑使用简单查看
限制而不是此类列。
串行
是一个别名bigint unsigned not null auto_increment是唯一的
.
串行默认值
在整数列的定义中是not null auto_increment是唯一的
.
当您在Integer值之间使用减法时无符号
,结果为无符号,除非no_unsigned_subtraction.
启用SQL模式。看到第12.11节,“转换函数和操作符”.
比特值类型。
米
1至64表示每个值的位数。默认值为1米
被省略了。一个很小的整数。带符号的范围是
-128
至127.
.无符号范围是0
至255.
.这些类型是同义词
Tinyint(1)
.0的值被认为是假的。非零值被认为为真:MySQL>选择(0,'真','false');+ ---------------------- + |如果(0,'真','false')|+ ---------------------- + |假|+ ---------------------- + mysql>选择if(1,'真','false');+ ---------------------- + |if(1,'真','false')|+ ---------------------- + |真实| +------------------------+ mysql> SELECT IF(2, 'true', 'false'); +------------------------+ | IF(2, 'true', 'false') | +------------------------+ | true | +------------------------+
但是,值
真正的
和错误的
只是别名1
和0
,分别如此所示:mysql> SELECT IF(0 = FALSE, 'true', ' FALSE ');+--------------------------------+ | 如果(0 = FALSE,“真”,“假的 ') | +--------------------------------+ | 真正的 | +--------------------------------+ mysql >选择如果(1 = TRUE,“真实”,“假”);+-------------------------------+ | 如果(1 = TRUE,“真正的”,“假的 ') | +-------------------------------+ | 真正的 | +-------------------------------+ mysql >选择如果(2 = TRUE,“真实”,“假”);+-------------------------------+ | 如果(2 = TRUE,“真实的”,“假的 ') | +-------------------------------+ | 假 | +-------------------------------+ mysql >选择如果(2 = FALSE,“真实的”,“假”);+--------------------------------+ | 如果(2 = FALSE,“真实的”,“假的 ') | +--------------------------------+ | 假 | +--------------------------------+
最后两个语句显示所示结果,因为
2
两者都不相等1
也不0
.一个小整数。带符号的范围是
-32768
至32767
.无符号范围是0
至65535
.中型整数。带符号的范围是
-8388608
至8388607.
.无符号范围是0
至16777215
.正常大小的整数。带符号的范围是
-2147483648
至2147483647
.无符号范围是0
至4294967295
.此类型是一个同义词
㈡
.一个大整数。带符号的范围是
-9223372036854775808
至9223372036854775807
.无符号范围是0
至18446744073709551615
.串行
是一个别名bigint unsigned not null auto_increment是唯一的
.你应该意识到的一些事情
big
列:所有算术都使用签名完成
big
或者双倍的
值,所以你不应该使用大于的unsigned大整数9223372036854775807
(63位)除了位函数之外!如果您这样做,结果中的一些最后一位数字可能是错误的,因为在转换时舍入错误big
价值到A.双倍的
.MySQL可以处理
big
在以下情况下:使用整数时存储大的无符号值
big
柱子。在
分钟(
或者col_name
)最大限度(
, 在哪里col_name
)col_name
指A.big
柱子。
控件中总是可以存储精确的整数值
big
通过使用字符串存储它来列。在这种情况下,MySQL执行字符串到数字转换,该转换涉及中间双精度表示。的
-
,+
,*
操作员使用big
两个操作数是整数值时算术。这意味着如果将两个大整数乘以(或从返回整数的函数的结果),则当结果大于时可能会出现意外结果9223372036854775807
.
十进制((
米
[,D
]])[unsigned] [Zerofill]一个包装”精确的”定点号。
米
是总位数(精度)和D
是小数点(刻度)后的位数。小数点和(对于负数)-
标志不计入米
.如果D
是0,值没有小数点或分数部分。最大位数(米
) 为了小数
是65。支持的最大小数数(D
)是30。如果D
省略,默认为0。如果米
省略,默认为10.(还有限制文本的时间小数
文字可以;看第12.25.3节“表达处理”.)无符号
,如果指定,则禁止使用负数。从MySQL 8.0.17开始无符号
属性不赞成用于类型为的列小数
(以及任何同义词);你应该期望在MySQL的未来版本中移除对它的支持。考虑使用简单查看
限制而不是此类列。所有基本计算(
+, - ,*,/
),小数
列完成了65位的精度。12月((
,米
[,D
]])[unsigned] [Zerofill]数字((
,米
[,D
]])[unsigned] [Zerofill]固定的[(
米
[,D
]])[unsigned] [Zerofill]一个小(单精度)浮点数。允许的值
-3.402823466e + 38.
至-1.175494351e-38
,0
,1.175494351e-38
至3.402823466 e+38
.这些是基于IEEE标准的理论限制。根据硬件或操作系统的不同,实际范围可能会稍微小一些。米
是数字的总数和D
是小数点后面的位数。如果米
和D
被省略,值被存储到硬件允许的限制。单精度浮点数大约精确到小数点后7位。漂浮(
是非标准MySQL扩展。正如MySQL 8.0.17的那样,不推荐使用此语法,并且您应该期望在未来版本的MySQL中删除它。米
,D
)无符号
,如果指定,则禁止使用负数。从MySQL 8.0.17开始无符号
属性不赞成用于类型为的列漂浮
(以及任何同义词),您应该期望支持它在未来版本的MySQL中删除。考虑使用简单查看
限制而不是此类列。使用
漂浮
可能会给你一些意想不到的问题,因为MySQL中的所有计算都是用双精度完成的。看到第b.3.4.7节“解决问题”第b.3.4.7节“没有匹配行”.浮点数。
p
表示位的精度,但MySQL仅使用此值来确定是否使用漂浮
或者双倍的
对于生成的数据类型。如果p
是0到24,数据类型变为漂浮
没有米
或者D
值。如果p
是25到53,数据类型变为双倍的
没有米
或者D
值。得到的柱的范围与单精度相同漂浮
或双精度双倍的
本节前面描述的数据类型。无符号
,如果指定,则禁止使用负数。从MySQL 8.0.17开始无符号
属性不赞成用于类型为的列漂浮
(以及任何同义词),您应该期望支持它在未来版本的MySQL中删除。考虑使用简单查看
限制而不是此类列。漂浮(
用于ODBC兼容性提供了语法。p
)正常大小(双精度)浮点数。允许的值
-1.7976931348623157e + 308
至-2.2250738585072014e-308
,0
,2.2250738585072014 e - 308
至1.7976931348623157 e + 308
.这些是基于IEEE标准的理论限制。根据硬件或操作系统的不同,实际范围可能会稍微小一些。米
是数字的总数和D
是小数点后面的位数。如果米
和D
被省略,值被存储到硬件允许的限制。双精度浮点数精确到大约15位小数。双倍的(
是非标准MySQL扩展。正如MySQL 8.0.17的那样,不推荐使用此语法,您应该期望在未来版本的MySQL中删除它。米
,D
)无符号
,如果指定,则禁止使用负数。从MySQL 8.0.17开始无符号
属性不赞成用于类型为的列双倍的
(以及任何同义词),您应该期望支持它在未来版本的MySQL中删除。考虑使用简单查看
限制而不是此类列。双精度[(
,米
,D
)(无符号)(补零)真实的[(
米
,D
)(无符号)(补零)这些类型是同义词
双倍的
.例外:如果real_as_float.
启用SQL模式,真实的
是同义词吗漂浮
而不是双倍的
.