Je me demandais quelle est la différence entre BigInt
, MediumInt
et Int
sont ... il semblerait évident qu'ils permettraient un plus grand nombre; cependant, je peux faire un Int(20)
ou un BigInt(20)
et cela donnerait l'impression qu'il ne s'agit pas nécessairement de taille.
Un aperçu serait génial, juste curieux. J'utilise MySQL depuis un certain temps et j'essaie d'appliquer les besoins de l'entreprise lors du choix des types, mais je n'ai jamais compris cet aspect.
bar INT ZEROFILL(20)
. Cela aurait été beaucoup plus clair. Mais cette décision a été prise il y a longtemps, et la changer maintenant briserait des millions d'installations de bases de données.Le nombre entre parenthèses dans une déclaration de type est la largeur d'affichage , qui n'est pas liée à la plage de valeurs qui peut être stockée dans un type de données. Ce
Int(20)
n'est pas parce que vous pouvez déclarer que vous pouvez y stocker jusqu'à 10 ^ 20:Pour une liste des valeurs maximales et minimales qui peuvent être stockées dans chaque type de données MySQL, voir ici .
la source
Citation :
la source
Pour autant que je sache, il n'y a qu'une petite différence lorsque vous essayez d'insérer une valeur hors de portée.
INT(20)
pour le système, cela signifie allouer au moins 20 bits en mémoire. Mais si vous insérez une valeur plus grande que2^20
, elle sera stockée avec succès, uniquement si elle est inférieure àINT(32) -> 2147483647
(ou2 * INT(32) -> 4294967295
pourUNSIGNED
)Exemple:
BIGINT(20)
pour le système, cela signifie allouer au moins 20 bits en mémoire. Mais si vous insérez une valeur plus grande que2^20
, elle sera stockée avec succès, si elle est inférieure àBIGINT(64) -> 9223372036854775807
(ou2 * BIGINT(64) -> 18446744073709551615
pourUNSIGNED
)Exemple:
la source
Je voulais ajouter un point supplémentaire: si vous stockez un très grand nombre comme 902054990011312, vous pouvez facilement voir la différence entre
INT(20)
etBIGINT(20)
. Il est conseillé de rangerBIGINT
.la source
Donnons un exemple pour int (10) un avec le mot-clé zerofill, un pas, le tableau aime ça:
Insérons quelques données:
ensuite
On peut voir ça
avec un mot clé
zerofill
, un nombre inférieur à 10 remplira 0, mais sanszerofill
luiDeuxièmement, avec le mot clé
zerofill
, int_10_with_zf devient un type int non signé, si vous insérez un moins, vous obtiendrez une erreurOut of range value for column.....
. Mais vous pouvez insérer moins à int_10. De plus, si vous insérez 4294967291 dans int_10, vous obtiendrez une erreurOut of range value for column.....
Conclusion:
int (X) sans mot clé
zerofill
, est égal à la plage int -2147483648 ~ 2147483647int (X) avec le mot
zerofill
- clé , le champ est égal à la plage int non signée 0 ~ 4294967295, si la longueur de num est inférieure à X, il remplira 0 à gauchela source