SQL Lab 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éterminer les différentes tables nécessaires.

  2. Déterminer les colonnes de chaque table.

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

  4. Dessiner le schéma relationnel.

Exercice 2#

Créer les différentes tables: usager, livre, auteur, auteur_de et emprunt. Ne pas oublier 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. Écrire une requête SQL qui retourne tous les livres.

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

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

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

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

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

    
    
  7. Écrire 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. Écrire une requête SQL qui retourne le nom et le prénom de tous les auteurs triés par ordre alphabétique.

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

    
    
  10. Écrire 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. Écrire une requête SQL qui retourne le titre des livres empruntés.

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

    
    
  3. Écrire 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, supprimer les doublons.

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

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

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

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

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