Académique Documents
Professionnel Documents
Culture Documents
1/12
IS NOT NULL présence de valeur
ANY et ALL utilisables pour des comparaisons entre un élément et un ensemble.
Exemples :
Nom, Salaire et Commission des employés ayant une commission excédent le salaire ?
Select ENAME, SAL, COMM FROM EMP WHERE COMM > SAL;
Nom, Salaire des employés ayant un salaire entre 1200 et 1300 ?
Select ENAME, SAL FROM EMP WHERE SAL BETWEEN 1200 AND 1300;
L’opérateur IN compare une valeur à un ensemble de valeurs.
Numéro, NOM et Salaire de tous les employés ‘CLERK’ ou ‘ANALYST’ ?
Select ENAME, JOB, SAL FROM EMP WHERE JOB IN (‘CLERK’, ‘ANALYST’) ;
L’opérateur LIKE :
Comparaison de chaînes de caractères :
Employés dont le nom commence par ‘M’ ?
Select ENAME FROM EMP WHERE ENAME LIKE ‘M%’;
% denote une chaîne pouvant être nulle.
Employés ayant ‘A’ en troisième position dans leurs noms ?
SELECT ENAME FROM EMP WHERE ENAME LIKE ‘--A%’;
Le – denote un caractère unique.
Tri du résultat :
SELECT col1, col8, col5
FROM nom de table
[WHERE expression]
ORDER BY col8, col5 [ASC | DESC]
Ou bien
ORDER BY 2, 3[ASC | DESC]
NB. ORDER BY est toujours la dernière.
Exemple :
Ename, job et salaire de tous les employés. Trier le résultat par job (Alphabétiquement) et par sal en
décroissant.
SELECT ename, job, sal
FROM emp
ORDER BY job, sal DESC;
2/12
Jointure de tables :
Combiner des n-uplets issues à partir de deux ou plusieurs tables en vue de retrouver des données associés.
Syntaxe :
Select
From table1, table2
Where prédicat
Exemple :
Localité des départements où travaille l’employé SMITH ?
Select loc
From emp, dept
Where ename = ‘SMITH’
AND emp. Deptno = dept.Deptno ;
Jointure d’une table avec elle-même :
Exemple :
Ename du chef de l’employé ‘AHMED’.
Select e2.ename
From emp e1, emp e2
Where e1.ename = ‘AHMED’
AND e1. mgr = e2.empno;
Opérateur ensembliste :
UNION, INTERSECT, MINUS.
Syntaxe :
Select ….
From ….
{UNION|INTERSECT|MINUS}
Select ….
From ….
{UNION|INTERSECT|MINUS}
Select ….
From …. ;
3/12
Exemple opérateur UNION :
Select empno, ename, sal, comm, deptno
From emp
Where sal < 1500
UNION
Select empno, ename, sal, comm, deptno
From emp
Where comm. is not null;
Exemple opérateur MINUS :
Select deptno
From dept
MINUS
Select deptno
From emp;
Exemple opérateur INTERSECT :
Select empno, ename, sal, comm, deptno
From emp
Where sal < 1500
INTERSECT
Select empno, ename, sal, comm, deptno
From emp
Where comm. is not null;
Requêtes imbriquées :
Les requêtes imbriquées sont des requêtes à l’intérieur d’autres requêtes.
On a 2 types de requêtes imbriquées :
- Requêtes imbriquées simples : la requête interne est indépendante de la requête externe dans le sens où
elle est évaluée une seule fois avant la requête externe qui utilisera ensuite le résultat.
- Requêtes corrélés : la requête interne et la requête externe ont une variable inter-bloc commune de telle
sorte que le SELECT interne doit être évalué plus qu’une fois.
Syntaxe d’une requête imbriquée
Select ….
From table-name
Where (col1, col2, …) opérateur (Select col1, col2 From table-name Where …..);
NB. - Maximum 16 niveaux d’imbrications.
- Sous requête vide erreur.
4/12
Exemple :
Ename, Sal et Job des employés ayant un salaire > salaire de ‘JONES’ ?
Select Ename, Sal, Job
From emp
Where Sal > (Select Sal From emp Where ename = ‘JONES’);
Sous requête retourne plusieurs colonnes : no_vol qui assure le même trajet que celui du vol V101 mais 2
jours plus tard?
Select no_vol
From vols
WHERE (V_d, V_a, D_d, D_a) =
(SELECT (V_d, V_a, D_d+2, D_a+2)
FROM vols
WHERE no_VOL = ’V101’ ) ;
Sous requête retourne plusieurs lignes :
Syntaxe
SELECT ...
FROM nom de table
WHERE expr NOT IN
(SELECT (...
FROM · · · ) ;
SELECT ...
FROM nom de table
WHERE expr op ANY | ALL
(SELECT ( ...
FROM · · · ) ;
op ∈ { = , <>, < , <= , > , >= }
Pour connaître les vols qui sont assurés par un pilote qui habite à Paris.
6/12
Exercice :
Soit une partie du schéma de la base « gestion des employés » suivante :
Remarque : EMP.EMPNO et EMP.MGR sont définis sur le même domaine sémantique, MGR représente
l’identifiant du séparateur hiérarchique d’un employé.
1- Ecrire les commandes LDD pour créer les tables aves toutes les contraintes d’intégrité.
2- Exprimer les requêtes suivantes en SQL :
Interrogation d’une seule relation
7/12
Tous les n-uplets de la table DEPT.
Les noms et les salaires des employés.
Les professions des employés (après élimination des doublons).
Les dates d’embauches des analystes.
ENAME, JOB, COMM, COMM+SAL, en affichant le mot ‘sans’ pour ceux qui n’ont pas de
commission.
Liste de tous les employés en remplaçant les noms par « **** » dans le département 10.
Affichage du nom, fonction, salaire des employés sans afficher le salaire des président et
manager (les remplacer respectivement par « *** » et « ### »).
Jointures et imbrications
Opérateurs ensemblistes
Nvl (exp1, exp2) : convertit exp1 susceptible d’être null en une valeur réelle exp2.
Exemple : nvl (grade, ‘aucun’) retourne ‘aucun’ si grade est null.
Decode (colonne, recherche, resultat [,recherche, resultat] …) : programme un case.
Jointures et imbrications
9/12
Select * from emp, dept, salgrade where emp.deptno = dept.deptno and dname =
‘RESEARCH’ and grade = 4 and sal between losal and hisal;
Numéros des employés ayant des subordonnés.
Select empno from emp where mgr is not null;
Les employés du département ‘RESEARCH’ recrutés en même temps qu’un employé dans le
département ‘SALES’.
Select emp.* from emp, dept where emp.deptno = dept.deptno and dname = ‘RESEARCH’
and hiredate in (select hiredate from emp, dept where emp.deptno = dept.deptno and
Opérateurs ensemblistes
Exercice 2
Soit la base de données relationnelle des vols quotidiens d’une compagnie aérienne qui contient les tables
Avion, Pilote et Vol.
11/12
13) Afficher les numéros des pilotes qui sont en service
14) Afficher les numéros des pilotes qui ne sont pas en service
15) Afficher les noms des pilotes qui conduisent un AIRBUS
Correction
1. Insert into avion values (100, 'AIRBUS', 300, 'RABAT'); Insert into avion values (101,'B737',250,'CASA'); Insert into
avion values (101, 'B737',220,'RABAT');
12. Select Nom, Adresse from Pilote, Vol where Pilote.NP= Vol.NP and NV='IT100' and NV='IT104';
15. Select Pilote.NOM from Pilote, Vol, Avion where Pilote.NP= Vol.NP and Avion.NA=Vol.NA and
Avion.NOM='AIRBUS';
12/12