web-dev-qa-db-fra.com

INT (5) vs SMALLINT (5): nombres entre parenthèses après le type numérique

Dans les définitions de table MySQL, y a-t-il une différence entre INT(5) et SMALLINT(5)? Ou représentent-ils tous les deux la même taille?

30
BenV

n int et un smallint ont des tailles et des plages différentes. Le (5) Est smallint(5) ou int(5) est appelé "Attribut de type numérique" et représente la "largeur d'affichage" du champ,

MySQL prend en charge une extension pour spécifier éventuellement la largeur d'affichage des types de données entiers entre parenthèses après le mot-clé de base pour le type. Par exemple, INT(4) spécifie un INT avec une largeur d'affichage de quatre chiffres. Cette largeur d'affichage facultative peut être utilisée par les applications pour afficher des valeurs entières ayant une largeur inférieure à la largeur spécifiée pour la colonne en les remplissant à gauche avec des espaces. (C'est-à-dire que cette largeur est présente dans les métadonnées renvoyées avec les jeux de résultats. Qu'elle soit utilisée ou non dépend de l'application.)

Lorsqu'il est utilisé conjointement avec l'attribut facultatif (non standard) ZEROFILL, le remplissage par défaut des espaces est remplacé par des zéros. Par exemple, pour une colonne déclarée comme INT(4) ZEROFILL, une valeur de 5 Est récupérée comme 0005.

Il s'agit d'une "extension" MySQL, et zerofill est une "extension" sur une extension.

Pour la méthode saine de contrôle de l'affichage d'un type numérique, n'utilisez pas les attributs de type numérique et utilisez plutôt

42
Derek Downey