De tar olika mycket plats och de har olika intervall av acceptabla värden.
Här är storlekarna och värdeintervallen för SQL Server , andra RDBMS har liknande dokumentation:
Det visar sig att de alla använder samma specifikation (med några få mindre undantag som anges nedan) men stöder olika kombinationer av dessa typer (Oracle ingår inte eftersom det bara har ett NUMBER
datatyp, se länken ovan):
| 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
Och de stöder samma värdeintervall (med ett undantag nedan) och alla har samma lagringskrav:
| 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
De "osignerade" typerna är endast tillgängliga i MySQL, och resten använder bara de signerade intervallen, med ett anmärkningsvärt undantag:tinyint
i SQL Server är osignerad och har ett värdeområde på 0 till 255