INSERT — ajouter
INSERT INTO campagne (libelle, commune, prix_litre, statut, fournisseur_id)
VALUES ('Hiver Ladignac', 'Ladignac-le-Long', 1.08, 'OUVERTE', 1);
-- plusieurs lignes d'un coup (plus efficace)
INSERT INTO participant (nom, email) VALUES
('Alan Turing', 'alan@exemple.fr'),
('Grace Hopper', NULL);
Bonne pratique — listez toujours les colonnes explicitement ; les colonnes omises prennent leur valeur par défaut,
NULL, ou l'auto-incrément.UPDATE — modifier
UPDATE campagne SET prix_litre = 1.05 WHERE id = 1;
-- appliquer un palier dégressif à une campagne
UPDATE campagne SET prix_litre = prix_litre - 0.03
WHERE commune = 'Ladignac-le-Long' AND statut = 'OUVERTE';
Jamais d'UPDATE/DELETE sans WHERE — sinon toute la table est touchée. Testez d'abord la condition avec un
SELECT ; Workbench a un « safe update mode » qui protège de cette erreur — laissez-le activé.DELETE & TRUNCATE
DELETE FROM commande WHERE id = 42; -- lignes ciblées TRUNCATE TABLE panier_temporaire; -- vide tout, très vite
| DELETE | TRUNCATE | |
|---|---|---|
| Filtre WHERE | oui | non |
| Annulable (transaction) | oui | non |
| Auto-incrément | conservé | réinitialisé |
Créer bases et tables
CREATE DATABASE IF NOT EXISTS fioul CHARACTER SET utf8mb4;
DROP DATABASE ancienne_base; -- supprime base + contenu
CREATE TABLE fournisseur (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(80) NOT NULL,
ville VARCHAR(60)
);
DROP TABLE IF EXISTS fournisseur;
DDL vs DML —
CREATE/ALTER/DROP définissent la structure (DDL) ; SELECT/INSERT/UPDATE/DELETE manipulent les données (DML).🛢️ Sur le projet Fioul Groupé
Le parcours de vie d'une commande fioul en trois écritures : un participant s'inscrit, ajuste son volume, puis se rétracte avant la clôture.
INSERT INTO commande (participant_id, campagne_id, litres, statut) VALUES (2, 1, 1500, 'CONFIRMEE'); UPDATE commande SET litres = 2000 WHERE id = LAST_INSERT_ID(); DELETE FROM commande WHERE participant_id = 2 AND campagne_id = 1;
À retenir
- INSERT ajoute (préférez l'insertion multi-lignes, colonnes nommées).
- UPDATE et DELETE exigent un WHERE — sinon toute la table est affectée.
- TRUNCATE vide une table entière et réinitialise l'auto-incrément.
- DDL (CREATE/DROP) définit la structure ; DML manipule les données.