Ils occupent différentes quantités d'espace et ont différentes plages de valeurs acceptables.
Voici les tailles et plages de valeurs pour SQL Server , d'autres SGBDR ont une documentation similaire :
Il s'avère qu'ils utilisent tous la même spécification (avec quelques exceptions mineures notées ci-dessous) mais prennent en charge diverses combinaisons de ces types (Oracle non inclus car il n'a qu'un NUMBER
type de données, voir le lien ci-dessus):
| 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
Et ils prennent en charge les mêmes plages de valeurs (à une exception près ci-dessous) et ont tous les mêmes exigences de stockage :
| 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
Les types "non signés" ne sont disponibles que dans MySQL, et les autres utilisent simplement les plages signées, à une exception notable :tinyint
dans SQL Server n'est pas signé et a une plage de valeurs de 0 à 255