Vous êtes sur la page 1sur 3

Langages de manipulation de données relationnelles :

A. Exprimer dans les différents langages relationnels les requêtes suivantes :


1. Date de naissance et adresse de « Amadou Konaré » :
T= π [DateNaissance, Adresse] σ [Prénom = ‘Amadou’ ∧ Nom = ‘Konaré’] Employé
2. Nom et adresse des employés qui travaillent au département « Recherche» :
π [Nom, Adresse] ( Employé ∗ σ [NomD = ‘Recherche’] Département )
3. Nom et prénom des employés dont le supérieur est « Amadou Konaré » :
π [Nom, Prenom] ( Employé ∗ α [N°Avs >Supérieur] π [N°Avs] σ [Prénom =
‘Amadou’ ∧ Nom = ‘Konaré’] Employé )
4. Nom des employés qui travaillent plus de 10 heures sur un projet à «
Bamako » :
π [Nom] ( Employé ∗ σ [Heures>10] Travaille * σ [Lieu=’Bamako’] π [N°Pro,
Lieu] Projet )
5. Nom des projets sur lesquels travaillent « Amara Traoré » et « Salimata
Doumbia » :
π [NomP] (Projet *Travaille * π [N°Avs] σ [(Nom=’Traoré’ ∧
Prénom=’Amara’)∨
(Nom=’Doumbia’ ∧ Prénom=’Salimata’)] Employé )
6. Nom des projets sur lesquels travaillent à la fois « Amara Traoré » et «
Salimata Doumbia » :
π [NomP] (Projet *Travaille * π [N°Avs] σ [Nom=’Traoré’ ∧
Prénom=’Amara’]Employé)
∩ π [NomP] (Projet *Travaille * π [N°Avs] σ [Nom=’Doumbia’ ∧
Prénom=’Salimata’]Employé )
7. Nom et prénom des employés qui ne travaillent sur aucun projet :
π [Nom, Prénom] ( Employé – ( Employé * π [N°Avs] Travaille) )
8. Numéro des projets qui ont au moins un participant de chaque
département :

P = ((π [N°Pro] Projet) x (π [N°Dep] Département)) - π [N°Pro, N°Dep] (


Travaille * Employé )
(π [N°Pro] Projet) - (π [N°Pro] P)
B. Traduction en Français de la requête suivantes :
Projet - π [NomP, N°Pro, Lieu, N°Dep] ( ProjetxTravaillexEmployé )=
noms des projets, numéro des projets, lieu des projets, numéro des
départements sur lesquels aucun employé ne travaille.
C. Les requêtes SQL correspondant au Requêtes relationnelles en question A
sont :
1. SELECT DateNaissance, Adresse
FROM Employé
WHERE Nom='Konaré' AND Prénom='Amadou' ;
2. SELECT Nom, Adresse
FROM Employé
WHERE N°Dep IN
(SELECT N°Dep
FROM Département
WHERE NomD='Recherche' ) ;
3. SELECT E.Nom, E.Prénom
FROM Employé E, Employé S
WHERE S.Nom='Konaré' AND S.Prénom='Amadou' AND E.Supérieur =S.N°AVS;
4. SELECT Nom
FROM Employé, Travaille, Projet
WHERE Employé.N°AVS=Travaille.N°AVS AND Travaille.N°Pro=Projet.N°Pro AND
lieu='Bamako' AND heures>10;
5. SELECT NomP
FROM Employé, Travaille, Projet
WHERE Employé.N°AVS=Travaille.N°AVS AND Travaille.N°Pro=Projet.N°Pro AND
((Nom='Traoré' AND Prénom='Amara') OR (Nom='Doumbia' AND Prénom='Salimata')) ;
6. ( SELECT NomP
FROM Employé, Travaille, Projet
WHERE Employé.N°AVS=Travaille.N°AVS AND Travaille.N°Pro=Projet.N°Pro AND
Nom='Traoré' AND Prénom='Amara' )
INTERSECT
( SELECT NomP
FROM Employé, Travaille, Projet
WHERE Employé.N°AVS=Travaille.N°AVS AND Travaille.N°Pro=Projet.N°Pro AND
Nom='Doumbia' AND Prénom='Salimata') ;
7. SELECT Nom, Prénom
FROM Employé
WHERE N°AVS NOT IN
( SELECT N°AVS FROM Travaille ) ;
8. SELECT N°Pro
FROM Projet
WHERE NOT IN
( SELECT * FROM Département
WHERE NOT IN
( SELECT * FROM Employé, Travaille
WHERE Employé.N°AVS=Travaille.N°AVS AND Travaille.N°Pro=Projet.N°Pro AND
Employé.N°Dep=Département.N°Dep ) ) ;
1.Nom et nombre d’employés dans chaque department :

SELECT NomD, COUNT(N°AVS)


FROM Employé, Département
WHERE Employé.N°Dep=Département.N°Dep
GROUP BY NomD ;

2. Liste des numéros de départements qui ont moins de projets que la moyenne
CREATE VIEW DPro (N°Dep, NbPro) AS
SELECT N°Dep, COUNT(N°Pro)
FROM Projet
GROUP BY N°Dep ;
SELECT N°Dep
FROM Projet
GROUP BY N°Dep
HAVING COUNT(N°Pro) <
( SELECT AVG(NbPro)
FROM DepPro ) ;

Vous aimerez peut-être aussi