Voir https://dev.mysql.com/doc/ refman/8.0/en/numeric-types.html
-
INTest un entier signé de quatre octets. -
BIGINTest un entier signé de huit octets.
Ils n'acceptent ni plus ni moins de valeurs que ce qui peut être stocké dans leur nombre respectif d'octets. Cela signifie 2 valeurs dans un INT et 2 valeurs dans un BIGINT .
Le 20 dans INT(20) et BIGINT(20) signifie presque rien. C'est un indice pour la largeur d'affichage. Cela n'a rien à voir avec le stockage, ni la plage de valeurs que la colonne acceptera.
Pratiquement, cela n'affecte que le ZEROFILL choix :
CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;
+----------------------+
| bar |
+----------------------+
| 00000000000000001234 |
+----------------------+
C'est une source courante de confusion pour les utilisateurs de MySQL de voir INT(20) et supposons qu'il s'agit d'une limite de taille, quelque chose d'analogue à CHAR(20) . Ce n'est pas le cas.