REQUETES SQL

Transcription

REQUETES SQL
Informatique pour tous
Requêtes SQL
REQUETES SQL
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
REQUETES SQL
I-Un peu de méthode
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
Voici une procédure méthodique pour traduire une requête basique exprimée “en langage usuel”.
Il pourra être nécessaire d’appliquer plusieurs fois cette méthodologie sur des parties de la requête puis
de les recombiner ensuite à l’aide d’opérateurs ensemblistes.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
Voici une procédure méthodique pour traduire une requête basique exprimée “en langage usuel”.
Il pourra être nécessaire d’appliquer plusieurs fois cette méthodologie sur des parties de la requête puis
de les recombiner ensuite à l’aide d’opérateurs ensemblistes.
Par exemple, dans une table de schéma (nom, ville, animal), la requête “Trouver les noms de personnes
habitant Orléans ne possédant pas de chien” peut se décomposer en deux requêtes basiques Q1 = “Trouver les
noms de toutes les personnes habitant Orléans” et Q2 = “Trouver les noms de toutes les personnes possédant
un chien” combinées par l’opérateur ensembliste de différence.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
• Identifier les attributs qui doivent être affichés et les tables qui les contiennent ;
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
• Identifier les attributs qui doivent être affichés et les tables qui les contiennent ;
• Mettre ces tables dans la clause FROM (on peut donner un nom d’alias à chaque table) ;
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
• Identifier les attributs qui doivent être affichés et les tables qui les contiennent ;
• Mettre ces tables dans la clause FROM (on peut donner un nom d’alias à chaque table) ;
Remarque : si on sépare ces tables par une virgule, on fabrique un produit cartésien avec le risque
d’explosion des enregistrements que cela entraîne.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
• Identifier les attributs qui doivent être affichés et les tables qui les contiennent ;
• Mettre ces tables dans la clause FROM (on peut donner un nom d’alias à chaque table) ;
Remarque : si on sépare ces tables par une virgule, on fabrique un produit cartésien avec le risque
d’explosion des enregistrements que cela entraîne. On peut préférer une jointure, qui limitera le nombre de lignes
de la relation obtenue.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
• Identifier les attributs qui doivent être affichés et les tables qui les contiennent ;
• Mettre ces tables dans la clause FROM (on peut donner un nom d’alias à chaque table) ;
• Mettre après la clause SELECT (et avant la cause FROM) les attributs à afficher
(éventuellement préfixés par l’alias de la table correspondante) ou * pour afficher tous les attributs ;
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
• Identifier les attributs qui doivent être affichés et les tables qui les contiennent ;
• Mettre ces tables dans la clause FROM (on peut donner un nom d’alias à chaque table) ;
• Mettre après la clause SELECT (et avant la cause FROM) les attributs à afficher
(éventuellement préfixés par l’alias de la table correspondante) ou * pour afficher tous les attributs ;
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
• Identifier les attributs qui doivent être affichés et les tables qui les contiennent ;
• Mettre ces tables dans la clause FROM (on peut donner un nom d’alias à chaque table) ;
• Mettre après la clause SELECT (et avant la cause FROM) les attributs à afficher
(éventuellement préfixés par l’alias de la table correspondante) ou * pour afficher tous les attributs ;
• Identifier éventuellement les fonctions à calculer sur l’ensemble des enregistrements et les
attributs nécessaires au calcul de ces fonctions, puis si nécessaire, ajouter des tables supplémentaires dans la
clause FROM ; ajouter enfin la fonction, appliquée à un attribut, dans la clause SELECT.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
• Identifier les attributs qui doivent être affichés et les tables qui les contiennent ;
• Mettre ces tables dans la clause FROM (on peut donner un nom d’alias à chaque table) ;
• Mettre après la clause SELECT (et avant la cause FROM) les attributs à afficher
(éventuellement préfixés par l’alias de la table correspondante) ou * pour afficher tous les attributs ;
• Identifier éventuellement les fonctions à calculer sur l’ensemble des enregistrements et les
attributs nécessaires au calcul de ces fonctions, puis si nécessaire, ajouter des tables supplémentaires dans la
clause FROM ; ajouter enfin la fonction, appliquée à un attribut, dans la clause SELECT.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
• Regarder sur quels attributs (ou groupes d’attributs) de quelles tables portent les sélections qui
se traduisent par des expressions qui devront être évaluées ;
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
• Regarder sur quels attributs (ou groupes d’attributs) de quelles tables portent les sélections qui
se traduisent par des expressions qui devront être évaluées ;
• Rajouter ces tables, si elles ne sont pas encore présentes, dans la clause FROM ;
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
• Regarder sur quels attributs (ou groupes d’attributs) de quelles tables portent les sélections qui
se traduisent par des expressions qui devront être évaluées ;
• Rajouter ces tables, si elles ne sont pas encore présentes, dans la clause FROM ;
• Rajouter les sélections dans une unique clause WHERE en les associant à l’aide d’opérateurs
booléens (AND, OR, IN) ;
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
• Identifier le (ou les) attribut(s) utilisés pour faire l’agrégation et les mettre dans la clause
GROUP BY ;
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
• Identifier le (ou les) attribut(s) utilisés pour faire l’agrégation et les mettre dans la clause
GROUP BY ;
• Compléter si nécessaire les tables de la clause FROM ;
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
• Identifier le (ou les) attribut(s) utilisés pour faire l’agrégation et les mettre dans la clause
GROUP BY ;
• Compléter si nécessaire les tables de la clause FROM ;
• Compléter éventuellement la clause SELECT en rajoutant les attributs utilisés pour l’agrégation, afin d’afficher leur valeur ;
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
• Identifier le (ou les) attribut(s) utilisés pour faire l’agrégation et les mettre dans la clause
GROUP BY ;
• Compléter si nécessaire les tables de la clause FROM ;
• Compléter éventuellement la clause SELECT en rajoutant les attributs utilisés pour l’agrégation, afin d’afficher leur valeur ;
(En effet, une table qui contiendrait le nombre moyen d’habitants dans chaque ville et qui n’afficherait
pas le nom de la ville correspondant à chaque groupe serait difficile à lire).
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
• Identifier le (ou les) attribut(s) utilisés pour faire l’agrégation et les mettre dans la clause
GROUP BY ;
• Compléter si nécessaire les tables de la clause FROM ;
• Compléter éventuellement la clause SELECT en rajoutant les attributs utilisés pour l’agrégation, afin d’afficher leur valeur ;
• Rajouter les sélections qui portent sur des valeurs agrégées dans la clause HAVING après le
GROUP BY.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
4. Construction des jointures
• Rajouter dans la clause ON les conditions de jointure, permettant de lier toutes les tables de la
clause FROM les unes aux autres. Une telle jointure se fait en utilisant les clés étrangères des tables en
question si elle est naturelle ou en indiquant une égalité entre deux attributs des deux tables jointées.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
4. Construction des jointures
• Rajouter dans la clause ON les conditions de jointure, permettant de lier toutes les tables de la
clause FROM les unes aux autres. Une telle jointure se fait en utilisant les clés étrangères des tables en
question si elle est naturelle ou en indiquant une égalité entre deux attributs des deux tables jointées.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
4. Construction des jointures
5. Construction des sous-requêtes
• Une sélection peut utiliser une expression qui nécessite une valeur non fournie par la question
posée en clair mais qui est le résultat d’une autre requête.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
4. Construction des jointures
5. Construction des sous-requêtes
• Une sélection peut utiliser une expression qui nécessite une valeur non fournie par la question
posée en clair mais qui est le résultat d’une autre requête.
Par exemple, avec la relation inventaire(produit, prix), on pose la question : quels sont les produits
dont le prix est inférieur à la moyenne des prix.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
4. Construction des jointures
5. Construction des sous-requêtes
• Une sélection peut utiliser une expression qui nécessite une valeur non fournie par la question
posée en clair mais qui est le résultat d’une autre requête.
Par exemple, avec la relation inventaire(produit, prix), on pose la question : quels sont les produits
dont le prix est inférieur à la moyenne des prix.
La moyenne des prix n’est pas une valeur donnée, il faut donc la calculer par la requête (SELECT
avg(prix) FROM inventaire) qui apparaîtra comme sous-requête de la clause WHERE de la requête principale :
SELECT Produit FROM inventaire WHERE prix < (SELECT avg(prix) FROM inventaire)
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
4. Construction des jointures
5. Construction des sous-requêtes
• Une sélection peut utiliser une expression qui nécessite une valeur non fournie par la question
posée en clair mais qui est le résultat d’une autre requête.
Par exemple, avec la relation inventaire(produit, prix), on pose la question : quels sont les produits
dont le prix est inférieur à la moyenne des prix.
La moyenne des prix n’est pas une valeur donnée, il faut donc la calculer par la requête (SELECT
avg(prix) FROM inventaire) qui apparaîtra comme sous-requête de la clause WHERE de la requête principale :
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
1. Construction de la clause SELECT
2. Construction des sélections
3. Construction des agrégats
4. Construction des jointures
5. Construction des sous-requêtes
• Une sélection peut utiliser une expression qui nécessite une valeur non fournie par la question
posée en clair mais qui est le résultat d’une autre requête.
Par exemple, avec la relation inventaire(produit, prix), on pose la question : quels sont les produits
dont le prix est inférieur à la moyenne des prix.
La moyenne des prix n’est pas une valeur donnée, il faut donc la calculer par la requête (SELECT
avg(prix) FROM inventaire) qui apparaîtra comme sous-requête de la clause WHERE de la requête principale :
SELECT Produit FROM inventaire WHERE prix < (SELECT avg(prix) FROM inventaire)
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
Une requête ne doit JAMAIS utiliser une valeur d’un attribut qui n’est pas
donnée dans la question que traduit la requête.
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
Une requête ne doit JAMAIS utiliser une valeur d’un attribut qui n’est pas
donnée dans la question que traduit la requête.
inventaire
Dans l’exemple de la relation inventaire(produit, prix), l’énoncé du problème
peut donner une vue partielle de la relation en guise d’illustration comme :
produit
prix
carottes
3.20
cerises
6.40
poireaux
5.95
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
Une requête ne doit JAMAIS utiliser une valeur d’un attribut qui n’est pas
donnée dans la question que traduit la requête.
inventaire
Dans l’exemple de la relation inventaire(produit, prix), l’énoncé du problème
peut donner une vue partielle de la relation en guise d’illustration comme :
Il ne faut pas traduire la question
« quels sont les produits dont le prix est inférieur à la moyenne des prix. ? »
par la requête : SELECT Produit FROM inventaire WHERE prix < 5.18
produit
prix
carottes
3.20
cerises
6.40
poireaux
5.95
Informatique pour tous
Requêtes SQL
I-Un peu de méthode
Une requête ne doit JAMAIS utiliser une valeur d’un attribut qui n’est pas
donnée dans la question que traduit la requête.
inventaire
Dans l’exemple de la relation inventaire(produit, prix), l’énoncé du problème
peut donner une vue partielle de la relation en guise d’illustration comme :
Il ne faut pas traduire la question
« quels sont les produits dont le prix est inférieur à la moyenne des prix. ? »
par la requête : SELECT Produit FROM inventaire WHERE prix < 5.18
car 5.18 n’est pas une valeur donnée dans la question mais le résultat d’un calcul « à
la main » sur les trois lignes indiquées.
produit
prix
carottes
3.20
cerises
6.40
poireaux
5.95
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
REQUETES SQL
I-Un peu de méthode
II- Requêtes sur une base de données existante
Informatique pour tous
I-Un peu de méthode
Copier
sous
Requêtes SQL
II- Requêtes sur une base de données existante
Windows le fichier peinture placé
groupes/pcsi1/Ipt/ et le coller dans votre répertoire personnel.
dans
Mes
documents/mes
Informatique pour tous
I-Un peu de méthode
Copier
Requêtes SQL
II- Requêtes sur une base de données existante
sous
Windows le fichier peinture placé
groupes/pcsi1/Ipt/ et le coller dans votre répertoire personnel.
C’est une base de données. L’ouvrir dans Sqliteman.
dans
Mes
documents/mes
Informatique pour tous
I-Un peu de méthode
Copier
Requêtes SQL
II- Requêtes sur une base de données existante
sous
Windows le fichier peinture placé
groupes/pcsi1/Ipt/ et le coller dans votre répertoire personnel.
dans
Mes
documents/mes
C’est une base de données. L’ouvrir dans Sqliteman.
Travail demandé : Noter sur papier la structure de la base et des tables qu’elle contient. (Inutile de
recopier les enregistrements !)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Dans un premier temps, la réponse suggérée sera seulement le nombre attendu d’enregistrements ou la
valeur si c’est un calcul. Toutes les requêtes sont indiquées à la fin du document.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q1. Tous les enregistrements de la relation Artiste
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q1. Tous les enregistrements de la relation Artiste
Réponse : (25 lignes)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q2. Le nom et l'origine des artistes.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q2. Le nom et l'origine des artistes.
Réponse : (25 lignes)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q3. Le nom et l'époque des artistes italiens.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q3. Le nom et l'époque des artistes italiens.
Réponse : (4 lignes)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q4. La liste des œuvres estimées a plus de 1000 €
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q4. La liste des œuvres estimées a plus de 1000 €
Réponse : (15 lignes)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q5. Les titres des œuvres exposées dans un musée (note : certaines œuvres sont dans des jardins publics et
ne sont donc pas dans un musée: la table avoir ne contient que les identifiants des œuvres exposées dans
un musée).
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q5. Les titres des œuvres exposées dans un musée (note : certaines œuvres sont dans des jardins publics et
ne sont donc pas dans un musée: la table avoir ne contient que les identifiants des œuvres exposées dans
un musée).
Réponse : (27 lignes)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q5bis. Les titres et genres des œuvres qui ne sont pas exposées dans un musée.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q5bis. Les titres et genres des œuvres qui ne sont pas exposées dans un musée.
Réponse : (3 lignes)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q6. Le titre des œuvres exposées au musée du Louvre.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q6. Le titre des œuvres exposées au musée du Louvre.
Réponse : (7 lignes)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q7. Le titre, le lieu et les heures d'ouvertures entre lesquelles on peut admirer les œuvres italiennes.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q7. Le titre, le lieu et les heures d'ouvertures entre lesquelles on peut admirer les œuvres italiennes.
Réponse : (5 lignes)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q8. Le nombre d'œuvres exposées dans un musée.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q8. Le nombre d'œuvres exposées dans un musée.
Réponse : (27)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q9. Le nombre d'artistes par pays.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q9. Le nombre d'artistes par pays.
Réponse : (9 lignes)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q10. Par genre, le nombre d'œuvres d'art créées par un artiste français.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q10. Par genre, le nombre d'œuvres d'art créées par un artiste français.
Réponse : (3 lignes)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q11. Le nombre de musées dans lesquels chaque œuvre peut être exposée (il faut que la police d'assurance
d'un musée soit supérieure au prix estimé de l'œuvre pour que le musée puisse exposer l'œuvre en
question).
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q11. Le nombre de musées dans lesquels chaque œuvre peut être exposée (il faut que la police d'assurance
d'un musée soit supérieure au prix estimé de l'œuvre pour que le musée puisse exposer l'œuvre en uestion).
Réponse : (30 lignes)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q12. Le prix moyen des œuvres d'art.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q12. Le prix moyen des œuvres d'art.
Réponse : (1565,6667€)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q13. Le prix moyen des œuvres dans chacun des musées.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q13. Le prix moyen des œuvres dans chacun des musées.
Réponse : 6 lignes
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q14. Le prix moyen des œuvres peintes par un artiste d’origine belge et/ou hollandaise.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q14. Le prix moyen des œuvres peintes par un artiste d’origine belge et/ou hollandaise.
Réponse :
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q15. Le prix moyen des œuvres exposées dans un musée contenant au moins 5 œuvres.
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Travail demandé : Écrire les requêtes en algèbre relationnelle puis SQL permettant d'afficher les réponses
aux questions qui suivent :
Q15. Le prix moyen des œuvres exposées dans un musée contenant au moins 5 œuvres.
Réponse :
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Propositions de réponses :
Q1. SELECT * FROM Artiste
πidA, Nom, Origine, Epoque (Artiste)
Q2. SELECT Nom, Origine FROM Artiste
πNom, Origine (Artiste)
Q3. SELECT Nom, Epoque FROM Artiste
WHERE Origine = ‘Italie’
πNom, Origine (σOrigine=‘Italie’(Artiste))
Q4. SELECT * FROM Oeuvre
WHERE Estimation >1000
πidO, Titre, Genre, Estimation(σEstimation > 1000 (Oeuvre))
Q5. SELECT Titre FROM Oeuvre, Avoir
WHERE Oeuvre.IdO = Avoir.Oeuvre
πTitre (Oeuvre ⋈ Oeuvre.IdO = Avoir.Oeuvre Avoir)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Propositions de réponses :
Q5bis. SELECT Titre , Genre FROM Œuvre
EXCEPT
SELECT Titre,Genre FROM Œuvre , Avoir WHERE Oeuvre.ido = Avoir.oeuvre
πTitre, Genre (Oeuvre) − πTitre, Genre(Oeuvre ⋈ Oeuvre.IdO = Avoir.Oeuvre Avoir)
Q6. SELECT Titre FROM Oeuvre, Avoir, Musee
WHERE Oeuvre.idO = Avoir.Oeuvre
AND Avoir.Musee = Musee.numero
AND Musee.NomMusee =‘Louvre’
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Propositions de réponses :
Q7. SELECT O.Titre, M.NomMusee, M.Ouverture, M.Fermeture
FROM Artiste as Ar, Par AS P, Oeuvre AS O, Avoir AS A, Musee AS M
WHERE M.numero = A.Musee
AND O.idO = A.Oeuvre
AND O.idO = P.Oeuvre
AND P.Artiste = Ar.idA
AND Ar.Origine = ‘Italie’ (en 0,006 s)
ou bien
SELECT O.Titre, M.NomMusee, M.Ouverture, M.Fermeture
FROM Oeuvre AS O JOIN Par AS P ON O.ido = P.oeuvre
JOIN Avoir as A ON A.oeuvre = O.ido
JOIN Musee as M ON A.Musee= M.numero
JOIN Artiste as Ar ON Ar.idA = P.artiste
WHERE Ar.Origine = 'Italie‘
(en 0,007 s)
Q8. SELECT COUNT( DISTINCT O.idO ) FROM Oeuvre AS O, Avoir AS A
WHERE O.IdO = A.Oeuvre
Q9. SELECT Origine, COUNT( * ) FROM Artiste GROUP BY Origine
πOrigine (Origineγcount(*)(Artiste))
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Propositions de réponses :
Q10. SELECT Genre, COUNT( DISTINCT O.idO ) FROM Artiste AS A, Par AS P, Œuvre AS O
WHERE A.IdA = P.Artiste
AND P.Oeuvre = O.idO
AND A.Origine = ‘France’
GROUP BY Genre
Q11. SELECT O.Titre, COUNT( DISTINCT M.Numero ) FROM Oeuvre AS O,Musee AS M
WHERE O.estimation < M.Assurance
GROUP BY O.idO
Q12. SELECT AVG( Estimation ) FROM Oeuvre
Q13. SELECT M.NomMusee, AVG( O.estimation ) FROM Musee AS M, Œuvre AS O, AVoir AS A
WHERE M.numero = AMusee
AND O.idO = A.Oeuvre
GROUP BY M.numero
(en 0,013 s)
ou bien
SELECT M.NomMusee, avg(O.estimation)
FROM Oeuvre as O JOIN Avoir AS A ON O.ido = A.oeuvre
JOIN Musee AS M ON M.numero = A.Musee
GROUP BY M.numero (en 0,011s)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Propositions de réponses :
Q14. SELECT Ar.Nom, AVG( O.estimation ) FROM Artiste Ar, Œuvre O, Par P
WHERE O.idO = P.Oeuvre
AND P.Artiste = Ar.idA
AND (Ar.Origine = ‘Belgique’ OR Ar.Origine = ‘Hollande’)
AND O.genre='peinture'
GROUP BY Ar.idA (en 0,009 s)
ou bien
SELECT Ar.Nom, avg(O.estimation)
FROM PAR P JOIN Oeuvre O ON P.oeuvre = O.ido
JOIN ARTISTE as Ar ON P.artiste = Ar.idA
WHERE (Ar.origine = 'Belgique' OR Ar.origine = 'Hollande')
AND O.genre='peinture'
GROUP BY Ar.idA (en 0,008 s)
Informatique pour tous
I-Un peu de méthode
Requêtes SQL
II- Requêtes sur une base de données existante
Propositions de réponses :
Q15. SELECT M.NomMusee, AVG( O.estimation ) FROM Musee M, Oeuvre O, Avoir A
WHERE M.numero = A.Musee
AND O.idO = A.Oeuvre
GROUP BY M.numero
HAVING count( * ) > 4 (en 0,03 s)
ou bien
SELECT M.NomMusee,AVG( O.estimation ) FROM Oeuvre O
JOIN Avoir A ON O.ido = A.oeuvre
JOIN Musee M ON M.numero = A.Musee
GROUP BY M.numero
HAVING count(*) > 4 (en 0,04 s)
Informatique pour tous
Requêtes SQL