Académique Documents
Professionnel Documents
Culture Documents
1. Préambule
Le but du TD est d’étudier des requêtes SQL avancé
2. Requêtes
On donne, ci-dessous, la description du schéma global
Vol(novol, vildep, vilar ,dep h ,dep mn ,ar h ,ar mn ) ; Schéma relationnel décrivant les vols connus par leur numéro, la
ville de départ, celle d’arrivée et les horaires de départ et arrivée (en h et mn)
Pilote(nopil ,nom,adresse ,sal ,embauche) ; Schéma relationnel décrivant les pilotes identifiés par leur numéro et ayant
un nom, une adresse, un salaire et une date d’embauche.
Appareil(codetype, nbplace ,famille) ; Schéma relationnel décrivant les appareils ayant un codetype comme identifiant,
un nom de type ici appelé famille et une capacité (nb de places)
Avion(nuavion ,codetype,annserv,nom,nbhvol,compagnie) ; Schéma relationnel décrivant les avions ayant un numéro, un
codetyp, l’année de mise en service, le nombre d’heures de vol et la compagnie à laquelle ils sont rattachés.
Affectation(vol,date vol ,pilote, avion,nbpass ) ; Schéma relationnel décrivant l’affectation effectuée : pour un vol à une
date donnée et pour un pilote donné on a affecté un avion et un nbre de passagers.
Une instanciation peut être
insert into appareil values(’74E’,150,’BOEING 747-400’);
insert into appareil values(’AB3’,180,’AIRBUS A300’);
insert into appareil values(’741’,100,’BOEING 747-100’);
insert into appareil values(’734’,450,’BOEING 737-400’);
insert into appareil values(’SSC’,80,’CONCORDE’);
Nom des pilotes et numéro du vol effectués pour tous les pilotes (même les pilotes n’ayant pas volé).
select distinct nom,vol
from Pilote
LEFT OUTER JOIN Affectation ON nopil=pilote;
ou
select distinct nom,vol
from Affectation
RIGHT OUTER JOIN Pilote ON nopil=pilote;
En sql-89 – beaucoup plus complexe
select distinct nom,vol
from Pilote, Affectation
where nopil=pilote
union
select nom,NULL
from Pilote
where not exists (select * from Affectation where Pilote.nopil= Affectation.pilote);
Remarques :
- On peut ainsi joindre plusieurs tables avec la syntaxe SQL2
- La jointure FULL OUTER JOIN permet d’extraire des n-uplets ne répondant pas aux critères de jointure et les deux
Master1 Info IFPRU 2007-2008 4
tables jouent un rôle symétrique. Nom des pilotes et numéro du vol effectués pour tous les pilotes (même les pilotes
n’ayant pas volé et les vols n’ayant pas encore de pilote). -)
select distinct nom,vol
from Affectation
FULL OUTER JOIN Pilote ON nopil=pilote;
ici pas de changement mais en fait on pourrait récupérer les pilotes sans affectations et les affectations sans pilote
– Libellé vol, avion et type des vols ayant été affrétés.
select A.vol,A.avion,C.type
From affectation A, vol B, avion C, appareil D
where A.vol=B.novol and A.avion=C.nuavion and C.type=D.codetype;
ou
select vol
from affectation
join vol on vol=novol
join avion on avion=nuavion
join appareil on type=codetype;
– Traiter la requête du TP relative à traduire la description de DESC avec la prise en compte des contraintes
select constraint\_name, constraint\_type
from user\_constraints
where table\_name =’PILOTE’;
NOPIL PILOTE\_PK P
ADRESSE VARCHAR2
SAL NUMBER
Master1 Info IFPRU 2007-2008 5
EMBAUCHE DATE
NOM VARCHAR2