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.
|