MySQL - DECIMAL : Un guide complet pour les débutants

Bonjour à tous, futurs magiciens des bases de données ! Aujourd'hui, nous allons plonger dans le merveilleux monde du type de données DECIMAL de MySQL. Ne vous inquiétez pas si vous n'avez jamais écrit une ligne de code auparavant - je serai votre guide amical pour cette aventure, en expliquant tout pas à pas. Alors, prenez une tasse de café (ou de thé, si c'est votre truc), et c'est parti !

MySQL - DECIMAL

Le type de données DECIMAL de MySQL

Qu'est-ce que DECIMAL ?

DECIMAL est un type de données dans MySQL qui nous permet de stocker des valeurs numériques exactes. Vous vous demandez peut-être : "Mais ne pouvons-nous pas utiliser des nombres réguliers ?" Eh bien, oui, mais DECIMAL est spécial. Il est particulièrement utile lorsque nous avons besoin de calculs précis, comme pour les transactions financières ou les mesures scientifiques.

Imaginez que vous êtes en train de construire une application bancaire. Vous ne voudriez pas utiliser un type de données qui pourrait arrondir les centimes, n'est-ce pas ? C'est là que DECIMAL entre en jeu !

Syntaxe et utilisation

La syntaxe de base pour déclarer une colonne DECIMAL est :

DECIMAL(M,D)

Ici, 'M' est le nombre maximum de digits (la précision), et 'D' est le nombre de digits à droite du point décimal (l'échelle). Reprenons cela avec un exemple :

CREATE TABLE product_prices (
id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100),
price DECIMAL(10,2)
);

Dans cet exemple, nous créons une table pour stocker les prix des produits. La colonne 'price' est définie comme DECIMAL(10,2), ce qui signifie :

  • Elle peut stocker jusqu'à 10 digits au total
  • 2 de ces digits seront après le point décimal

Ainsi, nous pourrions stocker des prix comme 1234567.89 ou 9.99, mais pas 1234567890.99 (trop de digits) ou 9.999 (trop de décimales).

Stockage des valeurs DECIMAL dans MySQL

Maintenant, parlons de la way MySQL stocke les valeurs DECIMAL. Cela peut sembler un peu technique, mais je vous promets que c'est intéressant !

MySQL stocke les valeurs DECIMAL en format binaire. Chaque digit décimal occupe 4 bits, et pour les nombres négatifs, MySQL utilise le bit de signe du premier octet.

Voici une petite info amusante : MySQL empaquette les digits dans les octets, ce qui signifie qu'il peut stocker deux digits décimaux par octet. Intelligent, non ?

Voyons quelques exemples pour comprendre les exigences de stockage :

Définition DECIMAL Stockage requis
DECIMAL(5,2) 3 octets
DECIMAL(5,0) 3 octets
DECIMAL(10,5) 5 octets
DECIMAL(65,30) 33 octets

Comme vous pouvez le voir, l'exigence de stockage augmente lorsque nous augmentons la précision (M) de notre DECIMAL.

Utilisation du type de données DECIMAL avec un programme client

Maintenant que nous comprenons ce qu'est DECIMAL et comment il est stocké, voyons-le en action ! Nous allons utiliser un programme client MySQL pour créer une table, insérer des données et les interroger.

Création d'une table avec DECIMAL

Premièrement, créons une table pour stocker des informations sur les produits :

CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2),
weight DECIMAL(5,3)
);

Ici, nous utilisons DECIMAL pour le prix (jusqu'à 8 digits avant le décimal et 2 après) et le poids (jusqu'à 2 digits avant le décimal et 3 après).

Insertion de données

Maintenant, ajoutons quelques produits à notre table :

INSERT INTO products (name, price, weight)
VALUES
('Laptop', 999.99, 2.500),
('Smartphone', 599.99, 0.180),
('Headphones', 149.99, 0.220);

Interrogation des données

Récupérons nos données et effectuons quelques calculs :

SELECT name, price, weight, price * weight AS price_per_kg
FROM products;

Cette requête nous donnera un résultat comme celui-ci :

+------------+---------+--------+--------------+
| name       | price   | weight | price_per_kg |
+------------+---------+--------+--------------+
| Laptop     | 999.99  | 2.500  | 2499.975000  |
| Smartphone | 599.99  | 0.180  | 107.998200   |
| Headphones | 149.99  | 0.220  | 32.997800    |
+------------+---------+--------+--------------+

Notez comment MySQL conserve la précision dans les calculs impliquant des valeurs DECIMAL.

Un mot de prudence

Bien que DECIMAL soit excellent pour la précision, il est important de l'utiliser avec discernement. Si vous n'avez pas besoin de précision exacte (comme pour de grands nombres où de petites différences sont insignifiantes), envisagez d'utiliser FLOAT ou DOUBLE pour une meilleure performance.

Conclusion

Et voilà, les amis ! Nous avons fait le voyage à travers le pays des types de données DECIMAL de MySQL. Nous avons appris ce qu'il est, comment il est stocké, et comment l'utiliser dans des scénarios du monde réel.

Souvenez-vous, dans le monde des bases de données, la précision peut être votre meilleur ami ou votre pire ennemi. Choisissez vos types de données avec sagesse, et que vos calculs soient toujours exacts !

Pour clore, voici un peu d'humour de base de données pour vous : Pourquoi les programmeurs préfèrent-ils le mode sombre ? Parce que la lumière attire les bugs !

Continuez à pratiquer, restez curieux, et bon codage !

Credits: Image by storyset