Zie http://dev.mysql.com/doc/ refman/8.0/en/numeric-types.html
-
INT
is een vier-byte geheel getal met teken. -
BIGINT
is een integer van acht bytes met teken.
Ze accepteren elk niet meer en niet minder waarden dan kan worden opgeslagen in hun respectieve aantal bytes. Dat betekent 2 waarden in een INT
en 2 waarden in een BIGINT
.
De 20 in INT(20)
en BIGINT(20)
betekent bijna niets. Het is een hint voor de weergavebreedte. Het heeft niets te maken met opslag, noch met het waardenbereik dat de kolom accepteert.
In de praktijk heeft het alleen invloed op de ZEROFILL
optie:
CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;
+----------------------+
| bar |
+----------------------+
| 00000000000000001234 |
+----------------------+
Het is een veelvoorkomende bron van verwarring voor MySQL-gebruikers om INT(20)
. te zien en neem aan dat het een maximale grootte is, iets analoog aan CHAR(20)
. Dit is niet het geval.