Sunteți pe pagina 1din 4

Bases de donnes et interaction Exercices

1. Consultation dune base de donnes


1. SELECT * FROM Produit; 2. SELECT NomF, VilleF FROM Fournisseur; 3. SELECT DISTINCT NomP FROM Produit WHERE PrixP > 1300; 4. SELECT DISTINCT NomP FROM Produit WHERE PrixP BETWEEN 1300 AND 1500; 5. SELECT DISTINCT NomP FROM Produit WHERE PrixP IN (1300, 1500); 6. SELECT NomC, VilleC FROM Client WHERE NomC LIKE J%; 7. SELECT DISTINCT NomP FROM Produit ORDER BY NomP; 8. SELECT NomC FROM Client WHERE AnneeNaissC < 1965; 9. SELECT NumF FROM Client WHERE NomP LIKE parpaings AND PrixP > 1300; 10. SELECT NomF FROM Fournisseur WHERE NumF IN ( SELECT NumF FROM Produit WHERE NomP IN (briques, parpaings) ); 11. SELECT NomC FROM Client WHERE NumC IN ( SELECT NumC FROM Commande WHERE NomP LIKE briques ) ORDER BY NomP; 12. SELECT NomP FROM Produit WHERE NumF IN ( SELECT NumF FROM Fournisseur WHERE VilleF LIKE %PARIS ); 13. SELECT NomC, VilleC FROM Client WHERE NumC IN ( SELECT NumC FROM Commande WHERE NomP LIKE briques GROUP BY NumC HAVING SUM(Qte) BETWEEN 8 AND 14 ); 14. SELECT NomF, NomP, PrixP FROM Fournisseur NATURAL JOIN Produit WHERE NumF IN ( SELECT NumF FROM Produit WHERE NomP IN ( SELECT NomP FROM Commande WHERE NumC = SELECT NumC FROM Client WHERE NomC = jean ) ); 15. ORDER BY NomF ASC, NomP DESC; 16. SELECT NomP FROM Produit WHERE PrixP = SELECT MIN(PrixP) FROM Produit; 17. SELECT NomP, AVG(PrixP) FROM Produit GROUP BY NomP; 18. SELECT NomP FROM Produit WHERE PrixP >= ( SELECT AVG(PrixP) FROM Produit ); 19. SELECT NomP, AVG(PrixP) FROM Produit GROUP BY NomP HAVING AVG(PrixP) > 1000; 20. SELECT NomP, AVG(PrixP) FROM Produit GROUP BY NomP HAVING COUNT(NumF) >= 2;
M1 Info 2005 / 2006 Universit dAngers Bases de donnes et interaction Exercices 1

21. SELECT NomP, PrixP FROM Produit WHERE NumF IN ( SELECT NumF FROM Fournisseur WHERE VilleF LIKE %ANGERS ) AND NomP IN ( SELECT NomP FROM Commande WHERE NumC IN ( SELECT NumC FROM Client WHERE VilleC LIKE %PARIS ) ); SELECT NomP, PrixP FROM Commande NATURAL JOIN Client NATURAL JOIN Produit WHERE VilleC LIKE %PARIS AND NumF IN ( SELECT NumF FROM Fournisseur WHERE VilleF LIKE %ANGERS ); SELECT NomP, PrixP FROM Commande NATURAL JOIN Client NATURAL JOIN Produit NATURAL JOIN Fournisseur WHERE VilleC LIKE %PARIS AND VilleF LIKE %ANGERS ; 22. SELECT SUM(Qte) FROM Commande WHERE NumC = ( SELECT NumC FROM Client WHERE NomC LIKE Pierre ); 23. SELECT NumCom, SUM(Qte) FROM Commande GROUP BY NumCom WHERE SUM(Qte) >= ( SELECT SUM(Qte) FROM Commande WHERE NumC = ( SELECT NumC FROM Client WHERE NomC LIKE Pierre ) ); SELECT DISTINCT NumCom FROM Commande GROUP BY NumCom WHERE Qte >= ( SELECT SUM(Qte) FROM Commande WHERE NumC = ( SELECT NumC FROM Client WHERE NomC LIKE Pierre ) ); 24. SELECT NumCom FROM Commande WHERE Qte >= ( SELECT MIN(Qte) FROM Commande WHERE NumC = ( SELECT NumC FROM Client WHERE NomC = Jean ) ); 25. SELECT DISTINCT NomP FROM Produit WHERE NomP NOT IN ( SELECT NomP FROM Commande WHERE NumC = ( SELECT NumC FROM Client WHERE NomC LIKE Jean ) ); SELECT NomP FROM Produit MINUS SELECT NomP FROM Commande WHERE NumC = ( SELECT NumC FROM Client WHERE NomC LIKE Jean ); 26. voir page 3 27. SELECT DISTINCT NomP, NumCom FROM Commande NATURAL JOIN Client NATURAL JOIN Produit NATURAL JOIN Fournisseur WHERE VilleF = VilleC; 28. SELECT DISTINCT VilleF, VilleC FROM Fournisseur NATURAL JOIN Produit NATURAL JOIN Commande NATURAL JOIN Client; 29. SELECT Produit.NomP, Produit2.NomP FROM Produit, Produit AS Produit2 WHERE Produit.NumF = Produit2.NumF AND Produit.NomP < Produit2.NomP; 26. Commande

