But de la séance.
S’entraîner à écrire des requêtes
SELECT, JOIN, GROUP BY,
HAVING, etc., mais aussi à modifier des données
(INSERT, UPDATE, DELETE)
sur deux jeux de données : Bibliothèque et Boutique.
1. Choisir la base et l'initialiser
Voir le schéma (texte)
2. Console SQL
3. Exercices : Interroger
Choisissez la base en haut, initialisez-la, puis lancez les requêtes correspondantes.
Bibliothèque
- Afficher nom et email des élèves de
T07, triés par nom. - Liste sans doublon des éditeurs.
- Titres + auteur pour les livres de genre roman.
- Nombre d’emprunts par classe (tri décroissant).
- Les livres sans emprunt.
- Par élève, nombre de livres distincts empruntés (0 inclus).
- Les emprunts du mois de septembre 2024.
Boutique
- Afficher les clients et leur ville.
- Produits à un prix ≥ 20, triés par prix décroissant.
- Pour chaque commande : client, date, montant total.
- Top 3 des produits les plus vendus.
- Nombre de clients par ville.
- Clients n’ayant aucune commande.
4. Exercices : Modifications (INSERT / UPDATE / DELETE)
Écrivez les requêtes DML demandées puis vérifiez par un SELECT.
Bibliothèque : DML
- INSERT : ajouter l’élève Yaël Duclair (id = 9, email
yael.duclair@mail.com, classeT01). - UPDATE : passer l’élève id = 5 en classe
T02. - INSERT : enregistrer un emprunt (id_emprunt = 50) : élève id = 1, livre id = 104, du
2024-10-12au2024-10-22. - UPDATE : corriger la date de retour de l’emprunt 50 en
2024-10-30. - DELETE : supprimer l’emprunt 50.
- INSERT : créer l’auteur Kamel Daoud (id = 5) puis le livre
Houris (id_livre = 200, genre roman, éditeur Gallimard, année 2024) et vérifier par un
SELECT.
Corrigés : Bibliothèque (cliquer)
-- 1 INSERT INTO Eleve(id_eleve, nom, email, classe) VALUES (9, 'Yaël Duclair', 'yael.duclair@mail.com', 'T01'); -- 2 UPDATE Eleve SET classe = 'T02' WHERE id_eleve = 5; -- 3 INSERT INTO Emprunt(id_emprunt, id_eleve, id_livre, date_emprunt, date_retour) VALUES (50, 1, 104, '2024-10-12', '2024-10-22'); -- 4 UPDATE Emprunt SET date_retour = '2024-10-30' WHERE id_emprunt = 50; -- 5 DELETE FROM Emprunt WHERE id_emprunt = 50; -- 6 INSERT INTO Auteur(id_auteur, nom) VALUES (5, 'Kamel Daoud'); INSERT INTO Livre(id_livre, titre, id_auteur, genre, editeur, annee_publication) VALUES (200, 'Houris', 5, 'roman', 'Gallimard', 2024); SELECT id_livre, titre, id_auteur FROM Livre WHERE id_livre = 200;
Boutique : DML
- INSERT : ajouter le client Emma (id = 9, ville Toulouse).
- INSERT : créer la commande id = 200 pour le client 9 (date
2024-10-10) puis 2 lignes : 3 cahiers (id_produit 11) et 1 clé USB (12). - UPDATE : augmenter de 10 % le prix de la clé USB (id_produit 12).
- DELETE : retirer la ligne « cahiers » de la commande 200.
- UPDATE : changer la ville d’Emma en « Bordeaux ».
- DELETE : annuler la commande 200 (supprimer d’abord ses lignes, puis la commande).
Corrigés : Boutique (cliquer)
-- 1 INSERT INTO Client(id_client, nom, ville) VALUES (9, 'Emma', 'Toulouse'); -- 2 INSERT INTO Commande(id_commande, id_client, date_commande) VALUES (200, 9, '2024-10-10'); INSERT INTO Ligne(id_commande, id_produit, quantite) VALUES (200, 11, 3), (200, 12, 1); -- 3 UPDATE Produit SET prix = prix * 1.10 WHERE id_produit = 12; -- 4 DELETE FROM Ligne WHERE id_commande = 200 AND id_produit = 11; -- 5 UPDATE Client SET ville = 'Bordeaux' WHERE id_client = 9; -- 6 DELETE FROM Ligne WHERE id_commande = 200; DELETE FROM Commande WHERE id_commande = 200;