Commandes DDL et DML Essentielles : CREATE, SELECT, UPDATE, DELETE

Maîtrisez les opérations essentielles de base de données MySQL avec ce guide pratique des commandes DDL et DML. Apprenez à définir les structures de table en utilisant `CREATE TABLE` et à manipuler les données avec `INSERT`, `SELECT`, `UPDATE` et `DELETE`. Cet article fournit une syntaxe claire, des exemples concrets et des conseils cruciaux pour une gestion efficace des données dans MySQL.

44 vues

Commandes Essentielles DDL et DML : Créer, Sélectionner, Mettre à jour, Supprimer

Travailler avec des bases de données, en particulier relationnelles comme MySQL, implique fondamentalement de définir la structure de vos données, puis d'interagir avec ces données. Ce processus est généralement divisé en deux catégories principales de commandes SQL : le Langage de Définition de Données (DDL) et le Langage de Manipulation de Données (DML). Les commandes DDL sont utilisées pour définir et gérer les objets de la base de données, tels que les tables, tandis que les commandes DML sont utilisées pour insérer, récupérer, modifier et supprimer des enregistrements au sein de ces tables.

Ce guide vous présentera les commandes MySQL DDL et DML les plus essentielles : CREATE TABLE pour définir vos structures de données, et INSERT, SELECT, UPDATE, et DELETE pour manipuler les données elles-mêmes. La maîtrise de ces commandes est une étape cruciale pour quiconque souhaite gérer et utiliser efficacement une base de données MySQL.

Langage de Définition de Données (DDL) : Création de Tables

Les commandes DDL concernent le schéma et la structure de vos objets de base de données. La commande DDL la plus fondamentale pour le stockage des données est CREATE TABLE, qui vous permet de définir le plan de vos données.

Syntaxe de CREATE TABLE

La syntaxe de base pour créer une table implique de spécifier le nom de la table, puis de définir ses colonnes, y compris leurs types de données et leurs contraintes.

CREATE TABLE nom_table (
    colonne1 type_donnees contraintes,
    colonne2 type_donnees contraintes,
    colonne3 type_donnees contraintes,
    ...
);
  • nom_table: Le nom que vous souhaitez donner à votre table. Il doit être unique dans la base de données.
  • nom_colonne: Le nom de chaque champ individuel au sein de la table.
  • type_donnees: Spécifie le type de données que la colonne contiendra (par exemple, INT pour les entiers, VARCHAR(255) pour les chaînes de caractères de longueur variable, DATE pour les dates, DECIMAL(10, 2) pour les nombres décimaux précis).
  • contraintes: Règles appliquées à une colonne pour garantir l'intégrité des données. Les contraintes courantes incluent :
    • NOT NULL: Garantit qu'une colonne ne peut pas avoir de valeur NULL.
    • UNIQUE: Garantit que toutes les valeurs d'une colonne sont distinctes.
    • PRIMARY KEY: Une combinaison de NOT NULL et UNIQUE. Chaque table doit avoir une clé primaire pour identifier de manière unique chaque ligne.
    • FOREIGN KEY: Lie une colonne d'une table à la clé primaire d'une autre table, en appliquant l'intégrité référentielle.
    • DEFAULT valeur: Définit une valeur par défaut pour une colonne si aucune valeur n'est spécifiée lors de l'insertion.

Exemple de CREATE TABLE

Créons une table simple products pour stocker des informations sur les articles d'un inventaire :

