MySQL 中的 tinyint、smallint、mediumint、bigint 和 int 有什么区别?
在什么情况下应该使用这些?
它们占用不同数量的空间,并且具有不同的可接受值范围。
以下是 SQL Server 的值的大小和范围,其他 RDBMS 也有类似的文档:
NUMBER
事实证明,它们都使用相同的规范(除了下面提到的一些小例外),但支持这些类型的各种组合(不包括 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
tinyint