SQL - Exercices (2)

SQL - Exercices (2)#

Le but de cette section est d'entraîner les concepts vus dans les sections Bases de données relationnelles et Langage SQL - Notions avancées.

Exercice 1#

Nous souhaitons créer une base de données pour une bibliothèque communale. Pour emprunter un livre, Bob doit scanner son code-barre personnel et celui du livre. Lors de l'emprunt, la date de retour est fixée. Chaque livre a un titre, un auteur, un éditeur, un ISBN qui est unique et une année de sortie. Un usager a un nom, un prénom, une adresse, un code postal, une ville, un email et un code-barre personnel. De chaque auteur, nous connaissons le nom et le prénom.

  1. Déterminez les différentes tables nécessaires.

  2. Déterminez les colonnes de chaque table.

  3. Déterminez les clés primaires et étrangères.

  4. Dessinez le schéma relationnel.

Exercice 2#

Créez les différentes tables: usager, livre, auteur, auteur_de et emprunt. N'oubliez pas d'indiquer le type et les attributs (primary key, not null, etc.) quand c'est nécessaire.


Pour tester que la table usager est correcte:

select * from usager;

Pour tester que la table livre est correcte:

select * from livre;

Pour tester que la table auteur est correcte:

select * from auteur;

Pour tester que la table auteur_de est correcte:

select * from auteur_de;

Pour tester que la table emprunt est correcte:

select * from emprunt;

Exercice 3#

Toutes les requêtes de cet exercice se font dans une seule table.

  1. Écrivez une requête SQL qui retourne tous les livres.

    
    
  2. Écrivez une requête SQL qui retourne tous les noms des usagers.

    
    
  3. Écrivez une requête SQL qui retourne tous les éditeurs sans doublons.

    
    
  4. Écrivez une requête SQL qui retourne le titre et l'année des livres publiés avant 1980.

    
    
  5. Écrivez une requête SQL qui retourne le titre des livres dont le titre commence par le mot "Astérix".

    
    
  6. Écrivez une requête SQL qui retourne le titre des livres dont le titre contient le mot "Astérix".

    
    
  7. Écrivez une requête SQL qui retourne l'isbn des livres à rendre avant le 31 décembre 2024.

    Astuce

    Les dates se notent entre guillemets simples.

    
    
  8. Écrivez une requête SQL qui retourne le nom et le prénom de tous les auteurs triés par ordre alphabétique.

    
    
  9. Écrivez une requête SQL qui retourne le nom, le prénom et l'adresse des usagers vivant à Fribourg.

    
    
  10. Écrivez une requête SQL qui retourne l'année et le titre des livres publiés entre 2012 et 2015.

    
    

Exercice 4#

Formuler en français ce que nous cherchons avec les requêtes suivantes:

  1. select * from livre where titre like '%Robot%';
    
  2. select nom, prenom from usager where ville = 'Granges-Paccots';
    
  3. select usager.nom, usager.prenom from usager
      join emprunt on usager.code_barre = emprunt.code_barre
      where retour < '2024-12-01';
    

Exercice 5#

Pour cet exercice, il faudra utiliser des jointures de tables.

  1. Écrivez une requête SQL qui retourne le titre des livres empruntés.

    
    
  2. Écrivez une requête SQL qui retourne le titre des livres empruntés à rendre après le 15 décembre.

    
    
  3. Écrivez une requête SQL qui retourne le nom et le prénom des usagers qui ont emprunté des livres.

    
    

    Les mêmes noms et prénoms apparaissent plusieurs fois, supprimez les doublons.

    
    
  4. Écrivez une requête SQL qui retourne le nom et le prénom de l'auteur du livre "La Mort d'Ivan Ilitch".

    
    
  5. Écrivez une requête SQL qui retourne le nom et le prénom de l'usager qui a emprunté "Jack Barron et l'Éternité".

    
    
  6. Écrivez une requête SQL qui retourne le titre et la date de retour des livres empruntés par Philippe Dubois.

    
    
  7. Écrivez une requête SQL qui retourne le titre des livres publiés avant "Astérix chez les Bretons".

    
    
  8. Challenge: Écrivez une requête SQL qui retourne le nom et le prénom des auteurs des livres de la question précédente sans doublons.