CREATE TABLE products (
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL UNIQUE,
    category VARCHAR(50),
    price DECIMAL(10, 2) NOT NULL,
    stock_quantity INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Dans cet exemple :
* product_id est un entier qui s'incrémente automatiquement et sert de clé primaire.
* product_name est une chaîne de caractères obligatoire qui doit être unique.
* price est un nombre décimal obligatoire.
* stock_quantity a une valeur par défaut de 0 s'il n'est pas spécifié.
* created_at enregistre l'horodatage de la création de la ligne.

Langage de Manipulation de Données (DML) : Travailler avec les Données

Les commandes DML sont utilisées pour gérer les enregistrements (lignes) au sein de vos tables de base de données. Ce sont les commandes les plus fréquemment utilisées pour les opérations quotidiennes de la base de données.

Commande INSERT : Ajout de Nouvelles Données

La commande INSERT est utilisée pour ajouter de nouvelles lignes de données dans une table.

Syntaxe de INSERT

Il existe plusieurs façons d'utiliser INSERT :

  1. Spécification des valeurs pour toutes les colonnes :
    sql INSERT INTO nom_table VALUES (valeur1, valeur2, valeur3, ...);
    L'ordre des valeurs doit correspondre à l'ordre des colonnes dans la définition de la table.

  2. Spécification des valeurs pour des colonnes spécifiques :
    sql INSERT INTO nom_table (colonne1, colonne2, colonne3, ...) VALUES (valeur1, valeur2, valeur3, ...);
    Ceci est généralement préférable car c'est plus lisible et moins sujet aux erreurs si la structure de la table change.

Exemple de INSERT

En utilisant notre table products :

-- Insertion de valeurs pour toutes les colonnes (en supposant AUTO_INCREMENT pour product_id)
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES ('Laptop Pro', 'Électronique', 1200.50, 50);

-- Insertion de valeurs pour des colonnes spécifiques
INSERT INTO products (product_name, price)
VALUES ('Clavier Mécanique', 75.99);

-- Insertion de plusieurs lignes à la fois
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES 
('Souris Ergonomique', 'Électronique', 25.00, 120),
('Lampe de Bureau', 'Maison', 45.00, 75);

Commande SELECT : Récupération de Données

La commande SELECT est la pierre angulaire de la récupération de données. Elle vous permet d'interroger votre base de données et de récupérer des données spécifiques en fonction de divers critères.

Syntaxe de SELECT
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE condition
ORDER BY nom_colonne [ASC|DESC]
LIMIT nombre;
  • colonne1, colonne2, ...: Les colonnes que vous souhaitez récupérer. Utilisez * pour sélectionner toutes les colonnes.
  • FROM nom_table: La table sur laquelle vous effectuez la requête.
  • WHERE condition: (Optionnel) Filtre les lignes en fonction d'une condition spécifiée. Les conditions peuvent impliquer des opérateurs de comparaison (=, !=, >, <, >=, <=), des opérateurs logiques (AND, OR, NOT) et la mise en correspondance de motifs (LIKE).
  • ORDER BY nom_colonne [ASC|DESC]: (Optionnel) Trie le jeu de résultats par une ou plusieurs colonnes. ASC pour ascendant (par défaut), DESC pour descendant.
  • LIMIT nombre: (Optionnel) Limite le nombre de lignes renvoyées.
Exemples de SELECT
-- Sélectionner toutes les colonnes pour tous les produits
SELECT *
FROM products;

-- Sélectionner uniquement le nom et le prix des produits
SELECT product_name, price
FROM products;

-- Sélectionner les produits de la catégorie 'Électronique'
SELECT *
FROM products
WHERE category = 'Électronique';

-- Sélectionner les produits dont le prix est supérieur à 100, triés par prix décroissant
SELECT product_name, price
FROM products
WHERE price > 100
ORDER BY price DESC;

-- Sélectionner les 5 produits les plus chers
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 5;

-- Sélectionner les produits dont le nom commence par 'L'
SELECT *
FROM products
WHERE product_name LIKE 'L%';

Commande UPDATE : Modification des Données Existantes

La commande UPDATE vous permet de modifier des enregistrements existants dans une table.

Syntaxe de UPDATE
UPDATE nom_table
SET colonne1 = valeur1, colonne2 = valeur2, ...
WHERE condition;
  • nom_table: La table contenant les enregistrements à modifier.
  • SET colonne1 = valeur1, ...: Spécifie quelles colonnes modifier et leurs nouvelles valeurs.
  • WHERE condition: Crucial ! Cette clause détermine quelles lignes seront mises à jour. Si elle est omise, toutes les lignes de la table seront mises à jour.
Exemples de UPDATE
-- Augmenter le prix du 'Laptop Pro' de 50
UPDATE products
SET price = price + 50.00
WHERE product_name = 'Laptop Pro';

-- Mettre à jour la catégorie et le stock pour le 'Clavier Mécanique'
UPDATE products
SET category = 'Accessoires', stock_quantity = 100
WHERE product_name = 'Clavier Mécanique';

-- **AVERTISSEMENT** : Ceci mettrait à jour le prix de TOUS les produits à 10.00
-- UPDATE products
-- SET price = 10.00;

Conseil : Utilisez toujours une clause WHERE lors de la mise à jour pour vous assurer de ne modifier que les enregistrements prévus. Testez d'abord votre clause WHERE avec une instruction SELECT pour vérifier qu'elle cible les bonnes lignes.

Commande DELETE : Suppression de Données

La commande DELETE est utilisée pour supprimer des lignes d'une table.

Syntaxe de DELETE
DELETE FROM nom_table
WHERE condition;
  • nom_table: La table à partir de laquelle supprimer des lignes.
  • WHERE condition: Crucial ! Cette clause spécifie quelles lignes supprimer. Si elle est omise, toutes les lignes de la table seront supprimées.
Exemples de DELETE
-- Supprimer le produit nommé 'Lampe de Bureau'
DELETE FROM products
WHERE product_name = 'Lampe de Bureau';

-- Supprimer tous les produits qui sont en rupture de stock (stock_quantity est 0)
DELETE FROM products
WHERE stock_quantity = 0;

-- **AVERTISSEMENT** : Ceci supprimerait TOUS les enregistrements de la table 'products' !
-- DELETE FROM products;

Avertissement : Comme pour UPDATE, omettre la clause WHERE dans une instruction DELETE est une opération destructive qui supprimera toutes les données de la table. À utiliser avec une extrême prudence.

Résumé

Comprendre et utiliser efficacement les commandes DDL et DML est fondamental pour la gestion des bases de données. CREATE TABLE vous permet de définir la structure de vos données, tandis que INSERT, SELECT, UPDATE et DELETE vous permettent de les peupler, de les interroger, de les modifier et de les gérer.

En pratiquant ces commandes avec des clauses WHERE claires, en particulier pour UPDATE et DELETE, vous pouvez établir une base solide pour travailler avec des bases de données MySQL et garantir l'intégrité et l'exactitude de vos données. N'oubliez jamais de sauvegarder vos données avant d'effectuer des opérations potentiellement destructrices.