mysql - MySQL 中的 tinyint、smallint、mediumint、bigint 和 int 有什么区别?

标签 mysql integer

MySQL 中的 tinyint、smallint、mediumint、bigint 和 int 有什么区别?

在什么情况下应该使用这些?

最佳答案

它们占用不同数量的空间,并且具有不同的可接受值范围。

Here are the sizes and ranges of values for SQL Server ,其他 RDBMS 也有类似的文档:

事实证明它们都使用相同的规范(下面提到了一些小异常(exception))但支持这些类型的各种组合(不包括 Oracle,因为它只有一个 NUMBER 数据类型,请参阅上面的链接):

             | SQL Server    MySQL   Postgres    DB2
---------------------------------------------------
tinyint      |     X           X                
smallint     |     X           X         X        X
mediumint    |                 X
int/integer  |     X           X         X        X 
bigint       |     X           X         X        X

并且它们支持相同的值范围(下面有一个异常(exception))并且都具有相同的存储要求:

            | Bytes    Range (signed)                               Range (unsigned)
--------------------------------------------------------------------------------------------
tinyint     | 1 byte   -128 to 127                                  0 to 255
smallint    | 2 bytes  -32768 to 32767                              0 to 65535
mediumint   | 3 bytes  -8388608 to 8388607                          0 to 16777215
int/integer | 4 bytes  -2147483648 to 2147483647                    0 to 4294967295
bigint      | 8 bytes  -9223372036854775808 to 9223372036854775807  0 to 18446744073709551615 

“无符号”类型仅在 MySQL 中可用,其余仅使用有符号范围,有一个值得注意的异常(exception):tinyint 在 SQL Server 中是无符号的,并且具有取值范围为 0 到 255

关于mysql - MySQL 中的 tinyint、smallint、mediumint、bigint 和 int 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2991405/

相关文章:

javascript - BackboneJS - 从 PHP 文件中获取数据并在 View 中显示

c++ - Qt:格式化QString中的整数

perl 整数算术给出浮点答案

Javascript 整数数组错误

MySQL基于当前行查询行

mysql - 高级 MySQL ORDER BY 父序列,然后按子序列

mysql - 选择总和,直到找到特定行

mysql - 如何在多个条件下进行更新

ruby - 如何遍历整数的数字?

r - 如何检查向量中的每个元素在R中是否为整数?