Siehe http://dev.mysql.com/doc/ refman/8.0/en/numeric-types.html
-
INT
ist eine 4-Byte-Ganzzahl mit Vorzeichen. -
BIGINT
ist eine 8-Byte-Ganzzahl mit Vorzeichen.
Sie akzeptieren jeweils nicht mehr und nicht weniger Werte, als in ihrer jeweiligen Anzahl von Bytes gespeichert werden können. Das bedeutet 2 Werte in einem INT
und 2 Werte in einem BIGINT
.
Die 20 in INT(20)
und BIGINT(20)
bedeutet fast nichts. Es ist ein Hinweis für die Anzeigebreite. Es hat nichts mit der Speicherung oder dem Wertebereich zu tun, den die Spalte akzeptiert.
Praktisch betrifft es nur den ZEROFILL
Möglichkeit:
CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;
+----------------------+
| bar |
+----------------------+
| 00000000000000001234 |
+----------------------+
Es ist eine häufige Quelle der Verwirrung für MySQL-Benutzer, INT(20)
zu sehen und nehme an, es ist eine Größenbeschränkung, etwas Analoges zu CHAR(20)
. Dies ist nicht der Fall.