Eles ocupam diferentes quantidades de espaço e têm diferentes faixas de valores aceitáveis.
Aqui estão os tamanhos e intervalos de valores para SQL Server , outros RDBMSes possuem documentação semelhante:
Acontece que todos eles usam a mesma especificação (com algumas pequenas exceções indicadas abaixo), mas suportam várias combinações desses tipos (Oracle não está incluído porque tem apenas um
NUMBER
tipo de dados, veja o link acima): | 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
E eles suportam os mesmos intervalos de valores (com uma exceção abaixo) e todos têm os mesmos requisitos de armazenamento:
| 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
Os tipos "unsigned" estão disponíveis apenas no MySQL, e o restante usa apenas os intervalos assinados, com uma exceção notável:
tinyint
no SQL Server não está assinado e tem um intervalo de valores de 0 a 255