• Aucun résultat trouvé

Td corrigé TD 4 : Langage algébrique et Langage SQL CORRECTION pdf

N/A
N/A
Protected

Academic year: 2022

Partager "Td corrigé TD 4 : Langage algébrique et Langage SQL CORRECTION pdf"

Copied!
1
0
0

Texte intégral

(1)

TD 4 : L ANGAGE ALGÉBRIQUE ET L ANGAGE SQL

CORRECTION

I La base de données ZOO

Pour rappel, le schéma relationnel de la base de données Zoo :

ANIMAL

(N_A, NOM, AGE, RACE, ORIGINE, N_MENU)

FAMILLE

(RACE, ORIGINE, AMI)

MENU

(N_M, QTE_VIANDE, QTE_LEGUME)

ENFANT

(ENFANT, PARENT)

1 - Lister le nom et l'âge de tous les animaux.

nom, age (ANIMAL)

SELECT nom, age FROM ANIMAL;

2 - Donner les caractéristiques de l'animal appelé HECTOR.

nom = "HECTOR" (ANIMAL)

SELECT * FROM ANIMAL WHERE nom = "HECTOR";

3 - Donner les origines distinctes de toutes les familles.

origine (FAMILLE)

SELECT DISTINCT origine FROM FAMILLE;

4 - Donner les noms des singes de plus de 10 ans et originaire d'Afrique.

nom ( race = "SINGE"  age > 10  origine = "AFRIQUE") SELECT nom FROM ANIMAL

WHERE race = "SINGE" AND age > 10 AND origine = "AFRIQUE";

5 - Donner les noms des singes ainsi que des animaux de plus de 8 ans.

nom ( race = "SINGE"  age > 8 )

SELECT nom FROM ANIMAL WHERE race = "SINGE" OR age > 8;

(2)

6 - Donner les races des animaux dont le numéro de menu est 1 et l'âge est supérieur à 10.

race ( N_menu = "1M"  age > 10 )

SELECT nom FROM ANIMAL

WHERE N_menu = "1M" AND age > 10;

7 - Donner les menus plus 2 fois moins riches en viande qu'en légume?

qte_legume = 2*qte_viande (MENU)

SELECT * FROM MENU WHERE QTE_LEGUME = 2*QTE_VIANDE;

8 - Donner l'âge et l'origine des animaux qui sont amis de l'homme.

age,origine ( ANIMAL ⋈race = race ∧ origine = origine ( ami = "oui" FAMILLE)) SELECT age, origine FROM ANIMAL a , FAMILLE f

WHERE race = race AND origine = origine AND AMI = "Oui";

9 - Numéro de menu et quantité de viande pour les animaux qui ont une attitude amicale envers l'homme.

N_M, qte_viande (MENU ⋈ N_M = N_menu ANIMAL ⋈race = race ∧ origine = origine ( ami = "oui"

FAMILLE))

SELECT age, origine FROM ANIMAL a , FAMILLE f, MENU m WHERE a.race = f.race AND a.origine = f.origine

AND m.N_M = a.N_menu AND AMI = "Oui";

10 - Donner les noms des animaux qui sont grands parents.

nom (ANIMAL ⋈N_A=E1.parent ENFANT E1 ⋈E1.enfant = E2.parent ENFANT E2) SELECT nom FROM ANIMAL, ENFANT E1, ENFANT E2

WHERE N_A = E1.parent AND E1.enfant = E2.parent;

11 - Quantité de viande totale pour tous les menus.

SELECT SUM(qte_viande) FROM MENU;

12 - Nombre d'enfants pour chaque numéro d'animal.

SELECT COUNT(*) FROM ENFANT GROUP BY parent;

13 - Lister les animaux qui dont on connaît les deux parents.

enfant (ENFANT E1 ⋈E1.enfant = E2.enfant ∧ E1.parent != E2.parent ENFANT E2)

(3)

SELECT enfant FROM ENFANT GROUP BY parent HAVING COUNT(*) =2;

14 - Donner la moyenne de la quantité de viande servie dans les menus.

SELECT AVG(qte_viande) FROM MENU;

15 - Donner les numéros et la composition des menus plus riches en viande que la moyenne (se servir de la requête précédente pour faire cette requête).

SELECT N_M, qte_viande FROM MENU WHERE qte_viande > (SELECT AVG(qte_viande) FROM MENU);

