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/