Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é a diferença entre tinyint, smallint, mediumint, bigint e int no MySQL?


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