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