Formation PUB200 : MySQL, 2018 Les procédures et fonctions stockées

15.19 Types de paramètres et de variables


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 :

  • INT (ou INTEGER) : entier pouvant représenter une valeur située entre -2 147 483 648 et 2 147 483 647
  • TINYINT : entier pouvant représenter une valeur située entre -128 et 127
  • DECIMAL : nombre avec décimales à représentation exacte, idéal pour les calculs précis et les valeurs monétaires. Peut représenter une valeur avec jusqu'à 65 chiffres (avant et après le point), dont au maximum 30 chiffres après le point.

Le type booléen est :

  • BOOL (ou BOOLEAN) : il s'agit d'un synonyme de TINYINT(1). Il est à noter que le 1 indique qu'il faut afficher un seul chiffre à moins que la valeur stockée présente plus d'un chiffre. Le 1 n'a aucun impact sur l'intervalle de valeurs acceptées.

Les principaux types de date sont :

  • DATE
  • DATETIME : pouvant représenter une date et une heure

Le principal type chaîne est :

  • VARCHAR : chaîne de caractères à taille variable dont la taille maximale est précisée entre parenthèses. Une chaîne VARCHAR peut avoir jusqu'à 255 caractères. Si vous ne précisez pas sa taille, une variable de type VARCHAR ne contiendra qu'un seul caractère.

Différence entre INT(11) et INT

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 plus d'information

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é

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre