Lorsqu'une procédure ou une fonction stockée a besoin de paramètres ou de variables locales, il faut spécifier leur type.
Un tableau récapitulatif des types est présenté sur la fiche Types de données MySQL.
Les principaux types numériques sont :
Le type booléen est :
Les principaux types de date sont :
Le principal type chaîne est :
Lorsque vous générez un script SQL, vous avez-peut-être remarqué que MySQL remplace tous vos INT par des INT(11) et ce, autant dans les définitions de vos tables que dans vos procédures et fonctions stockées. Mais qu'est-ce que le 11 peut bien signifier ?
On pourrait croire qu'il s'agit de la taille de stockage du champ ou de la variable. Mais non ! Il s'agit en fait de sa taille d'affichage. Cette taille n'affecte pas l'étendue des nombres pouvant être stockés dans le champ ou dans la variable.
Bien que la majorité des programmes n'en tiennent pas compte, il serait possible de demander à mettre des 0 devant les nombres afin de remplir toute la taille d'affichage. Ainsi, si l'attribut ZEROFILL est ajouté à une colonne de type INT(11), MySQL affichera le nombre 123 sous la forme 00000000123. Et si le nombre contient plus de chiffres que la taille d'affichage, il sera tout de même affiché en entier.
Il est possible de changer la valeur de la taille d'affichage (ex : INT(4)). Mais puisque cet attribut est rarement utilisé, la majorité des développeurs laissent le type à INT et MySQL le considère comme un INT(11).
Mais pourquoi MySQL utilise-t-il la valeur 11 par défaut ? Bien que l'explication officielle n'ait pas été retrouvée dans la documentation MySQL, c'est probablement parce que le nombre maximal pouvant être stocké dans un INT (2 147 483 647) contient 10 chiffres et qu'on conserve une place supplémentaire pour le signe - en cas où le nombre serait négatif.
Voilà pourquoi vous verrez des INT(11) dans vos scripts SQL.
Pour avoir la liste complète des types de variables, consultez la référence de MySQL à cette adresse :
« Chapter 11 Data Types ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/data-types.html
« 11.1.1 Numeric Type Overview ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html
« 11.2.5. Numeric Type Attributes ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html
▼Publicité