1.
Le terme "directeur" n'est pas spécifiquement une profession, mais plutôt un rôle ou
un poste au sein d'un département. Les directeurs peuvent être issus de différentes
professions en fonction des besoins de l'entreprise.
2. Il est possible qu'un employé soit directeur de plusieurs départements s'il est qualifié
pour cela et si l'entreprise le décide ainsi.
3. En général, le directeur d'un département travaille dans le département qu'il dirige.
Cependant, dans certains cas, il peut être responsable de plusieurs départements et
peut donc travailler dans différents départements.
4. Pour la relation EMP, la clé primaire est "eno" (numéro d'employé), tandis que la clé
étrangère est "dno" (numéro de département).
Pour la relation DEPT, la clé primaire est "dno" (numéro de département), tandis que la clé
étrangère est "dir" (numéro d'employé du directeur).
Le schéma de la base de données peut être représenté comme suit :
EMP(eno, enom, prof, dateemb, sal, comm, dno)
DEPT(dno, dnom, dir, ville)
Clé primaire pour EMP : eno
Clé étrangère pour EMP : dno
Clé primaire pour DEPT : dno
Clé étrangère pour DEPT : dir (référence à eno)
1. Pour donner tous les tuples de DEPT :
SQL
SELECT * FROM DEPT;
2. Pour afficher les deux premières lignes de DEPT (classées par dno croissant), puis les
deux suivantes :
SQL
SELECT * FROM DEPT ORDER BY dno LIMIT 2;
puis :
SQL
SELECT * FROM DEPT ORDER BY dno LIMIT 2,2;
3. Pour donner les noms et les salaires des employés :
SQL
SELECT enom, sal FROM EMP;
4. Pour donner toutes les professions des employés (sans doublons) :
SQL
SELECT DISTINCT prof FROM EMP;
5. Pour donner les dates d'embauche des techniciens :
SQL
SELECT dateemb FROM EMP WHERE prof = 'technicien';
6. Pour faire le produit cartésien entre EMP et DEPT :
SQL
SELECT * FROM EMP, DEPT;
Notez que le produit cartésien peut générer un grand nombre de résultats et qu'il est souvent
préférable de spécifier des critères de jointure pour réduire le nombre de résultats.
7- SELECT enom, dnom FROM EMP, DEPT WHERE [Link] = [Link];
8- SELECT eno FROM EMP, DEPT WHERE [Link] = [Link] AND [Link] = 'Boston';
9- SELECT enom FROM EMP, DEPT WHERE [Link] = [Link] AND [Link] IN (1,3);
10- SELECT DISTINCT [Link] FROM EMP, DEPT WHERE [Link] = [Link] AND [Link]
IN (SELECT dno FROM EMP WHERE prof = 'ingénieur');
11- SELECT enom, sal FROM EMP WHERE sal > ANY(SELECT sal FROM EMP WHERE prof =
'ingénieur');
12- SELECT [Link], [Link] FROM EMP, DEPT, EMP DIR WHERE [Link] = [Link] AND
[Link] = [Link];
13- SELECT enom, prof, sal FROM EMP ORDER BY prof ASC, sal DESC;
14- SELECT AVG(sal) FROM EMP;
15- SELECT COUNT(*) FROM EMP, DEPT WHERE [Link] = [Link] AND
[Link] = 'Production';
16- SELECT dno, MAX(sal) FROM EMP GROUP BY dno;
17- SELECT prof, AVG(sal) FROM EMP GROUP BY prof;
18- SELECT AVG(sal) FROM EMP GROUP BY prof HAVING AVG(sal) =
MIN(AVG(sal));
19- SELECT [Link] FROM DEPT, EMP WHERE [Link] = 'Boston' AND
[Link] = [Link] GROUP BY [Link] HAVING COUNT(*) > 10;
20- SELECT [Link], [Link] FROM EMP WHERE [Link] = (SELECT
MAX(sal) FROM EMP WHERE [Link] = dno);
21- SELECT [Link], 100*[Link]/(SELECT MAX(sal) FROM EMP WHERE
[Link] = dno) FROM EMP;
22- SELECT ename, sal FROM EMP WHERE eno NOT IN (SELECT dir FROM DEPT);
23- SELECT ename, sal FROM EMP WHERE sal < ALL(SELECT sal FROM EMP
WHERE prof = 'ingenieur');