II La base de données Plantes botaniques

Pour rappel, le schéma relationnel de la base sur les plantes botaniques est :

PLANTE

(N°, NOM_BOTANIQUE, FAMILLE, FLORAISON, COULEUR_FLEUR, TOXICITE, HAUTEUR, ORIGINE, PATICULARITE, PHOTOGRAPHIE)

ESPECE (NOM, ORIGINE_MAJORITAIRE, SUPER_FAMILLE) SYMPTOME (LIBELLE, DESCRIPTION)

PROVOQUE (N°, LIBELLE, VICTIME, QUANTITE)

1 – Lister les caractéristiques des plantes présentes dans la base de données.

nom_botanique, floraison, couleur_fleur, toxicite, hauteur, particularite, photographie (PLANTE) SELECT * FROM PLANTE;

2 – Donner les libellés des symptômes présents dans la base de données.

libelle (SYMPTOME)

SELECT libelle FROM SYMPTOME;

3 – Donner le nom des plantes ainsi que leur couleur et leur hauteur.

nom,couleur_fleur, hauteur (PLANTE)

SELECT nom,couleur_fleur, hauteur FROM PLANTE;

4 – Donner le nom et l’origine des plantes dont le nom commence par la lettre a.

nom, origine nom comme "a*" (PLANTE))

SELECT nom, origine FROM PLANTE WHERE nom LIKE "a*" ;

5 – Donner le nom et l’origine des plantes provenant d’Amérique du Nord et dont le nom contient la chaîne de caractère aster.

(4)

nom, origine nom comme "*aster*" origine = "Amérique du Nord" (PLANTE)) SELECT nom, origine FROM PLANTE

WHERE nom LIKE "*aster*" AND origine = "Amérique du Nord";

6 – Donner le nom des plantes provenant d’Europe et dont la hauteur est généralement supérieure à 60cm.

nom hauteur >= 60  origine comme "*Europe*" (PLANTE)) SELECT nom FROM PLANTE

WHERE origine LIKE "*Europe*" AND hauteur >= 60;

7 – Donner le nom des plantes qui sont toxiques.

nom toxicite = "Non connue" toxicite = "Non toxique" (PLANTE)) SELECT nom FROM PLANTE

WHERE toxicite = "Toxique non mortelle" OR toxicite = "Mortelle";

Ou bien

SELECT nom FROM PLANTE

WHERE toxicite IN ("Toxique non mortelle ", " Mortelle ");

Ou bien

SELECT nom FROM PLANTE WHERE toxicite = " Toxique non mortelle "

UNION

SELECT nom FROM PLANTE WHERE toxicite = " Mortelle ";

8 – Donner le nom et la couleur des plantes qui sont toxiques.

nom, couleur_fleur toxicite = "Non connue" toxicite = "Non toxique" (PLANTE)) SELECT nom, couleur_fleur FROM PLANTE

WHERE toxicite = "Toxique non mortelle" OR toxicite = "Mortelle";

Ou bien

SELECT nom, couleur_fleur FROM PLANTE

WHERE toxicite IN ("Toxique non mortelle ", " Mortelle ");

Ou bien

SELECT nom, couleur_fleur FROM PLANTE WHERE toxicite = " Toxique non mortelle "

UNION

SELECT nom, couleur_fleur FROM PLANTE WHERE toxicite = " Mortelle ";

9 – Donner le nom des plantes toxiques qui ne sont pas originaires d’Europe.

(5)

nom toxicite = "Non connue" toxicite = "Non toxique"  origine non comme "*Europe*" (PLANTE)) SELECT nom FROM PLANTE

WHERE toxicite = "Toxique non mortelle" OR toxicite = "Mortelle"

AND origine NOT LIKE "*Europe*";

Ou bien

SELECT nom FROM PLANTE

WHERE toxicite IN ("Toxique non mortelle ", " Mortelle ") AND origine NOT LIKE "*Europe*";

Ou bien

SELECT nom FROM PLANTE WHERE toxicite = " Toxique non mortelle " AND origine NOT LIKE "*Europe*"

UNION

SELECT nom FROM PLANTE WHERE toxicite = " Mortelle "

AND origine NOT LIKE "*Europe*";

