Vedi https://dev.mysql.com/doc/ refman/8.0/en/tipi-numerici.html
-
INTè un numero intero con segno a quattro byte. -
BIGINTè un numero intero con segno di otto byte.
Ciascuno di essi non accetta né più né meno valori di quelli che possono essere memorizzati nel rispettivo numero di byte. Ciò significa 2 valori in un INT e 2 valori in un BIGINT .
Il 20 in INT(20) e BIGINT(20) non significa quasi nulla. È un suggerimento per la larghezza del display. Non ha nulla a che fare con l'archiviazione, né con l'intervallo di valori che la colonna accetterà.
In pratica, interessa solo il ZEROFILL opzione:
CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;
+----------------------+
| bar |
+----------------------+
| 00000000000000001234 |
+----------------------+
È una comune fonte di confusione per gli utenti MySQL vedere INT(20) e supponiamo che sia un limite di dimensione, qualcosa di analogo a CHAR(20) . Non è così.