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
ripat