MySQL supporte tous les types numériques de la norme ANSI/ISO
      SQL92. Ceux-ci représentent les types numériques exacts
      (NUMERIC, DECIMAL,
      INTEGER, et SMALLINT), ainsi
      que les types approchés (FLOAT,
      REAL, et DOUBLE PRECISION).
      Le mot clef INT est un synonyme de
      INTEGER, et le mot clef DEC
      est un synonyme de DECIMAL.
    
      Les types NUMERIC et DECIMAL
      sont considérés comme identiques par MySQL, comme l'autorise le
      standard SQL92. Ils sont utilisées par des valeurs dont il est
      primordial de conserver la précision exacte, comme pour des
      données financières. Lorsque vous déclarez des colonnes avec
      l'un de ces types, vous pouvez indiquer la précision et
      l'échelle comme ceci :
    
salaire DECIMAL(5,2)
      Dans cet exemple, 5
      (précision) représente le nombre de
      décimales signifiantes qui seront stockées pour les valeurs, et
      2 (échelle) représente le
      nombre de chiffres qui seront stockés après le point des
      décimales.
    
      Les valeurs de type DECIMAL et
      NUMERIC sont stockées sous forme de chaînes
      de caractères, plutôt que comme des nombres à virgule
      flottante, afin de préserver la précision décimale des valeurs.
      Un caractère est donc nécessaire pour chaque chiffre, plus la
      virgule (si scale > 0), et le signe moins
      ‘-’ (pour les nombres négatifs).
      Si scale vaut 0, les valeurs de type
      DECIMAL et NUMERIC ne
      comporteront pas de valeur décimale, ni de virgule.
    
      Les standards SQL requièrent que la colonne
      salary soit capable de stocker toute valeur de
      5 chiffres et 2 décimales. Dans ce cas, l'intervalle de valeur
      qui peut être stockée dans la colonne salary
      va de -999.99 et 999.99.
      MySQL dévie de cette spécification de deux manières :
    
          A la limite supérieure de l'intervalle, la colonne peut
          stocker les nombres jusqu'à 9999.99. Pour
          les nombres positifs, MySQL utilise l'octet réservé au signe
          pour étendre la limite supérieure.
        
          Les colonnes DECIMAL de MySQL avant 3.23
          sont stockés différemment et ne peuvent pas représenter
          toutes les valeurs requises par le standard SQL. Ceci est dû
          au fait que pour DECIMAL(M,D), la valeur de
          M inclut les octets pour le signe et le
          point décimal. L'intervalle de la colonne
          salary avant MySQL 3.23 serait de
          -9.99 à 99.99.
        
      Avec les standards SQL, la syntaxe DECIMAL(p)
      est équivalente à DECIMAL(p,0). De manière
      similaire, la syntaxe DECIMAL est équivalente
      à DECIMAL(p,0), où l'implémentation est
      autorisée à choisir la valeur de p. Depuis
      MySQL 3.23.6, ces deux variantes de DECIMAL et
      NUMERIC sont supportées. La valeur par défaut
      de M est 10. Avant la version 3.23.6,
      M et D
      devaient être spécifié explicitement.
    
      L'intervalle de validité maximal des valeurs de type
      DECIMAL et NUMERIC est le
      même que pour le type DOUBLE, mais
      l'intervalle réel peut être limité par le choix des paramètres
      précision et scale.
      Lorsqu'une valeur ayant trop de décimales est affectée à une
      colonne, la valeur est arrondie à scale
      décimales. Lorsqu'une valeur est hors des limites de validité de
      la colonne DECIMAL ou
      NUMERIC, MySQL enregistre la plus grande valeur
      qu'il peut à la place.
    
      En extension de la norme ANSI/ISO SQL92, MySQL supporte aussi les
      types entiers TINYINT,
      MEDIUMINT, et BIGINT, comme
      présenté ci-dessus. Un 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.
      Tous les types entiers ont un attribut optionnel (non-standard)
      UNSIGNED (non-signé, en fran¸ais). Les
      valeurs non-signées peuvent être utilisées pour n'autoriser que
      des valeurs positives dans une colonne, ou bien pour exploiter un
      intervalle de validité plus haut. Depuis la version 4.0.2 de
      MySQL, les nombres à virgule flottante peuvent aussi être
      UNSIGNED Comme avec les types entiers, cet
      attribut interdit les valeurs négatives dans la colonne, mais
      n'élève pas l'intervalle de validité.
    
      Le type FLOAT est utilisé pour représenter des données
      numériques approchées. La norme ANSI/ISO SQL92 permet la
      spécification optionnelle de la précision (mais pas de
      l'intervalle de validité) en fournissant le nombre de décimales
      voulues après la spécification de type, et entre parenthèses.
      L'implémentation de MySQL supporte aussi le paramétrage de la
      précision. Si le mot clé FLOAT est utilisé
      pour une colonne sans précision supplémentaire, MySQL utilise
      quatre octets pour stocker les valeurs. Une syntaxe alternative
      existe aussi, elle utilise deux paramètre optionnel après le mot
      clé FLOAT. Avec cette option, le premier
      nombre représente toujours la taille de stockage nécessaire pour
      la valeur, et le second nombre représente le nombre de chiffres
      à stocker et afficher, après la virgule décimale (comme pour
      les types DECIMAL et
      NUMERIC). Lorsque MySQL stocke un nombre pour
      une telle colonne, et que cette valeur a plus de décimale que
      requis, la valeur est arrondie pour éliminer les chiffres
      surnuméraires.
    
      Les types REAL et DOUBLE
      PRECISION n'acceptent pas de paramétrage de la
      précision. En extension du standard ANSI/ISO SQL92, MySQL
      reconnaît DOUBLE comme un synonyme du type
      DOUBLE PRECISION. Contrairement à la norme qui
      requiert que REAL soit plus petit que
      DOUBLE PRECISION, MySQL implémente ces deux
      types comme des nombres à virgule flottante de 8 octets, en
      double précision (lorsque le mode ``ANSI'' n'est pas activé).
      Pour une portabilité maximale, les applications réclamant le
      stockage de nombres approché doivent utiliser les types
      FLOAT ou DOUBLE PRECISION
      sans spécification de précision ou de nombre de décimales.
    
      Lorsque MySQL doit stocker une valeur qui est hors de l'intervalle
      de validité d'une colonne, il ramène la valeur à la plus proche
      possible, et stocke cette valeur. Par exemple, l'intervalle de
      validité d'une colonne d'entiers INT va de
      -2147483648 à 2147483647.
      Si vous essayez d'insérer -9999999999 dans une
      colonne de ce type, la valeur sera ramenée à la plus proche
      possible, c'est à dire -2147483648. De même,
      si vous essayez d'insérer 9999999999,
      2147483647 sera stocké à la place.
    
      Si la colonne INT possède l'attribut
      UNSIGNED, l'intervalle de validité est aussi
      large, mais les valeurs extrêmes se décalent vers
      0 et 4294967295. Si vous
      essayez de stocker -9999999999 et
      9999999999 dans cette colonne, vous obtiendrez
      respectivement 0 et
      4294967296.
    
      Les dépassements de capacité entraînant des troncatures sont
      affichés comme des alertes (``warnings'') lors
      de l'utilisation des commandes ALTER TABLE,
      LOAD DATA INFILE, UPDATE, et
      les insertions INSERT multiples.
    
| Type | Octets | De | A | 
| TINYINT | 1 | -128 | 127 | 
| SMALLINT | 2 | -32768 | 32767 | 
| MEDIUMINT | 3 | -8388608 | 8388607 | 
| INT | 4 | -2147483648 | 2147483647 | 
| BIGINT | 8 | -9223372036854775808 | 9223372036854775807 | 
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

