Soit le schéma relationnel d’une base de données implémentée sous un SGBDR
relationnel Mysql:
- EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
- DEPT (deptno,dname,loc)
- SALGRADE(grade,losal,hisal)
Ecrire en langage SQL les requêtes suivantes :
R1) Afficher le nom, la fonction et le département de tous les employés de
l’entreprise. Classer le résultat par ordre alphabétique des employés
--> SELECT E.ename, E.job,D.dname FROM EMP as E, DEPT as D WHERE E.deptno=D.deptno
ORDER BY empname;
R2) Afficher le nom, la fonction et la date d’embauche de tous les employés de
l’entreprise. Classer le résultat par date d’embauche croissant
-->SELECT ename,job,hiredate FROM EMP ORDER BY hiredate asc;
R3) Afficher le nom, la fonction, le salaire et la date d’embauche de tous les
employés qui perçoivent des commissions. Trier le résultat dans l’ordre décroissant
des salaires et des commissions
--> SELECT ename,job,salaire,hiredate FROM EMP WHERE comm NOT NULL ORDER BY salaire
desc,comm desc;
R4) Afficher le nom, la fonction, le salaire et la date d’embauche de tous les
employés qui perçoivent des commissions. Trier le résultat dans l’ordre décroissant
des salaires et des commissions.
-->SELECT ename,job,salaire,hiredate FROM EMP WHERE comm NOT NULL ORDER BY salaire
desc,comm desc;
R5) Ecrire une requête permettant d’afficher pour chaque employé le matricule, le
nom, le salaire, le salaire augmenté de 5%, ainsi que la différence entre le
nouveau salaire et l’ancien salaire. Afficher ces deux dernières colonnes sous
forme d’un nombre entier en les nommant respectivement : Nouveau_salaire et
Augmentation
--> SELECT ename,salaire,(salaire*1.05) as Nouveau_salaire ,(0.05*salaire) as
Augmentation FROM emp;
R6) Afficher le nom et le matricule des employés et de leur manager. Nommer les
colonnes Employés, Mat_Emp, Chef immédiat, Mat_chef_Imm respectivement.
-->SELECT ename as Employés,empno as Mat_Emp,mgr as Chef immédiat FROM EMP;
R7) Ecrire une requête pour afficher le nom, le nom du département et sa localité
pour tous les employés qui touchent une commission.
-->SELECT E.ename,D.dname,D.loc FROM EMP as E, DEPT as D WHERE E.deptno=D.deptno
and E.comm >0
R8) Ecrire une requête pour afficher le nombre des employés qui appartient au même
département. En affichant le nom du département
-->SELECT count(empno),D.dname FROM EMP as E join DEPT as D on(E.deptno=D.deptno)
R9) Ecrire une requête pour afficher le matricule des différents managers et le
niveau de salaire le plus haut de leurs employés. Exclure toute ligne ou le manager
n’est pas identifié. Exclure également les groupes ou le salaire est inférieur à
1500. Trier le résultat par ordre croissant des salaires.
R10) Afficher les départements qui ne comprennent aucun employé
R11) Afficher toutes les fonctions des départements 10 et 20 qui n’existent que
dans l’un ou l’autre de ces départements.