| 12.1 Introduction aux types de colonnes
 12 Types de colonnes
 Manuel de Référence MySQL 4.1 : Version Française
 
 ->Présentation des types numériques of Numeric Types
 . Présentation des types de données temporels : dates et heures
 . Présentation des types de chaînes
 
 
 | 
  12.1.1 Présentation des types numériques of Numeric Types 
Un résumé des colonnes numériques suit. Pour plus de détails sur les types
numériques, voyez la section  Types numériques .
La taille des colonnes sont dans la section  Taille de stockage des types .
 
 
Si vous spécifiez l'option  
ZEROFILL
  pour une valeur numérique,
MySQL va automatiquement ajouter l'attribut  
UNSIGNED
  à la colonne.
Attention :
  soyez conscient que lorsque vous utilisez la soustraction
entre deux entier, dont l'un est de type  
UNSIGNED
 , le résultat sera
sans signe!  Fonctions de transtypage . 
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
      
Un très petit entier. L'intervalle de validité pour les entiers signés
est de  
-128
  à  
127
 . L'intervalle de validité pour les
entiers non-signés est  
0
  à  
255
 .
      
BIT
      
      
BOOL
      
      
BOOLEAN
      Ce sont des synonymes de  
TINYINT(1)
 .
Le synonyme  
BOOLEAN
  a été ajouté en version 4.1.0
 
Un type booléen complet, qui sera introduit pour être en accord
avec la norme SQL-99.
 
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
      
Un petit entier. L'intervalle de validité pour les entiers signés
est de  
-32768
  à  
32767
 . L'intervalle de validité pour les
entiers non-signés est  
0
  à  
65535
 .
      
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
      
Un entier. L'intervalle de validité pour les entiers signés
est de  
-8388608
  à  
8388607
 . L'intervalle de validité pour les
entiers non-signés est  
0
  à  
16777215
 .
      
INT[(M)] [UNSIGNED] [ZEROFILL]
      
Un grand entier. L'intervalle de validité pour les entiers signés
est de  
-2147483648
  à  
2147483647
 . L'intervalle de validité pour les
entiers non-signés est  
0
  à  
4294967295
 .
      
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
      
Ceci est un synonyme  
INT
 .
      
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
      Un très grand entier. L'intervalle de validité pour les entiers signés
est de  
-9223372036854775808
  à  
9223372036854775807
 . 
L'intervalle de validité pour les
entiers non-signés est  
0
  à  
18446744073709551615
 .
Quelques conseils à suivre avec les colonnes de type  
BIGINT
  : 
 
Tous les calculs arithmétiques sont fait en utilisant des  
BIGINT
  
signés ou des valeurs  
DOUBLE
 . Il est donc recommandé de ne pas
utiliser de grands entiers non-signés dont la taille dépasse 
 
9223372036854775807
  (63 bits), hormis avec les fonctions sur les bits!
Si vous faîtes cela, les derniers chiffres du résultats risquent d'être
faux, à cause des erreurs d'arrondis lors de la conversion de 
 
BIGINT
  en  
DOUBLE
 .MySQL 4.0 peut gérer des  
BIGINT
  dans les cas suivants :
 
Utiliser des entiers pour stocker des grandes valeurs entières
non signées, dans une colonne de type  
BIGINT
 .
Avec  
MIN(big_int_column)
  et  
MAX(big_int_column)
 .
Avec les opérateurs ( 
+
 ,  
-
 ,  
*
 , etc.) où tous
les opérandes sont des entiers.
Vous pouvez toujours stocker une valeur entière exacte  
BIGINT
  
dans une colonne de type chaîne. Dans ce cas, MySQL fera des conversions
chaîne / nombre, qui n'utilisera pas de représentation intermédiaire
en nombre réels.
'-'
 ,  
'+'
  et  
'*'
  utiliseront l'arithmétique entière des
 
BIGINT
  lorsque les deux arguments sont des entiers. Cela signifie
que si vous multipliez deux entiers (ou des résultats de fonctions qui
retournent des entiers), vous pourriez rencontrer des résultats inattendus
lorsque le résultat est plus grand que  
9223372036854775807
 .
 
