Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser MySQL DECIMAL ?

Les colonnes DOUBLE ne sont pas comme les colonnes DECIMAL, et vous aurez des problèmes si vous utilisez des colonnes DOUBLES pour les données financières.

DOUBLE n'est en fait qu'une version double précision (64 bits au lieu de 32 bits) de FLOAT . Les nombres à virgule flottante sont des représentations approximatives de nombres réels et ils ne sont pas exacts. En fait, les nombres simples comme 0,01 n'ont pas de représentation exacte dans les types FLOAT ou DOUBLE.

Les colonnes DECIMAL sont des représentations exactes, mais elles occupent beaucoup plus d'espace pour une plage beaucoup plus petite de nombres possibles. Pour créer une colonne capable de contenir des valeurs de 0,0001 à 99,9999 comme vous l'avez demandé, vous auriez besoin de la déclaration suivante

CREATE TABLE your_table
(
    your_column DECIMAL(6,4) NOT NULL
);

La définition de la colonne suit le format DECIMAL(M, D) où M est le nombre maximum de chiffres (la précision ) et D est le nombre de chiffres à droite de la virgule décimale (l'échelle ).

Cela signifie que la commande précédente crée une colonne qui accepte les valeurs de -99,9999 à 99,9999. Vous pouvez également créer une colonne UNSIGNED DECIMAL, allant de 0,0000 à 99,9999.

Par exemple, si vous voulez une colonne qui accepte les valeurs de -9999,99 à 9999,99, la commande serait DECIMAL(6,2) . Comme vous pouvez le voir, vous utilisez toujours une précision de 6, mais n'autorise qu'une échelle de 2.

Pour plus d'informations sur MySQL DECIMAL, consultez la la documentation officielle sont toujours une excellente ressource.

Gardez à l'esprit que toutes ces informations sont vraies pour les versions de MySQL 5.0.3 et supérieures. Si vous utilisez des versions précédentes, vous devriez vraiment mettre à niveau.

Mise à jour sur MySQL 8.0.17+

Non signé est obsolète pour les colonnes FLOAT, DOUBLE et DECIMAL.