🛢️Parcours Fioul GroupéMySQL · Chapitre 14
Accueil › MySQL › Chapitre 14
Chapitre 14 / 16

Gestion des tables

Faire évoluer une table existante, poser des contraintes d'intégrité et choisir le moteur de stockage : l'entretien du modèle physique au fil du projet.

1 DDL

Modifier une table

ALTER TABLE campagne ADD COLUMN palier_litres INT DEFAULT 5000;
ALTER TABLE campagne MODIFY COLUMN prix_litre DECIMAL(6,3) NOT NULL;
ALTER TABLE campagne CHANGE COLUMN intitule libelle VARCHAR(120);
ALTER TABLE campagne DROP COLUMN colonne_obsolete;
ALTER TABLE campagne RENAME TO commande_groupee;
2 Notion

Contraintes d'intégrité

ContrainteGarantit
PRIMARY KEYidentifiant unique et non nul
FOREIGN KEYla valeur existe dans la table référencée
UNIQUEpas de doublon
NOT NULL / DEFAULTvaleur obligatoire / par défaut
CHECKcondition sur la valeur (ex. litres > 0)
CREATE TABLE commande (
  id INT AUTO_INCREMENT PRIMARY KEY,
  campagne_id INT NOT NULL,
  litres INT UNSIGNED NOT NULL,
  CONSTRAINT fk_cmd_campagne FOREIGN KEY (campagne_id)
    REFERENCES campagne(id) ON DELETE CASCADE ON UPDATE CASCADE,
  CHECK (litres > 0)
);
ON DELETE — CASCADE supprime les commandes d'une campagne supprimée ; RESTRICT l'interdit tant qu'il en reste ; SET NULL détache le lien.
3 Notion

Les moteurs de stockage

MoteurCaractéristiques
InnoDB (défaut)transactions, clés étrangères, verrouillage par ligne
MyISAMrapide en lecture, sans transactions ni FK — hérité
MEMORYen RAM, volatil — caches

Pour le projet fioul (intégrité entre campagnes et commandes), InnoDB s'impose : il seul garantit les clés étrangères et les transactions.

🛢️ Sur le projet Fioul Groupé

La contrainte FOREIGN KEY … ON DELETE CASCADE entre commande et campagne assure qu'annuler une campagne retire proprement ses inscriptions ; le CHECK (litres > 0) et l'UNIQUE(participant_id, campagne_id) empêchent les données absurdes dès la base, avant même l'API.

À retenir
← Chapitre 13