La Signification Des Attributs de La Relation EMPLOYES Est La
La Signification Des Attributs de La Relation EMPLOYES Est La
La Signification Des Attributs de La Relation EMPLOYES Est La
Il est important à ce niveau de préciser que la réponse à une même question peut être
obtenue avec une ou plusieurs requêtes différentes utilisant chacune un ou des
opérateur(s) différent(s).
Il est aussi possible d’exprimer en SQL les opérations algébriques UNION, PRODUIT
CARTESIEN, JOINTURE , INTERSECTION , DIFFERENCE et DIVISION. Certaines
opérations algébriques ne sont pas directement supportées par SQL car ce dernier ne
proposant pas un opérateur spécifique pour les exprimer directement. Cependant, il
existe toujours une possibilité pour les traduire en termes des opérateurs offerts par
le langage. C’est le cas par exemple des opérations algébriques de JOINTURE ,
DIFFERENCE , INTERSECTION et DIVISION. Nous verrons comment les traduire en
fonction des possibilités du langage dans le cas ou ce dernier ne les supporte pas
directement.
Le SQL
• Q11: Quels sont les fonctions exercées par les
employés des départements 10 et 20 en éliminant
les tuples en double du résultat? (même que Q7)
Pas de tuples en double
SELECT Fonction
FROM EMPLOYES
WHERE Num_Dept = 10
UNION
SELECT Fonction
FROM EMPLOYES
WHERE Num_Dept = 20
Le SQL
• Q13: Quels sont les numéros des départements dans lesquels travaillent des
'VENDEURS' mais pas des 'INGENIEURS' ?
• SELECT Num_Dept
FROM EMPOYES
WHERE Fonction ='VENDEUR'
MINUS
SELECT Num_Dept
FROM EMPOYES
WHERE Fonction ='INGENIEUR'
• Si on se réfère à la définition de l'opération algébrique R-S, on remarque que la première relation R
correspond au le résultat de la sous-requête :
• SELECT Num_Dept
• FROM DEPARTEMENT
• WHERE Fonction ='VENDEUR'
• qui contiendra les numéros de tous les départements dans lesquels travaille au moins un employé
ayant pour fonction ‘VENDEUR’ alors que la deuxième relation S correspond au résultat de la sous requête
• SELECT Num_Dept
FROM DEPARTEMENT
WHERE Fonction ='INGENIEUR'
qui contiendra les numéros de tous les départements dans lesquels travaille au moins un employé
ayant pour fonction ‘INGENIEUR
Le SQL
SELECT Nom_Emp
FROM EMPLOYES
WHERE Salaire > ANY ( SELECT Salaire
FROM EMPLOYES
WHERE Nump_Dept = 30 )
Le SQL
• Q21: Quels sont les noms des employés ayant un
salaire supérieur à celui de tous les employés du
département 30 ?
SELECT Nom_Emp
FROM EMPLOYES
WHERE Salaire > ALL ( SELECT Salaire
FROM EMPLOYES
WHERE Nump_Dept = 30 )
Le SQL
• Q23: Quels sont employés ayant le même salaire
et la même fonction que l’employé ‘Omar’ ?
SELECT *
FROM EMPLOYES
WHERE (Salaire , Fonction) =
( SELECT Salaire , Fonction
FROM EMPLOYES
WHERE Nom_Emp = ‘Omar’ )
Le SQL
• Q24: Quels sont les noms et les fonctions des employés
ayant la même fonction que l’employé ‘Omar’ ou un
salaire supérieur ou égal à celui de ‘Rachid’?
SELECT Num_Dept
FROM DEPARTEMENT
WHERE Fonction ='VENDEUR‘ AND NOT EXISTS
( SELECT Num_Dept
FROM DEPARTEMENT
WHERE Fonction ='INGENIEUR' )
Le SQL