MySQL - ENUM : Un guide amical pour les débutants

Salut à toi, futur mage de la base de données ! Aujourd'hui, nous allons entreprendre un voyage passionnant à la découverte du type de données ENUM de MySQL. Ne t'inquiète pas si tu es nouveau dans le monde de la programmation - je serai ton guide amical, et nous explorerons ce sujet pas à pas. Alors, prends une tasse de café (ou de thé, si c'est ton truc), et plongeons dedans !

MySQL - ENUM

Le type de données ENUM de MySQL

Imagine que tu crées une base de données pour une pizzeria. Tu veux stocker les tailles des pizzas, mais tu sais qu'il y a seulement des options spécifiques : petite, moyenne et grande. C'est là que ENUM devient utile !

ENUM, abréviation de "énumération", est une manière élégante de dire "une liste d'options prédéfinies". C'est comme une question à choix multiple où MySQL n'accepte que des réponses parmi les choix que tu as donnés.

Voyons comment créer une table simple pour illustrer cela :

CREATE TABLE pizza_orders (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_name VARCHAR(50),
size ENUM('small', 'medium', 'large')
);

Dans cet exemple, size est notre colonne ENUM. Elle ne peut contenir qu'un des trois valeurs que nous avons spécifiées : 'small', 'medium', ou 'large'.

Caractéristiques de ENUM

Maintenant, parlons de quelques fonctionnalités impressionnantes de ENUM :

  1. Liste ordonnée : L'ordre dans lequel tu définis les valeurs ENUM importe. MySQL assigne un nombre à chaque valeur, en partant de 1.

  2. Insensibilité à la casse : 'SMALL', 'Small', et 'small' sont tous traités de la même manière.

  3. Effet de stockage : ENUM est très efficace en termes de stockage. MySQL stocke chaque valeur sous forme de nombre (1, 2, 3, etc.) plutôt que sous forme de chaîne complète.

  4. Valeur par défaut : Si tu ne spécifies pas de valeur lors de l'insertion d'un enregistrement, MySQL utilisera la première valeur de la liste ENUM comme valeur par défaut.

Insérer des enregistrements avec des valeurs numériques ENUM

Voici un petit secret : tu peux utiliser des nombres pour insérer des valeurs ENUM ! Essayons :

INSERT INTO pizza_orders (customer_name, size) VALUES
('Alice', 1),
('Bob', 2),
('Charlie', 3);

Dans ce cas :

  • 1 représente 'small'
  • 2 représente 'medium'
  • 3 représente 'large'

Vérifions nos résultats :

SELECT * FROM pizza_orders;

Tu verras que MySQL a correctement interprété les nombres comme leurs valeurs ENUM correspondantes. Pretty neat, right ? (Très pratique, non ?)

Insérer des enregistrements invalides

Mais que se passe-t-il si nous essayons de tricher et d'insérer une valeur invalide ? Découvrons-le :

INSERT INTO pizza_orders (customer_name, size) VALUES ('David', 'extra-large');

Oups ! MySQL nous donnera une erreur parce que 'extra-large' n'est pas dans notre liste prédéfinie. C'est comme essayer de choisir "D" sur une question vrai/faux - ça ne fonctionne tout simplement pas !

Filtrer les enregistrements par valeur numérique ENUM

N'oublie pas que j'ai mentionné que les valeurs ENUM sont stockées sous forme de nombres ? Nous pouvons utiliser cela à notre avantage pour filtrer les enregistrements :

SELECT * FROM pizza_orders WHERE size = 2;

Cette requête renverra toutes les commandes de pizzas de taille moyenne. C'est comme avoir un code secret - 2 signifie moyenne !

Filtrer les enregistrements par valeur lisible ENUM

Bien sûr, nous pouvons aussi filtrer en utilisant les valeurs réelles ENUM :

SELECT * FROM pizza_orders WHERE size = 'large';

Cette requête récupérera toutes les commandes de pizzas de grande taille. Beaucoup plus intuitif, non ?

Inconvénients du type de données ENUM

Maintenant, je ne serais pas un bon enseignant si je ne t'alertais pas sur quelques éventuels inconvénients :

  1. Manque de flexibilité : Une fois qu'un ENUM est défini, ajouter ou supprimer des valeurs nécessite de modifier la structure de la table. C'est comme essayer de changer les règles au milieu du jeu !

  2. Dépendance à la base de données : Si la logique de ton application dépend de ces valeurs ENUM, tu lies ton application étroitement à la structure de la base de données.

  3. Limitations de tri : Les valeurs ENUM sont triées en fonction de leurs valeurs numériques internes, ce qui peut ne pas être ce que tu veux.

Types de données ENUM utilisés dans un programme client

Lorsque tu travailles avec ENUM via un programme client (comme un script PHP ou Python), tu interagis généralement avec les valeurs lisibles par l'homme. Cependant, il est bon de connaître la représentation numérique sous-jacente.

Voici un tableau récapitulatif des méthodes ENUM que nous avons discutées :

Méthode Exemple Description
Création ENUM ENUM('small', 'medium', 'large') Définit les valeurs autorisées
Insertion par chaîne INSERT ... VALUES ('medium') Utilise la valeur ENUM réelle
Insertion par nombre INSERT ... VALUES (2) Utilise la représentation numérique
Filtrage par chaîne WHERE size = 'large' Filtre en utilisant la valeur ENUM
Filtrage par nombre WHERE size = 3 Filtre en utilisant la représentation numérique

N'oublie pas, que tu utilises un programme client ou que tu travailles directement dans MySQL, ces principes restent les mêmes.

Et voilà, les amis ! Nous avons fait le tour du pays des ENUM de MySQL. De leur création à l'insertion des valeurs et même un aperçu de leurs identités numériques secrètes, tu es maintenant équipé pour utiliser les ENUM dans tes aventures de base de données.

Sauf que, comme choisir les garnitures pour une pizza, les ENUM sont géniaux lorsque tu as un ensemble fixe d'options. Mais si tu te trouves constamment à vouloir ajouter de nouvelles saveurs, il pourrait être temps de considérer une autre approche.

Continue à pratiquer, reste curieux, et bon codage ! Qui sait, peut-être que la prochaine fois que tu commanderas une pizza, tu penseras aux structures de base de données. (Ou peut-être que c'est juste moi ? ?)

Credits: Image by storyset