Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è la differenza tra tinyint, smallint, mediumint, bigint e int in MySQL?

Occupano diverse quantità di spazio e hanno diversi intervalli di valori accettabili.

Ecco le dimensioni e gli intervalli di valori per SQL Server , altri RDBMS hanno una documentazione simile:

Risulta che utilizzano tutti la stessa specifica (con alcune eccezioni minori annotate di seguito) ma supportano varie combinazioni di questi tipi (Oracle non incluso perché ha solo un NUMBER tipo di dati, vedere il link sopra):

             | 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

Inoltre, supportano gli stessi intervalli di valori (con un'eccezione di seguito) e hanno tutti gli stessi requisiti di archiviazione:

            | 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 

I tipi "non firmati" sono disponibili solo in MySQL, e il resto usa solo gli intervalli con segno, con una notevole eccezione:tinyint in SQL Server non è firmato e ha un intervallo di valori da 0 a 255