MySQL 中的 tinyint、smallint、mediumint、bigint 和 int 有什么区别?
What is the difference between tinyint, smallint, mediumint, bigint and int in MySQL?
在什么情况下应该使用这些?
In what cases should these be used?
它们占用的空间不同,可接受的值范围也不同.
They take up different amounts of space and they have different ranges of acceptable values.
这里是 SQL 的大小和值范围服务器,其他 RDBMS 也有类似的文档:
Here are the sizes and ranges of values for SQL Server, other RDBMSes have similar documentation:
NUMBER
数据类型)NUMBER
datatype really)事实证明它们都使用相同的规范(除了下面提到的一些小例外),但支持这些类型的各种组合(Oracle 不包括在内,因为它只有一个 NUMBER
数据类型,请参阅上面的链接):
Turns out they all use the same specification (with a few minor exceptions noted below) but support various combinations of those types (Oracle not included because it has just a NUMBER
datatype, see the above link):
| 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
并且它们支持相同的值范围(下面有一个例外)并且都具有相同的存储要求:
And they support the same value ranges (with one exception below) and all have the same storage requirements:
| 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 中可用,其余类型仅使用有符号范围,有一个明显的例外:SQL Server 中的 tinyint
是无符号的,并且具有取值范围为 0 到 255
The "unsigned" types are only available in MySQL, and the rest just use the signed ranges, with one notable exception: tinyint
in SQL Server is unsigned and has a value range of 0 to 255
这篇关于MySQL 中的 tinyint、smallint、mediumint、bigint 和 int 有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!