On
considère la base de données d’un festival de musique : Dans une
représentation peut participer un ou plusieurs musiciens. Un musicien ne
peut participer qu’à une seule représentation.
Representation(N_Rep, titre_Rep, lieu)
Musicien (N_mus , nom , #N_Rep)
Programmer (Date , #N_Rep , tarif)
Exprimez en SQL les requêtes suivantes :
1)Donner La liste des titres des représentations.
2)Donner La liste des titres des représentations ayant lieu au « théâtre Rabat ».
3)Donner La liste des noms des musiciens et les titres des représentations auxquelles ils participent.
4)Donner La liste des titres des représentations, les lieux et les tarifs du 21/07/2022.
5)Donner Le nombre des musiciens qui participent à la représentations n°15.
6)Donner Les titres des représentations et leurs dates dont le tarif ne dépasse pas 30DH.
Corrigé de l’exercice 2
1)SELECT titre_Rep FROM Representation;
2) SELECT titre_Rep FROM Representation where lieu="Rabat";
3)SELECT M.nom, R.titre_Rep FROM Musicien M , Representation R where R.Num_rep=M.Num_rep;
4)SELECT R.titre_Rep, R.lieu,P.tarif FROM Programmer P, Representation R WHERE P.Num_rep = R.Num_rep and P.date="21-07-2022";
5)SELECT COUNT (*) FROM Musicien where Num_rep =15;
6)SELECT R.titre_Rep , P.Date FROM Representation R , Programmer P where R.N_Rep=P.N_Rep and P.tarif<=30 ;
Exercice 3
On considère la base de données suivante:
Départements(N_dep, Nom_dep, VILLE)
Employes(N_E, Nom_E, PROF, SAL, COMM, #N_dep)
Exprimez en SQL les requêtes suivantes :
1)Donnez la liste des employés ayant une commission
2)Donnez les noms, emplois et salaires des employés par emploi croissant, et pour chaque emploi, par salaire décroissant
3)Donnez le salaire moyen des employés
4)Donnez le salaire moyen du département Production
5)Donnes les numéros de département et leur salaire maximum
6)Donnez les différentes professions et leur salaire moyen
7)Donnez le salaire moyen par profession le plus bas
8)Donnez le ou les emplois ayant le salaire moyen le plus bas, ainsi que ce salaire moyen
Corrigé de l’exercice 3
1)SELECT * FROM Employes WHERE COMM NOT NULL;
2)SELECT Nom_E, PROF, SAL FROM Employes ORDER BY PROF ASC, SAL DESC ;
3)SELECT AVG(SAL) FROM Employes ;
4)SELECT AVG(E.SAL) FROM Employes E , Departement D where E.N_dep=D.N_dep and D.Nom_dep="production" ;
5)SELECT N_dep, MAX(SAL) FROM Employes GROUP BY N_dep ;
6)SELECT PROF, MAX(SAL) FROM Employes GROUP BY PROF ;
7)SELECT PROF, AVG(SAL) as moy FROM Employes
GROUP BY PROF ORDER BY moy ASC LIMIT 1 ;
Exercice 4
On considère la base de données suivante relatif à la gestion des notes annuelles d’une promotion d’étudiants:
ETUDIANT(NEtudiant, Nom, Prenom)
MATIERE(CodeMat, NomMat, CoeffMat)
EVALUER(#NEtudiant, #CodeMat, Date, Note)
Exprimez en SQL les requêtes suivantes:
1) Quel est le nombre total d’étudiants ?
2) Quelles sont, parmi l’ensemble des notes, la note la plus haute et la note la plus basse ?
3) Quelles sont les moyennes de chaque étudiant dans chacune des matières ?
4)Quelles sont les moyennes par matière ? Avec la vue MGETU de la question 3 ( MOYETUMAT)
5)Quelle est la moyenne générale de chaque étudiant ? Avec la vue MGETU de la question 3 ( MOYETUMAT)
6) Quelle est la moyenne générale de la promotion ? Avec la vue MGETU de la question 5 :
7)
Quels sont les étudiants qui ont une moyenne générale supérieure ou
égale à la moyenne générale de la promotion? Avec la vue MGETU de la
question 5
Corrigé de l’exercice 4
1) SELECT count(*) FROM ETUDIANT ;
2) SELECT MIN(Note) as ’plus basse note’, MAX(Note) as ’plus haute note’ FROM EVALUER ;
3) SELECT E.NEtudiant, M.NomMat, AVG(EV.Note) AS MoyEtuMat
FROM
EVALUER EV, MATIERE M, ETUDIANT E WHERE EV.CodeMat = M.CodeMat AND
EV.NEtudiant = E.NEtudiant GROUP BY E.NEtudiant, M.NomMat ;
4)SELECT NomMat, AVG(MoyEtuMat) FROM MOYETUMAT GROUP BY NomMat ;
5) SELECT NEtudiant, SUM (MoyEtuMat*CoeffMat)/SUM(CoeffMat) AS MgEtu
FROM MOYETUMAT GROUP BY NEtudiant ;
6)SELECT AVG(MgEtu) FROM MGETU ;
7) SELECT NEtudiant , Nom , Prenom , MgEtu FROM MGETU
WHERE MgEtu >= (SELECT AVG(MgEtu) FROM MGETU) ;
8)SELECT PROF FROM Employes GROUP BY PROF
HAVING AVG(SAL)=(SELECT AVG(SAL) as moy FROM Employes GROUP BY PROF ORDER BY moy ASC LIMIT 1) ;
Exercice 5
On considère la base de données suivante:
Developpeur (NumDev, NomDev, AdrDev, EmailDev, TelDev)
Projet (NumProj, TitreProj, DateDeb, DateFin)
Logiciel (CodLog, NomLog, PrixLog, #NumProj)
Realisation (#NumProj, #NumDev)
Exprimez en SQL les requêtes suivantes:
1)afficher
les noms et les prix des logiciels appartenant au projet ayant comme
titre « gestion de stock », triés dans l’ordre décroissant des prix .
2)afficher
le total des prix des logiciels du projet numéro 10. Lors de
l’affichage, le titre de la colonne sera « cours total du projet ».
3)Afficher le nombre de développeurs qui ont participé au projet intitulé « gestion de stock »
4)Afficher les projets qui ont plus que 5 logiciels.
5) Les numéros et noms des développeurs qui ont participés dans tout les projets.
6)Afficher Les numéros de projets dans lesquelles tous les développeurs y participent dans sa réalisation.
Corrigé de l’exercice 5
1)SELECT L.NomLog, L.PrixLog FROM Logiciel L , Projet P where L.NumProj =P.NumProj and P.TitreProj= "gestion␣de␣stock"
ORDER BY L.PrixLog DESC ;
2) SELECT SUM(PrixLog) as "cout␣total␣du␣projet" FROM Logiciel WHERE NumPRoj=10 ;
3) SELECT count(*) FROM Developpeur D , Realisation R, Projet P where D.NumDev =R.NumDev and P.NumProj= R.NumProj ;
4) SELECT NumProj, TitreProj FROM PRojet P , Logiciel L where P.NumProj=L.NumProj
GROUP BY NumProj, TitreProj
HAVING count(*)>5 ;
5) SELECT NumDev, NomDev FROM Developpeur D , Realisation R where D.NumDev = R.NumDev
GROUP BY NumDev, NomDev
HAVING count(*)=(SELECT COUNT(*) FROM Projet) ;
6) SELECT NumProj, TitreProj FROM Projet P , Realisation R where P.NumProj=R.NumProj
GROUP BY NumProj, TitreProj
HAVING count(*)=(SELECT COUNT(*) FROM Developpeur);
Exercice 6
Soit la base de données "gestion_projet" permettant de gérer les projets relatifs au développement de logiciels suivante :
Developpeur (NumDev, NomDev, AdrDev, EmailDev, TelDev)
Projet (NumProj, TitreProj, DateDeb, DateFin)
Logiciel (CodLog, NomLog, PrixLog, #NumProj)
Realisation (#NumProj, #NumDev)
Ecrire en SQL les requêtes suivantes :
1. Créer les tables « Projet » et « Logiciel ». préciser clairement les types des données.
2. Afficher les noms et les prix des logiciels appartenant au projet ayant comme titre « gestion de stock », triés
dans l’ordre décroissant des prix.
3. Afficher le total des prix des logiciels du projet numéro 10. Lors de l’affichage, le titre de la colonne sera « coût total du projet ».
4. Afficher le nombre de développeurs qui ont participé au projet intitulé « gestion de stock ».
5. Afficher les projets qui ont plus que 5 logiciels.
6. Les numéros et noms des développeurs qui ont participés dans tous les projets.
7. Reporter la date de fin des projets dont le titre contient « Web » à la date « 17/04/2022 »
Corrigé de l’exercice 6
1) CREATE TABLE Projet (
NumProj INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
TitreProj VARCHAR(40),
DateDeb Date,
DateFin Date,
)
ENGINE=InnoDB;
CREATE TABLE Logiciel (
CodeLog INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
NomLog VARCHAR(40),
PrixLog DECIMAL,
NumProj INT UNSIGNED,
CONSTRAINT fk_projet_numero
FOREIGN KEY (NumProj)
REFERENCES Projet(NumProj) )
ENGINE=InnoDB;
2) SELECT L.NomLog, L.PrixLog
FROM Logiciel L
INNER JOIN Projet P ON L.NumProj=P.NumProj
WHERE P.TitreProj="gestion␣de␣stock"
ORDER BY L.PrixLog DESC
3) SELECT SUM(PrixLog) as "cout␣total␣du␣projet"
FROM Logiciel
WHERE NumPRoj=10
4) SELECT count(*)
FROM Developpeur D
INNER JOIN Realisation R ON D.NumDev=R.NumDev
INNER JOIN Projet P ON P.NumProj=R.NumProj
WHERE P.TitreProj="gestion␣de␣stock"
5) SELECT NumProj, TitreProj
FROM Projet P
INNER JOIN Logiciel L ON P.NumProj=L.NumProj
GROUP BY NumProj, TitreProj
HAVING count(*)>5
6) SELECT NumDev, NomDev
FROM Developpeur D
INNER JOIN Realisation R ON D.NumDev=R.NumDev
GROUP BY NumDev, NomDev
HAVING count(*)=(SELECT COUNT(*) FROM Projet)
7) UPDATE Projet
SET DateFin = '17/04/2022'
WHERE TitreProj like ‘%Web%’ ;
Exercice 7
On considère la base de données suivante:
Client (IdCli ,nom,ville)
Produit ( IdPro, Nom, marque, Prix,Qstock )
Vente (#IdCL,#IdPro, date ,qte)
Exprimer en SQL les requêtes suivantes :
1. Donner les différentes marques de produit.
2. Lister les produits de marque IBM, Apple ou Asus.
3. Donner les noms des clients qui ont acheté le produit 'p1'.
4. Donner les noms des produits qui n'ont pas été acheté.
5. Donner les noms des clients ayant acheté un produit en quantité supérieure à chacune des quantités de produits
achetées par le client 'c1'.
6. Donner les noms des produits moins chers que la moyenne des prix de tous les produits.
7. Supprimer les ventes des clients de Fès antérieures au 01-mar-2022.
Corrigé de l’exercice 7