NumCom

NumC
CLI002 CLI002 CLI003

NomP
briques parpaings tuiles

Qte

M1 Info 2005 / 2006 Universit dAngers Bases de donnes et interaction Exercices

Produit

NumF
F001 F001 F002 F002 F003

NomP
tuiles briques parpaings briques briques

PrixP NumF
F001 F001 F002 F002 F003 F003 F004 F004

NomP
briques parpaings briques parpaings briques parpaings briques parpaings

NumF

Fournisseur \

NumF

(B \

NumF , NumP

Produit )

B=

NumF

Fournisseur NumP NumC =Commande

SELECT NomF FROM Fournisseur NATURAL JOIN ( SELECT NumF FROM Fournisseur EXCEPT SELECT NumF FROM ( SELECT NumF, NomP FROM Fournisseur, Commande WHERE NumC = ( SELECT NumC FROM Client WHERE NomC = Jean ) EXCEPT SELECT NumF, NomP FROM Produit ) ); NB. On utilise EXCEPT avec PostgreSQL et MINUS avec ORACLE.

NumF
F001 F003 F004 F004

NomP
parpaings parpaings briques parpaings

NumF
F001 F003 F004

NumF
F002

2. Dnition et manipulation dune base de donnes 1. CREATE TABLE SOCIETE ( CodeSoc INTEGER PRIMARY KEY, Nom VARCHAR(15) NOT NULL, Adresse VARCHAR(30) ); CREATE TABLE CAMPAGNE ( CodeCamp VARCHAR(5) PRIMARY KEY, Titre VARCHAR(50), CodeSoc INTEGER REFERENCES SOCIETE(CodeSoc), Produit VARCHAR(30), Cible VARCHAR(5) CONSTRAINT LaCible CHECK (Cible IN (ENF, ADO, MM50, TOUS) ) ); CREATE TABLE SPOT ( CodeSpot VARCHAR(4) PRIMARY KEY, Libell VARCHAR(30), Dure INTEGER, CodeCamp VARCHAR(5) REFERENCES CAMPAGNE(CodeCamp) );

M1 Info 2005 / 2006 Universit dAngers Bases de donnes et interaction Exercices

CREATE TABLE PROGRAMMATION ( CodeSpot VARCHAR(5) REFERENCES SPOT(CodeSpot), Media VARCHAR(10), Moment VARCHAR(10), LaDate DATE, CONSTRAINT LesMedias CHECK (media IN (TF1, FRANCE2, FRANCE3, FRANCE5, ARTE, M6)), CONSTRAINT LesMoments CHECK (moment IN (JOUR, DEBSOIR, SOIR, FINS)), PRIMARY KEY (CodeSpot, Media, Moment, Ladate) ); CREATE TABLE TARIF ( Media VARCHAR(10), Moment VARCHAR(10), Prix INTEGER, CONSTRAINT LesMedias CHECK (media IN (TF1, FRANCE2, FRANCE3, FRANCE5, ARTE, M6)), CONSTRAINT lesmoments CHECK ( ), PRIMARY KEY (Media, Moment) ); 2. ALTER TABLE TARIF MODIFY CONSTRAINT lesmedias CHECK (media IN (TF1, FRANCE2, FRANCE3, FRANCE5, ARTE, M6, Direct 8, W9) ); -- idem avec programmation si on na pas fait de cl tranggre INSERT INTO TARIF VALUES (W9, FINS, 50); INSERT INTO TARIF VALUES (NT1, FINS, 80); -- viole la contrainte lesmedias 3. UPDATE SPOT SET Libelle = Dpart de la mre WHERE CodeSpot = NS1; 4. INSERT INTO SOCIETE (CodeSoc, Nom) VALUES (100, Adidas); 5. INSERT INTO PROGRAMMATION VALUES (NS3, TF1, SOIR, 15-09-05); -- problme de rfrence pour CodeSpot, excuter la requte aprs 6. 6. INSERT INTO SPOT (CodeSpot, Libelle, CodeCamp) SELECT NS3, Vacances de Pques, CodeCamp FROM CAMPAGNE WHERE Titre = Nescaf-divorce; 7. CREATE TABLE SPOT2 AS SELECT Libell, Dure FROM SPOT; 8. CREATE TABLE EMPLOYE ( CodeSoc INTEGER REFERENCES SOCIETE(CodeSoc), CodeE VARCHAR(5), PRIMARY KEY (CodeSoc, CodeE) ); INSERT INTO EMPLOYE SELECT CodeSoc, NumC FROM SOCIETE, CLIENT WHERE SOCIETE.Nom = Nescaf AND CLIENT.Nom = Daniel; INSERT INTO EMPLOYE SELECT CodeSoc, NumC FROM SOCIETE, CLIENT WHERE SOCIETE.Nom = Peugeot AND VilleC LIKE %Paris%;

M1 Info 2005 / 2006 Universit dAngers Bases de donnes et interaction Exercices

S-ar putea să vă placă și