Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist der Unterschied zwischen tinyint, smallint, mediumint, bigint und int in MySQL?

Sie nehmen unterschiedlich viel Platz ein und haben unterschiedliche Bereiche akzeptabler Werte.

Hier sind die Größen und Wertebereiche für SQL Server , andere RDBMS haben eine ähnliche Dokumentation:

Es stellt sich heraus, dass sie alle dieselbe Spezifikation verwenden (mit einigen kleinen Ausnahmen, die unten aufgeführt sind), aber verschiedene Kombinationen dieser Typen unterstützen (Oracle nicht enthalten, da es nur eine NUMBER hat Datentyp, siehe obigen 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

Und sie unterstützen die gleichen Wertebereiche (mit einer Ausnahme unten) und alle haben die gleichen Speicheranforderungen:

            | 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 

Die „unsigned“-Typen sind nur in MySQL verfügbar, und der Rest verwendet nur die signierten Bereiche, mit einer bemerkenswerten Ausnahme:tinyint in SQL Server ist nicht signiert und hat einen Wertebereich von 0 bis 255