Un résumé des colonnes numériques suit. Pour plus de détails sur les types numériques, voyez la section Section 11.2, « Types numériques ». La taille des colonnes sont dans la section Section 11.5, « Capacités des colonnes ».
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! See Section 12.7, « 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
.
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. See
Section A.5.7, « 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. See Section A.5.7, « 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.
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.