📘 Cours SQL complet • A à Z + 40 QCM
🗂️ 1. Base de données d’exemple
CREATE TABLE client (
id_client INTEGER PRIMARY KEY,
nom TEXT NOT NULL,
ville TEXT
);
CREATE TABLE commande (
id_commande INTEGER PRIMARY KEY,
id_client INTEGER,
montant REAL,
statut TEXT,
FOREIGN KEY (id_client) REFERENCES client(id_client)
);
INSERT INTO client VALUES
(1, 'Ali', 'Casablanca'),
(2, 'Sara', 'Rabat'),
(3, 'Youssef', 'Tanger');
INSERT INTO commande VALUES
(101, 1, 200, 'payée'),
(102, 1, 150, 'en attente'),
(103, 2, 300, 'payée');
| id_client | nom | ville |
|---|---|---|
| 1 | Ali | Casablanca |
| 2 | Sara | Rabat |
| 3 | Youssef | Tanger |
| id_commande | id_client | montant | statut |
|---|---|---|---|
| 101 | 1 | 200 | payée |
| 102 | 1 | 150 | en attente |
| 103 | 2 | 300 | payée |
🔍 2. SELECT & WHERE
SELECT * FROM commande WHERE statut = 'payée';
| id_commande | id_client | montant | statut |
|---|---|---|---|
| 101 | 1 | 200 | payée |
| 103 | 2 | 300 | payée |
🔗 3. JOIN
INNER JOIN
SELECT c.nom, cmd.montant FROM client c INNER JOIN commande cmd ON c.id_client = cmd.id_client;
| nom | montant |
|---|---|
| Ali | 200 |
| Ali | 150 |
| Sara | 300 |
👉 Youssef n’apparaît pas (pas de commande).
LEFT JOIN
SELECT c.nom, cmd.montant FROM client c LEFT JOIN commande cmd ON c.id_client = cmd.id_client;
| nom | montant |
|---|---|
| Ali | 200 |
| Ali | 150 |
| Sara | 300 |
| Youssef | NULL |
👉 Tous les clients apparaissent.
📊 4. GROUP BY
SELECT id_client, SUM(montant) AS total FROM commande GROUP BY id_client;
| id_client | total |
|---|---|
| 1 | 350 |
| 2 | 300 |
⚖️ 5. HAVING
SELECT id_client, SUM(montant) AS total FROM commande GROUP BY id_client HAVING total > 300;
| id_client | total |
|---|---|
| 1 | 350 |
📈 6. ORDER BY & LIMIT
SELECT * FROM commande ORDER BY montant DESC LIMIT 2;
| id_commande | id_client | montant | statut |
|---|---|---|---|
| 103 | 2 | 300 | payée |
| 101 | 1 | 200 | payée |
👁️ 7. VIEW
CREATE VIEW vue_total_client AS
SELECT c.nom, SUM(cmd.montant) AS total
FROM client c JOIN commande cmd ON c.id_client = cmd.id_client
GROUP BY c.id_client;
SELECT * FROM vue_total_client;
| nom | total |
|---|---|
| Ali | 350 |
| Sara | 300 |
🔄 8. TRANSACTIONS
BEGIN TRANSACTION;
UPDATE commande SET statut = 'annulée' WHERE id_commande = 101;
COMMIT; -- ou ROLLBACK en cas d'erreur
🔒 Tout redevient initial après ROLLBACK.
⚙️ 9. ORDRE RÉEL D’EXÉCUTION SQL
FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
📌 10. CONCLUSION
| Concept | Rôle |
|---|---|
| SELECT | Lire |
| WHERE | Filtrer |
| JOIN | Relier tables |
| GROUP BY | Regrouper |
| HAVING | Filtrer groupes |
| VIEW | Table virtuelle |
| TRANSACTION | Sécurité |
| LIMIT | Restreindre résultats |
🧪 Testez vos connaissances – 40 QCM SQL
Chargement...
👆 Sélectionnez une option puis validez.
40 questions basées sur le cours ci‑dessus
Aucun commentaire:
Enregistrer un commentaire