不同的整数mysql类型是什么意思

时间:2015-06-08 09:36:08

标签: mysql sqldatatypes

例如,TINYINT和INT(1)之间或者TINYINT(3)和MEDIUMINT之间有什么区别?

4 个答案:

答案 0 :(得分:1)

MySQL支持SQL标准整数类型INTEGER(或INT)和SMALLINT。作为标准的扩展,MySQL还支持整数类型TINYINT,MEDIUMINT和BIGINT。下表显示了每种整数类型所需的存储和范围。

enter image description here

参考他们的主website

答案 1 :(得分:0)

INT - 可以是有符号或无符号的正常大小的整数。如果已签名,则允许范围为-2147483648至2147483647.如果为无符号,则允许范围为0到4294967295.您可以指定最多11位数的宽度。

TINYINT - 一个非常小的整数,可以是有符号或无符号的。如果已签名,则允许范围为-128到127.如果是无符号,则允许范围为0到255.您可以指定最多4位数的宽度。

SMALLINT - 可以是有符号或无符号的小整数。如果已签名,则允许范围为-32768到32767.如果是无符号,则允许范围为0到65535.您可以指定最多5位数的宽度。

MEDIUMINT - 一个中等大小的整数,可以是有符号或无符号的。如果已签名,则允许范围为-8388608至8388607.如果未签名,则允许范围为0到16777215.您可以指定最多9位数的宽度。

BIGINT - 可以签名或未签名的大整数。如果已签名,则允许范围为-9223372036854775808至9223372036854775807.如果为无符号,则允许范围为0到18446744073709551615.您可以指定最多20位的宽度。

FLOAT(M,D) - 不能无符号的浮点数。您可以定义显示长度(M)和小数位数(D)。这不是必需的,默认为10,2,其中2是小数位数,10是总位数(包括小数位数)。对于FLOAT,十进制精度可以达到24位。

DOUBLE(M,D) - 无法无符号的双精度浮点数。您可以定义显示长度(M)和小数位数(D)。这不是必需的,默认为16,4,其中4是小数位数。对于DOUBLE,十进制精度可以达到53位。 REAL是DOUBLE的同义词。

DECIMAL(M,D) - 一个无法解压缩的解包浮点数。在解包的小数中,每个小数对应一个字节。需要定义显示长度(M)和小数位数(D)。 NUMERIC是DECIMAL的同义词。

http://www.tutorialspoint.com/mysql/mysql-data-types.htm

答案 2 :(得分:0)

  

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

     

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

https://dev.mysql.com/doc/refman/5.6/en/numeric-type-attributes.html

答案 3 :(得分:0)

不同之处在于存储。

TINYINT是1个字节。 MEDIUMINT是3个字节。 INT是4个字节。 TINYINT(3) 3这里是显示宽度。显示宽度与类型可包含的值范围无关。

因此TINYINTTINYINT(3)采用相同的存储空间,但呈现方式不同。