Documente Academic
Documente Profesional
Documente Cultură
select plnom
from pilote
where plnum in (select plnum from vol where avnum in
(select avnum from avion
where upper(avnom)like 'A%')
);
b) Quels sont les noms des avions avec leurs numéros et leurs localisations
(autre que Nice), ayant une capacité supérieure à 200 avec un tri
décroissant sur le numéro d'avion?
c) Quels sont les noms des pilotes qui assurent au moins un vol au départ de
Paris?
Exprimez cette requête de 7 manières différentes.
select plnom
from pilote, avion
where (pilote.plnum=vol.plnum) AND
(upper(villedep) = 'PARIS');
select plnom
from pilote
where plnum in (select plnum
from vol
where upper(villedep) = 'PARIS');
select plnom
from pilote
where plnum = any (select plnum
from vol
where upper(villedep) = 'PARIS');
select plnom
from pilote
where 'PARIS' in ( select upper(villedep)
1
from vol
where pilote.plnum=vol.plnum);
select plnom
from pilote
where 'PARIS' = any ( select upper(villedep)
from vol
where pilote.plnum=vol.plnum);
select plnom
from pilote
where exists (select *
from vol
where (pilote.plnum=vol.plnum) AND
(upper(villedep) = 'PARIS'));
select plnom
from pilote
where 0 < ( select count(*)
from vol
where (pilote.plnum=vol.plnum)
and (upper(villedep) = 'PARIS'));
d) Noms des pilotes dont le salaire est le même que celui de MIRANDA ou de
LAHIRE?
select x.plnom
from pilote x, pilote y
where (x.salaire = y.salaire) AND
(upper(y.plnom) in ('MIRANDA', 'LAHIRE')AND
(upper(x.plnom) not in ('MIRANDA', 'LAHIRE'));
e) Quels sont les noms des avions dont la capacité est supérieure à toutes
les capacités des avions localisées à NICE?
select avnom
from avion
where capacite > (select max(capacite)
from avion
where upper(localisation) = 'NICE');
f) Quels sont les noms des avions dont la capacité est supérieure à la
capacité d'au moins un avion localisé à NICE?
select avnom
from avion
where capacite > (select min(capacite)
from avion
where upper(localisation) = 'NICE');
2
from pilote x, pilote y
where (x.ville = y.ville) and (x.plnom < y.plnom);
h) Quels sont les numéros des pilotes qui conduisent tous les Airbus de la
compagnie?
select plnom
from pilote
where not exists
(select *
from avion
where (upper(avnom) like 'A%') and
not exists (select *
from vol
where (vol.plnum = pilote.plnum)
and (vol.avnum = avion.avnum)));
i) Créez la liste des logins des pilotes construits avec les sept premières
lettres du nom de famille concaténées à l’initiale du prénom.
j) Donnez le nom et prénoms des pilotes et pour ceux qui sont en service le
numéro du vol qu’ils assurent.
k) Quelle est la commande SQL qui permet de créer une table TEMP identique en
intention à PILOTE et telle que son extension est vide.
o) Quels sont les noms des employés qui ont été recrutés dans la journée ?
p) Quelles sont les fonctions exercées par les employés qui travaillent dans
un des départements situés à 'CHICAGO' ?
3
select distinct job from emp
where deptno in (select deptno from dept where upper(loc)='CHICAGO');
select empno
from emp
where comm = ( select min(comm)from emp
where comm is not null and comm>0
);
u) Donner la liste des employés embauchés le même mois et la même année que
l'employé numéro 7844?
4
Corrigé TP fournisseurs / Pieces
Gestion des utilisateurs et des privileges
conn system/manager@xepdb1
grant connect, resource to ref identified by ref quota unlimited on
users ;
grant connect, resource to approv identified by approv quota unlimited on
users ;
grant create session, create synonym to user3 identified by user3 ;
conn ref/ref@xepdb1
create table f (
fno varchar2(4) constraint f_pk primary key,
fnom varchar2(10) ,
statut number(2),
ville varchar2(20),
datenais date
);
create table p (
pno varchar(4) constraint p_pk primary key,
pnom varchar2(10) ,
couleur varchar2(10),
poids number(3),
ville varchar2(20)
);
conn approv/approv@xepdb1
create table fp (
fno varchar2(4),
pno varchar2(4),
qtee number(3),
constraint fp_pk primary key (fno, pno),
constraint fp_f_fk foreign key (fno) references ref.f(fno),
constraint fp_p_fk foreign key (pno) references ref.p(pno));
5
grant select on fp to user3;
conn user3/user3@xepdb1
create synonym f for ref.f;
create synonym p for ref.p;
create synonym fp for approv.fp;
select fno
from f
where statut < (select avg(statut) from f);
select fno
from f x
where statut >= (select avg(statut)
from f y
where upper(x.ville)=upper(y.ville));
select pnom
from fp, p
where fp.pno=p.pno
group by pnom
having(count(fno)>1);
select fnom
from f
where fno in (select distinct fno
from fp
where pno in (select distinct pno
from p
where upper(couleur)=’ROUGE’
6
)
);
select fno
from fp
where pno in (select distinct pno
from fp
where upper(fno)=’F2’
);
select fnom
from fp, f
where fp.fno = f.fno;
select fno
from f
minus
select fno
from fp, f
where fp.fno = f.fno;
7
Corrigé TP Parcours hiérarchique sous Oracle
conn scott/tiger@xepdb1
HIERARCHIE
--------------------
KING
JONES
SCOTT
ADAMS
FORD
SMITH
BLAKE
ALLEN
WARD
MARTIN
TURNER
JAMES
CLARK
MILLER
FORD_SUP
-------------------
FORD
JONES
KING
8
--- Les supérieurs hiérarchiques direct de 'FORD' :
FORD_SUP
-------------------
JONES
SUB_KING
----------
ADAMS
ALLEN
BLAKE
CLARK
FORD
JAMES
JONES
MARTIN
MILLER
SCOTT
SMITH
TURNER
WARD
9
SUB_KING
-------------------
ADAMS
ALLEN
BLAKE
CLARK
JAMES
JONES
MARTIN
MILLER
SCOTT
SMITH
TURNER
WARD
Première solution
Deuxième solution
SUB_KING
----------
ADAMS
ALLEN
BLAKE
CLARK
JAMES
JONES
KING
MARTIN
MILLER
SCOTT
TURNER
WARD
10
--- Les employés avec la valeur de CONNECT_BY_ISLEAF
---
select empno, ename, connect_by_root ename as Chef
from emp
connect by prior empno = mgr
start with mgr is null;
11
SELECT name, SUM(sal) "Total_Salary"
FROM ( SELECT CONNECT_BY_ROOT ename as name, Sal
FROM emp
CONNECT BY PRIOR empno = mgr)
GROUP BY name;
12