Université des Sciences et de la Technologie d’Oran -Mohammed BOUDIAF-
Faculté des Mathématiques et Informatique
Département d’Informatique
Module: Base De Données
Corrigé du TP 4: Requêtes SQL - Partie 2 -
Corrigé vidéo
Nous considérons le même schéma relationnel utilisé dans la fiche de TP ◦ 3, à savoir:
Emp (EmpNo, Ename, Grade, Mgr, HireDate, Sal, Comm, DeptNo).
Dept (DeptNo, Dname, Loc)
SalGrade (Grade, Job, Losal, Hisal)
• Insertion du nouveau département:
i n s e r t into Dept values ( 5 0 , ’MANAGEMENT’ , ’ORAN’ ) ;
i n s e r t into Dept ( deptno , dname , l o c ) values ( 5 0 , ’MANAGEMENT’ ,
’ORAN’ ) ;
Exprimez en SQL les requêtes suivantes:
1. Afficher les employés qui ont un salaire compris entre 1000 et 2000:
s e l e c t ∗ from emp where s a l >=1000 and s a l <=2000;
s e l e c t ∗ from emp where s a l between 1000 and 2 0 0 0 ;
2. Afficher tous les employés qui ont un nom commençant par la lettre A ou contenant la lettre S:
s e l e c t ∗ from emp where ename l i k e ’A%’ or ename l i k e ’%S%’
3. Afficher les employés et leur département:
s e l e c t ∗ from emp inner j o i n dept on emp . deptno = dept . deptno ;
s e l e c t ∗ from emp , dept where emp . deptno=dept . deptno ;
Nous pouvons également utiliser la jointure gauche (left outer join) pour afficher les employés et
éventuellement leurs départements. Cependant, le résultat serait le même car pour un employé,
il doit forcement appartenir à un département.
4. Afficher les employés qui ont une commission:
s e l e c t ∗ from emp where comm i s not null and comm >0
5. Afficher les employés qui n’ont pas de commission:
s e l e c t ∗ from emp where comm i s null or comm=0;
6. Afficher tous les départements ainsi que le nom des employés y travaillant:
s e l e c t ∗ from dept l e f t outer j o i n emp
on dept . deptno = emp . deptno ;
7. Afficher les managers qui ont été embauchées entre 1980 et 1985:
1
Université des Sciences et de la Technologie d’Oran -Mohammed BOUDIAF-
Faculté des Mathématiques et Informatique
Département d’Informatique
Module: Base De Données
s e l e c t ∗ from emp , s a l g r a d e where emp . g r a d e = s a l g r a d e . g r a d e
and j o b= ’MANAGER’ and
extract ( year from h i r e d a t e ) between 1981 and 1985
8. Afficher l’âge et le grade de chaque employé:
s e l e c t empno , d a t e p a r t ( ’ y e a r ’ , age ( h i r e d a t e ) ) as Age , g r a d e from emp ;
9. Quels sont les employés qui ont le même job et le même salaire que l’employé FORD:
s e l e c t e2 . ∗ from emp e1 , emp e2 where
e1 . ename = ’FORD ’ and e2 . g r a d e = e1 . g r a d e and e2 . s a l = e1 . s a l and
e2 . empno <> e1 . empno ;