Se https://dev.mysql.com/doc/ refman/8.0/da/numeric-types.html
-
INTer et fire-byte-signeret heltal. -
BIGINTer et otte-byte-signeret heltal.
De accepterer hver især ikke flere og ikke færre værdier, end der kan lagres i deres respektive antal bytes. Det betyder 2 værdier i en INT og 2 værdier i en BIGINT .
De 20 i INT(20) og BIGINT(20) betyder næsten ingenting. Det er et tip til skærmbredden. Det har intet at gøre med lagring, eller rækken af værdier, som kolonnen vil acceptere.
Praktisk talt påvirker det kun ZEROFILL mulighed:
CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;
+----------------------+
| bar |
+----------------------+
| 00000000000000001234 |
+----------------------+
Det er en almindelig kilde til forvirring for MySQL-brugere at se INT(20) og antag, at det er en størrelsesgrænse, noget analogt med CHAR(20) . Dette er ikke tilfældet.