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

Les résultats s’affichent ici.

3. Exercices : Interroger

Choisissez la base en haut, initialisez-la, puis lancez les requêtes correspondantes.

Bibliothèque

  1. Afficher nom et email des élèves de T07, triés par nom.
  2. Liste sans doublon des éditeurs.
  3. Titres + auteur pour les livres de genre roman.
  4. Nombre d’emprunts par classe (tri décroissant).
  5. Les livres sans emprunt.
  6. Par élève, nombre de livres distincts empruntés (0 inclus).
  7. Les emprunts du mois de septembre 2024.

Boutique

  1. Afficher les clients et leur ville.
  2. Produits à un prix ≥ 20, triés par prix décroissant.
  3. Pour chaque commande : client, date, montant total.
  4. Top 3 des produits les plus vendus.
  5. Nombre de clients par ville.
  6. 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

  1. INSERT : ajouter l’élève Yaël Duclair (id = 9, email yael.duclair@mail.com, classe T01).
  2. UPDATE : passer l’élève id = 5 en classe T02.
  3. INSERT : enregistrer un emprunt (id_emprunt = 50) : élève id = 1, livre id = 104, du 2024-10-12 au 2024-10-22.
  4. UPDATE : corriger la date de retour de l’emprunt 50 en 2024-10-30.
  5. DELETE : supprimer l’emprunt 50.
  6. 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

  1. INSERT : ajouter le client Emma (id = 9, ville Toulouse).
  2. 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).
  3. UPDATE : augmenter de 10 % le prix de la clé USB (id_produit 12).
  4. DELETE : retirer la ligne « cahiers » de la commande 200.
  5. UPDATE : changer la ville d’Emma en « Bordeaux ».
  6. 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;