Vedi http://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ì.