10 – Donner le nom des plantes classées par ordre croissant de hauteur.

SELECT nom FROM PLANTE ORDER BY hauteur;

11 – Donner le nom des espèces des plantes toxiques.

famille toxicite = "Non connue" toxicite = "Non toxique" (PLANTE)) SELECT famille FROM PLANTE

WHERE toxicite IN ("Toxique non mortelle ", " Mortelle ");

12 – Donner le nom des plantes toxiques et les symptômes associés.

nom, libelle toxicite = "Non connue" toxicite = "Non toxique" (PLANTE Pl ⋈ Pl.N° = Pr.N° PROVOQUE Pr)) SELECT famille FROM PLANTE Pl, PROVOQUE Pr

WHERE Pl.N° = Pr.N° AND toxicite IN ("Toxique non mortelle ", " Mortelle ");

13 – Donner le libellé des symptômes observables chez l’homme.

libelle victime = "homme" (PROVOQUE))

SELECT libelle FROM PROVOQUE WHERE victime = "homme";

14 – Sur quel type de victime agit le poison de la digitale pourpre ? Et celui de l’aster amellus ‘Blue King’ ?

15 – Donner la hauteur des plantes qui ont des fleurs.

hauteur floraison = "Oui" (PLANTE))

(6)

SELECT hauteur FROM PLANTE WHERE floraison = "Oui";

16 – Combien compte-t-on de plantes dont on ne connaît pas la toxicité dans la base ? SELECT COUNT(*) FROM PLANTE WHERE toxicite = "Non Connue";

17 – Combien y a-t-il de plantes dont les fleurs ont des teintes apparentées à la couleur bleue ?

SELECT COUNT(*) FROM PLANTE WHERE couleur_fleur LIKE "*bleu*";

18 – Quelles sont les noms et les origines majoritaires des plantes qui ont une hauteur moyenne supérieure à la moyenne ?

SELECT nom, origine FROM PLANTE WHERE hauteur > SELECT AVG(hauteur) FROM PLANTE);

19 – Quelles sont les plantes que l’on ne trouve que sur le continent américain ?

SELECT * FROM PLANTE WHERE origine LIKE "Amérique" OR origine LIKE "Canada";

20 – Quel est le nombre de plantes qui provoquent une paralysie respiratoire chez l’homme ? SELECT COUNT (DISTINCT *) FROM PROVOQUE WHERE victime ="homme" AND libelle = "paralysie respiratoire";

21 – Quels sont les origines des plantes qui provoquent une asphyxie des animaux ?

origine libelle = "asphyxie"  victime ="animal" (PROVOQUE))

SELECT origine FROM PROVOQUE WHERE victime ="animal" AND libelle =

"asphyxie";

22 – Quelles sont les noms des plantes qui provoquent le plus de symptômes différents ? SELECT Pl.nom FROM PLANTE Pl, PROVOQUE Pr

WHERE Pl.N° = Pr.N°

GROUP BY Pr.N° HAVING COUNT(*) = (SELECT MAX(COUNT(*)) FROM PROVOQUE

GROUP BY N° ) ;

Références

Documents relatifs

L’activité de l’heure précédente a permis d’obtenir une importante série d’exercices, chacun étant accompagné de sa solution. Peuvent également être

Pour toutes ces raisons, la littérature pour la jeunesse a généré des formes particulières dont il faut tenir compte pour bien en saisir la spécificité, dans une perspective qui

Étant donnés la largeur, la hauteur, la longueur, le poids du colis et la distance à parcourir, écrire un algorithme qui calcul le prix à payer pour le transport d’un colis.

Quand, après m’être déshabillé, je m’étendis dans le lit, j’éprouvai un sentiment de bien-être tout nouveau pour moi ; c’était la première fois

Commandes de dialogue (suite) Exemple de requête paramétrée : SQL> SELECT *.

B - Dans les deux problèmes ci-dessous, tous les objets ont la même longueur (quand on les met bout à bout, la longueur totale est proportionnelle au nombre d’objets alignés)..

- les désignations de produits pour lesquelles la moyenne des prix est supérieure à 300 € - la liste des clients ayant demandé une intervention pour des produits

Le référencement a pour but de faire indexer les pages web d’un site sur les moteurs de recherche et les annuaires pour augmenter le trafic du site. « huit visiteurs sur dix trouvent