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

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

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

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

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

  • MySQL
  • 博士后
  • Oracle(他们只有一个数字数据类型)
  • DB2

事实证明,它们都使用相同的规范(下面有一些小的例外),但支持这些类型的各种组合(Oracle不包括在内,因为它只有一个数字数据类型,请参见上面的链接):

SQL Server MySQL Postgres DB2
---------------------------------------------------
tinyint | X X
smallint | X
中微子
整数/整数| X
bigint | X

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

|字节范围(有符号)范围(无符号)
--------------------------------------------------------------------------------------------
tinyint | 1字节-128到127 0到255
smallint | 2字节-32768到32767 0到65535
mediumint | 3字节-8388608至8388607 0至16777215
int/integer | 4字节-2147483648到2147483647 0到4294967295
bigint | 8字节-9223372036854775808至9223372036854775807 0至18446744073709551615

“unsigned”类型仅在MySQL中可用,其余类型仅使用带符号的范围,但有一个显著的例外:tinyint在SQL Server中是unsigned,其值范围为0到255

发表评论