FLOAT(precision) [UNSIGNED] [ZEROFILL]
      
Un nombre à virgule flottante.  
precision
  peut valoir 
 
<=24
  pour une précision simple, et entre 
25 et 53 pour une précision double. Ces types sont identiques aux types
 
FLOAT
  et  
DOUBLE
 , décrit ci-dessous. 
 
FLOAT(X)
  a le même intervalle de validité que  
FLOAT
  et
 
DOUBLE
 , mais la taille d'affichage et le nombre de décimales
est indéfini.En MySQL version 3.23, c'est un véritable nombre à virgule flottante.
Dans les versions antérieures,  
FLOAT(precision)
  avait toujours
2 décimales.
 
Notez qu'utiliser  
FLOAT
  peut vous donner des résultats inattendus,
car tous les calculs de MySQL sont fait en double précision.
 Résoudre les problèmes des lignes non retournées .
Cette syntaxe est fournie pour assurer la compatibilité avec ODBC. 
Utiliser des  
FLOAT
  peut vous donner des résultats inattendus,
car les calculs sont fait en précision double.
 Résoudre les problèmes des lignes non retournées .
 
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
      
Un petit nombre à virgule flottante, en précision simple. Les valeurs
possibles vont de  
-3.402823466E+38
  à  
-1.175494351E-38
 ,  
0
 ,
et  
1.175494351E-38
  à  
3.402823466E+38
 .  Si
 
UNSIGNED
  est spécifié, les valeurs négatives sont interdites. L'attribut
 
M
  indique la taille de l'affichage, et  
D
  est le nombre de décimales.
 
FLOAT
  sans argument et  
FLOAT(X)
  (où  
X
  est dans l'intervalle
0 à 24) représente les nombres à virgule flottante en précision simple.
      
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
      
Un nombre à virgule flottante, en précision double. Les valeurs
possibles vont de  
-1.7976931348623157E+308
  à
 
-2.2250738585072014E-308
 ,  
0
 , et
 
2.2250738585072014E-308
  à  
1.7976931348623157E+308
 .  Si
 
UNSIGNED
  est spécifié, les valeurs négatives sont interdites. L'attribut
 
M
  indique la taille de l'affichage, et  
D
  est le nombre de décimales.
 
DOUBLE
  sans argument et  
FLOAT(X)
  (où  
X
  est dans l'intervale
25 to 53) représente les nombres à virgule flottante en précision double.
      
DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL]
      
      
REAL[(M,D)] [UNSIGNED] [ZEROFILL]
      
Ce sont des synonymes pour  
DOUBLE
 .
 
Exception : si le serveur SQL utilise l'option  
REAL_AS_FLOAT
 ,
 
REAL
  est alors un synonyme de  
FLOAT
  plutôt que  
DOUBLE
 .
 
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
      
Un nombre à virgule flottante littéral. Il se comporte comme une colonne
de type  
CHAR
 : ``littéral'' ( 
``unpacked''
 ) signifie que 
le nombre est stocké sous forme de chaîne : chaque caractère représente 
un chiffre. La virgule décimale et le signe moins  
'-'
  des nombres négatifs
ne sont pas comptés dans  
M
  (mais de l'espace leur est réservé). Si 
 
D
  vaut 0, les valeurs n'auront pas de virgule décimale ou de 
partie décimale. L'intervale de validité du type  
DECIMAL
  est le
même que  
DOUBLE
 , mais le vrai intervalle de validité de 
 
DECIMAL
  peut être restreint par le choix de la valeur de 
 
M
  et  
D
 . Si  
UNSIGNED
  est spécifié, les valeurs négatives
sont interdites.
 
Si  
D
  est omis, la valeur par défaut est 0.  Si  
M
  est omis, la valeur par défaut est 10.
Avant MySQL Version 3.23, l'argument  
M
  devait inclure 
l'espace nécessaire  pour la virgule et le signe moins. 
DEC[(M[,D])] [UNSIGNED] [ZEROFILL]
      
      
NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]
      
      
FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]
      
Ce sont des synonymes pour  
DECIMAL
 .L'alias  
FIXED
  a été ajouté en version 4.1.0 pour assurer la 
compatibilité avec les autres serveurs.
      |