Comment défénir la taille d'un type int ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Comment défénir la taille d'un type int ?

par aqua007 » 29 août 2005, 21:49

Ah merci bien pour cette information et désolez pour le retard ! :merci:

par Ripat » 20 août 2005, 10:46

ah oki merci, je pige now. Mais quel est l'interet de mettre une valeur de int plus petite si le type INT est dans tous les cas codé sur 4 octets ?
Pour moi, aucun, sauf si tu veux afficher 008 plutôt que 8 sur un INT(3) avec l'option ZEROFILL.

De plus, même si tu stockes 123456 dans un INT(3), il sera affiché 123456!

Enfin, d'après la doc, ça peut provoquer des problèmes lorsque MySQL crée des tables temporaires pour exécuter des jointures.
Une autre extension supportée par MySQL permet de spécifier optionnellement la taille d'affichage, sous la forme d'une valeur entière entre parenthèses, juste après le mot clé spécifiant le type (par exemple, INT(4)). Cette spécification de taille est utilisée pour remplir à gauche, avec le caractère de remplissage par défaut, les nombres dont la taille est inférieure à celle spécifiée mais uniquement à l'affichage : cela ne réduit pas l'intervalle de validité des valeurs qui peuvent être stockées dans la colonne.

Lorsqu'elle est utilisée avec l'attribut de colonne optionnel ZEROFILL, le caractère de remplissage par défaut est remplacé par le caractère zéro. Par exemple, pour une colonne dont le type est INT(5) ZEROFILL, la valeur 4 sera lue 00004.

Notez que si vous stockez des nombres plus grands que la taille maximale d'affichage, vous pouvez rencontrer des problèmes lors de jointures de tables particulièrement compliquées, surtout si MySQL génére des tables temporaires : dans ce cas, MySQL pense que les données étaient limitées par l'affichage. http://dev.mysql.com/doc/mysql/fr/numeric-types.html

par aqua007 » 19 août 2005, 17:25

ah oki merci, je pige now. Mais quel est l'interet de mettre une valeur de int plus petite si le type INT est dans tous les cas codé sur 4 octets ?

par Ripat » 19 août 2005, 12:25

Attention à la confusion entre taille du champ et taille de l'affichage!

INT(6) veut dire un affichage sur 6 caractères. Le type INT sera toujours stocké sur 4 octets soit des valeurs min/max de
-2147483648 à 2147483647 en type signed
0 à 4294967295 en unsigned

par Cyrano » 19 août 2005, 11:21

Par défaut, le INT est à 10, : si tu limites à 4, autant mettre un TINYINT(4) qui fera la même chose.

par mere-teresa » 19 août 2005, 10:56

Le chiffre 4 dans INT(4) correspond au nombre de chiffres de ton entier.
4 => de 0000 à 9999
Voilà.

Et le manuel alors ?

http://www.nexen.net/docs/mysql/annotee ... ?lien=type

Comment défénir la taille d'un type int ?

par aqua007 » 19 août 2005, 10:52

Bonjour,

Cela fait plusieurs fois que je me pose la question de la taille (champ Length/Values* dans phpmyadmin) lorsque je créer un type INT.
En général je met 4 mais à quoi cela correspond-t-il vraiment ? Plus le nombre est élevé, plus le nombre peu être grand je suppose mais comment savoir un INT de 4 les valeurs qu'ils peut avoir ?
Par exemple si l'ont veux mettre la valeur d'un time() dans le champ INT, quelle valeur doit ton mettre au INT etc.

Merci de m'éclairer un peu :)