đŸ›ąïžParcours Fioul GroupĂ©MySQL — les 16 chapitres
Accueil â€ș MySQL â€ș Chapitres
🐬 Cours complet — 16 chapitres

MySQL — le cours par chapitres

Du premier SELECT jusqu'aux index, transactions et procĂ©dures stockĂ©es, en passant par la modĂ©lisation relationnelle. Chaque chapitre applique la notion au domaine du projet Fioul GroupĂ© (version relationnelle : participants, campagnes, commandes, fournisseurs).

01

Introduction Ă  MySQL

SGBDR, modĂšle relationnel, installation, Workbench, 1re requĂȘte.

02

Récupérer des données

SELECT, WHERE, opérateurs, ORDER BY, DISTINCT, LIMIT.

03

Les jointures

INNER, LEFT/RIGHT, CROSS et auto-jointures.

04

Créer, modifier, supprimer

INSERT, UPDATE, DELETE, TRUNCATE et DDL.

05

Les agrégations

COUNT, SUM, AVG, GROUP BY, HAVING, ROLLUP.

06

Exercices pratiques

série corrigée niveaux 1 à 3 sur le schéma fioul.

07

Opérateurs & fonctions

sous-requĂȘtes, EXISTS, UNION, fonctions intĂ©grĂ©es.

08

Les vues

tables virtuelles, vues modifiables, CHECK OPTION.

09

Procédures & fonctions stockées

variables, CALL, IN/OUT, contrĂŽle de flux.

10

Déclencheurs & événements

triggers BEFORE/AFTER, planificateur d'events.

11

Transactions & concurrence

ACID, COMMIT/ROLLBACK, isolation, verrous.

12

Les types de données

numériques, chaßnes, dates, JSON, encodage.

13

Modélisation

Merise, MCD/MLD, cardinalitĂ©s, normalisation. 🔑

14

Gestion des tables

ALTER TABLE, contraintes, clés étrangÚres, moteurs.

15

Index & performances

index, EXPLAIN, optimisation des requĂȘtes.

16

Utilisateurs & sécurité

comptes, GRANT, injection SQL, sauvegardes. đŸ›Ąïž

✅ Les 16 chapitres du parcours MySQL sont rĂ©digĂ©s et disponibles.

📄 Script de la base « fioul » — Ă  exĂ©cuter pour reproduire tous les exemples
DROP DATABASE IF EXISTS fioul;
CREATE DATABASE fioul CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
USE fioul;

CREATE TABLE participant (
  id    INT AUTO_INCREMENT PRIMARY KEY,
  nom   VARCHAR(80) NOT NULL,
  email VARCHAR(120) UNIQUE,
  commune VARCHAR(60)
);

CREATE TABLE fournisseur (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nom VARCHAR(80) NOT NULL,
  ville VARCHAR(60)
);

CREATE TABLE campagne (
  id INT AUTO_INCREMENT PRIMARY KEY,
  libelle VARCHAR(120) NOT NULL,
  commune VARCHAR(60) NOT NULL,
  prix_litre DECIMAL(6,3) NOT NULL,
  statut ENUM('OUVERTE','CLOTUREE','ANNULEE') DEFAULT 'OUVERTE',
  date_cloture DATE,
  fournisseur_id INT,
  FOREIGN KEY (fournisseur_id) REFERENCES fournisseur(id)
);

CREATE TABLE commande (
  id INT AUTO_INCREMENT PRIMARY KEY,
  participant_id INT NOT NULL,
  campagne_id INT NOT NULL,
  litres INT UNSIGNED NOT NULL,
  statut ENUM('CONFIRMEE','VALIDEE','ANNULEE') DEFAULT 'CONFIRMEE',
  date_commande DATE NOT NULL DEFAULT (CURRENT_DATE),
  FOREIGN KEY (participant_id) REFERENCES participant(id) ON DELETE CASCADE,
  FOREIGN KEY (campagne_id) REFERENCES campagne(id) ON DELETE CASCADE,
  UNIQUE (participant_id, campagne_id)
);

INSERT INTO fournisseur (nom, ville) VALUES
  ('Combustibles du Limousin', 'Limoges'),
  ('Fioul Périgord', 'Nontron');

INSERT INTO participant (nom, email, commune) VALUES
  ('Ada Lovelace', 'ada@exemple.fr',  'Ladignac-le-Long'),
  ('Alan Turing',  'alan@exemple.fr', 'Nexon'),
  ('Grace Hopper', NULL,              'Ladignac-le-Long');

INSERT INTO campagne (libelle, commune, prix_litre, statut, date_cloture, fournisseur_id) VALUES
  ('Hiver Ladignac',  'Ladignac-le-Long', 1.082, 'OUVERTE',  '2026-11-30', 1),
  ('Hiver Nexon',     'Nexon',            1.115, 'OUVERTE',  '2026-11-30', 1),
  ('Automne Ladignac','Ladignac-le-Long', 1.150, 'CLOTUREE', '2026-09-15', 2);

INSERT INTO commande (participant_id, campagne_id, litres, statut) VALUES
  (1, 1, 1500, 'CONFIRMEE'),
  (3, 1, 2000, 'CONFIRMEE'),
  (2, 2, 1800, 'CONFIRMEE');