Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :Pourquoi spécifier la largeur d'affichage sans utiliser de zérofill

Cette largeur d'affichage "fonctionnalité" supplémentaire est assez déroutante, car dans d'autres types de colonnes comme CHAR est spécifie la longueur.

Voici une brève description :

  • Le plus important :ce n'est pas en spécifiant "l'espace de stockage" ou "le nombre de chiffres". Il indique simplement comment les données de cette colonne sont formatées avant qu'il ne soit retourné. INT(5) peut stocker le même des valeurs telles que INT(16) ou INT(255) - les trois peuvent stocker toutes (et uniquement) les valeurs valides pour INT. INT(255) ne peut pas stocker un nombre à 255 chiffres. L'espace de stockage pour chacun d'eux est l'espace occupé par un INT.
  • Si vous utilisez ZEROFILL sur une colonne avec une largeur d'affichage et que la représentation sous forme de chaîne du nombre stocké est plus courte que la largeur d'affichage, elle sera complétée à gauche avec des zéros. Si c'est plus long, rien ne se passe. Si vous choisissez INT(5) et que la valeur est 13, elle sera renvoyée sous la forme 00013. Si la valeur est 123456, elle sera renvoyée sous la forme 123456.
  • Si vous n'utilisez pas ZEROFILL , il n'y aura pas de remplissage du tout (pas d'espaces et autres)
  • Si vous utilisez ZEROFILL , vous devez savoir que la colonne sera également UNSIGNED
  • Dans tous les cas, la largeur d'affichage est renvoyée lorsque les métadonnées de la table sont interrogées. Ainsi, une application pourrait savoir comment les données doivent être formatées.

Je n'aime pas la largeur d'affichage, car la couche de stockage "connaît" la présentation visuelle des données stockées. En plus de cela, il n'y a aucune utilisation à ma connaissance.