小编典典

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

all

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

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


阅读 116

收藏
2022-03-22

共1个答案

小编典典

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

以下是 SQL Server 的值的大小和范围,其他 RDBMS 也有类似的文档:

事实证明,它们都使用相同的规范(除了下面提到的一些小例外),但支持这些类型的各种组合(不包括
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

它们支持相同的值范围(以下有一个例外)并且都具有相同的存储要求:

            | 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 中可用,其余仅使用有符号范围,有一个值得注意的例外: tinyint 在 SQL Server
中是无符号
的,值范围为 0 到 255

2022-03-22