Voir http://dev.mysql.com/doc/ refman/8.0/en/numeric-types.html
-
INT
est un entier signé de quatre octets. -
BIGINT
est 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.