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;
Contraintes d'intégrité
| Contrainte | Garantit |
|---|---|
| PRIMARY KEY | identifiant unique et non nul |
| FOREIGN KEY | la valeur existe dans la table référencée |
| UNIQUE | pas de doublon |
| NOT NULL / DEFAULT | valeur obligatoire / par défaut |
| CHECK | condition 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.Les moteurs de stockage
| Moteur | Caractéristiques |
|---|---|
| InnoDB (défaut) | transactions, clés étrangères, verrouillage par ligne |
| MyISAM | rapide en lecture, sans transactions ni FK — hérité |
| MEMORY | en 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
- ALTER TABLE ajoute/modifie/renomme/supprime colonnes et table.
- PRIMARY/FOREIGN KEY, UNIQUE, NOT NULL, DEFAULT, CHECK : l'intégrité.
- ON DELETE CASCADE/RESTRICT/SET NULL selon le sens métier.
- InnoDB pour transactions et clés étrangères (le bon choix ici).