Exercices requêtes avancées
Exercices
Exercice 1 **
La clinique vétérinaire utilise la base de données construite précédemment.
Télécharger et ouvrir la base animaux-requetes-avancees.db .
Écrire les requêtes simples pour:
- insérer l’espèce poisson dans la table Especes,
- insérer le soin patte cassée à l’animal d’identifiant 3 dans la table Soins,
- sélectionner les animaux de 10 ans et plus, ordonnés par nom.
- sélectionner tous les soins distincts réalisés,
- compter tous les soins réalisés,
- compter tous les soins distincts réalisés,
- compter le nombre de stérilisations réalisé,
- renommer l’animal charly en charlie.
Écrire les requêtes pour:
- trouver l’espèce de zappy,
- donner les noms des chats dans l’ordre alphabétique,
- compter le nombre de chiens,
- compter le nombre de soins pour chouchou,
- donner le nom (par ordre alphabétique) de tous les chats qui ont subi une stérilisation,
- insérer le poisson bubulle, âgé de 8 ans, dans la table Animaux,
- insérer le soin stérilisation pour cartman.
Les soins prodigués par le vétérinaire sont souvent les mêmes. Quelle modification pourrait-on mettre en place pour améliorer le schéma de la base?
Écrire le modèle relationnel avec la modification apportée puis écrire les requêtes permettant de reconstruire la base.
Exercice 2 **
La base de données Chinook contient de l’information relative à des albums musicaux. Celle-ci est structurée dans plusieurs tables.
Télécharger et ouvrir la base chinook.db .
Observer l’architecture de la base ci-dessus et répondre aux questions:
- Quelle est la clé primaire de la relation albums?
- Quelle est la clé primaire de la relation playlist_track? Expliquer ce choix.
- Que signifie la liaison entre les relations tracks et genres?
- Observer l’attribut Total de la relation invoices (factures) et la relation invoice_items. Critiquer cette construction.
Écrire les requêtes simples pour:
- sélectionner le nom de tous les artistes,
- sélectionner tous les morceaux (tracks) d’une durée supérieure à 300000 millisecondes,
- sélectionner tous les albums contenant le mot Black, classés dans l’ordre décroissant,
- compter le nombre d’albums,
- sélectionner le morceau le plus long,
- renommer le genre 17 en Hip-Hop and Rap.
Écrire les requêtes pour:
- trouver le genre du morceau Stone Crazy,
- donner le nom des morceaux de la playlist TV Shows,
- donner le nombre de factures (invoices) de Terhi Hämäläinen,
- donner le montant total de la facture de Terhi Hämäläinen datant du 2011-03-18 00:00:00,
- vérifier le résultat précédent en recalculant la somme des achats,
- donner le nom des artistes de la playlist TV Shows.
Proposer une requête au reste du groupe.
Exercice 3 **
Table: fournisseurs
fournisseur_id | nom_fr | ville | commission |
---|---|---|---|
6001 | Arnaud Beaulac | Toulouse | 0.02 |
6002 | Fauna Gaillard | Paris | 0.05 |
6005 | Barry Cantin | Nice | 0.09 |
6006 | Royce Guimond | Strasbourg | 0.06 |
6007 | Fusberta Faure | Marseille | 0.08 |
6003 | Ernest Petit | Montpellier | 0.01 |
Table: clients
client_id | nom_cl | ville | age | fournisseur_id |
---|---|---|---|---|
1001 | Alex Barbara | Paris | 25 | 6001 |
1002 | Lois Collins | Lyon | 30 | 6001 |
1005 | Karen Farley | Nice | 44 | 6002 |
1006 | Kevin Thompson | Paris | 65 | 6003 |
1007 | Scott Henry | Marseille | 32 | 6006 |
1003 | Ellen McMullen | Montpellier | 53 | 6001 |
- Écrire les requêtes sur papier.
- Pour toutes les requêtes, retourner le nom du client, la ville, le fournisseur, la commission.
- Observer les tables et déterminer les clés primaires et étrangères.
- Écrire une requête SQL pour trouver le(s) fournisseur(s) et le(s) client(s) qu’il(s) représente(nt).
- Écrire une requête SQL pour trouver les fournisseurs qui ont reçu des commissions de plus de 5% (0.05).
- Écrire une requête SQL pour trouver les fournisseurs qui n’habitent pas dans la même ville que leurs clients et qui ont reçu une commission de plus de 5%.
Exercice 4 ***
Le projet SQL Murder Mystery a été créé par Joon Park et Cathy He lors de leurs travaux au Knight Lab de l’université américaine Northwerstern University. Il a été adapté et dévéloppé pour le Web par Joe Germuska pour en faire un exercice en ligne permettant de travailler la langage SQL.
Vous trouverez plus d’informations sur le dépôt GitHub du projet.
Pour résoudre le meurtre, vous pouvez :
- le faire en ligne à l’adresse : https://mystery.knightlab.com/
- le faire en local (avec DB Browser for SQLite par exemple) en téléchargeant la base de données
sql-murder-mystery.db
attachée à ce notebook (ou en la téléchargeant sur le dépôt GitHub du projet en cliquant ici )