web-dev-qa-db-fra.com

Type de données MySQL INT (11) alors que UNSIGNED INT (10)?

dans MySQL si nous créons un champ dataType de INT et ne spécifie aucune longueur/valeur, il devient automatiquement int(11) et si nous définissons l'attribut UNSIGNED ou NSIGNED ZEROFILL puis il se transforme en int(10)

Où est-ce que longueur (1) va?

49
diEcho

la valeur int peut être -2147483648 ce sont 11 chiffres donc la valeur par défaut display la taille est 11

unsigned int ne permet pas les nombres négatifs, donc par défaut, il n'a besoin que display taille 10

Comme le montre la documentation ci-dessous, le nombre de bits requis pour stocker SIGNED INT et UNSIGNED INT est le même, la plage de nombres stockables est simplement décalée:

Le type non signé peut être utilisé pour autoriser uniquement les nombres non négatifs dans une colonne ou lorsque vous avez besoin d'une plage numérique supérieure plus grande pour la colonne. Par exemple, si une colonne INT est UNSIGNED, la taille de la plage de la colonne est la même, mais ses points de terminaison passent de -2147483648 et 2147483647 à 0 et 4294967295.

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

68
Shakti Singh

Selon la documentation , ce nombre est simplement la largeur d'affichage.

Par exemple, INT (4) spécifie un INT avec une largeur d'affichage de quatre chiffres.

La largeur d'affichage ne limite pas la plage de valeurs pouvant être stockées dans la colonne . Cela n'empêche pas non plus les valeurs plus larges que la largeur d'affichage des colonnes d'être affichées correctement. Par exemple, une colonne spécifiée comme SMALLINT (3) a la plage SMALLINT habituelle de -32768 à 32767, et les valeurs en dehors de la plage autorisée par trois chiffres sont affichées dans leur intégralité en utilisant plus de trois chiffres.

La largeur d'affichage par défaut pour un UNSIGNEDINT est inférieure de un pour un nonUNSIGNEDINT simplement parce que vous n'afficherez jamais un - personnage.

Notez que vous pouvez toujours spécifier la largeur d'affichage que vous souhaitez. C'est juste le par défaut.

L'utilisation du terme "chiffres" dans la documentation est ici un peu trompeuse.

24

Au cas où quelqu'un ne comprend pas tout à fait réponse de Shakti (comme je ne l'ai pas fait). Voici une représentation visuelle de pourquoi:

 Signed minimum:
 - 2 1 4 7 4 8 3 6 4  8
 1 2 3 4 5 6 7 8 9 10 11

 Unsigned max (also the signed max):
 4 2 9 4 9 6 7 2 9 5
 1 2 3 4 5 6 7 8 9 10
8
Darryl Hein