Vous êtes sur la page 1sur 6

République Tunisienne

Ministère de l’Enseignement Supérieur


et de la Recherche Scientifique

Algèbre relationnelle & Langage SQL


EXERCICES avec SOLUTIONS
Semestre 1 – 2022/2023

Considérez les relations suivantes (Les clés étrangères sont préfixées par #):
Pilote (IdPilote, NomPilote, Sexe, Age, NumTelMob)
Avion(IdAvion, Constructeur, Modele, AnFabrication, NbrePlaces)
Ville(CodeVille, NomVille, NomPays)
Aeroport(CodeAeroport, NomAeroport, #CodeVille)
VolRegulier(NumVol, #VilleDepart, #VilleArriv, JoursVols)
Vol(#NumVol, DateVol, #IdPilote, #IdAvion, #Aeroport, NbVoyageurs)

1-/ Exprimez les requêtes suivantes en utilisant les opérateurs de l’algèbre relationnelle:
Requête#1: Liste des Pilotes de sexe féminin.
σ (Sexe=”F”) ( Pilote)

Requête#2: Liste des IdAvion et noms constructeurs des avions ayant un nombre de
places supérieur à 100.
π IdAvion, Constructeur (σ (NbrePlaces > 100) ( Avion ) )

Requête#3: Liste des noms et des numéros de téléphones mobiles des pilotes âgés de
moins de 30 ans.
π NomPilote, NumTelMob (σ (Age < 30) ( Pilote ) )

Requête#4: Donnez les noms des villes et des noms de leurs aéroports.
π NomVille, NomAeroport ( Ville (Ville.CodeVille = Aeroport.CodeVille) Aeroport ))

Requête#5: Donnez la liste des numéros de vols desservant "Tokyo".


π NumVol (σ (NomVille =”Tokyo”) (VolRegulier (VolRegulier.VilleArriv=Ville.CodeVille) Ville) )
En utilisant le renommage, l’expression precedante peut s’ecrire:
VolRegVille  VolRegulier (VolRegulier.VilleArriv=Ville.CodeVille) Ville
VolRegVilleTok  σ (NomVille =”Tokyo”) (VolRegVille) )
Resultat  π NumVol (VolRegVilleTok )

Algèbre relationnelle & Langage SQL, Exercices avec solutions Préparé par: Samir BOUCETTA 1 of 6
Requête#6: Donnez les numéros et date de vols effectués par des pilotes âgés de plus de
50 ans.
π NumVol, DateVol (σ (Age > 50) (Vol (Vol.IdPilote =Pilote.IdPilote) Pilote) )

Requête#7: Donnez les numéros de vols effectués par un avion construit en 2020.
π NumVol (σ (AnFabrication = 2020) (Vol (Vol.IdAvion =Avion.IdAvion) Avion) )

Requête#8: Donnez les numéros et dates des vols complets (Nombre de places = Nombre
de voyageurs).
π NumVol, DateVol (σ (NbVoyageurs = NbrePlaces) (Vol (Vol.IdAvion =Avion.IdAvion) Avion) )

Requête#9: Donnez les numéros de vols effectués le "19/12/2021" vers l’aéroport du


"Roi Mohamed V".
VolAero  Vol (Vol.Aeroport = Aeroport.CodeAeroport) Aeroport
VolAero1219RoiV  σ (DateVol="19/12/2021" AND NomAeroport=“Roi Mohamed V”) (VolAero)
Resultat  π NumVol (VolAero1219RoiV)

2-/ Langage SQL


2-1) Langage de Définition des Données
a) Donnez la commande SQL qui permet de créer la relation Aeroport.
CREATE TABLE Aeroport
( CodeAeroport CHAR(5) NOT NULL,
NomAeroport VARCHAR(30) NOT NULL,
CodeVille CHAR(3),
PRIMARY KEY (CodeAeroport),
FOREIGN KEY (CodeVille) REFERENCES Ville );

b) Donnez la commande SQL qui permet de supprimer tous les pilotes âgés de
plus de 60 ans.

DELETE FROM Pilote


WHERE Age > 60 ;

c) Donnez la commande SQL qui permet d’insérer un tuple dans la relation Vol.
Donner des valeurs de votre choix.

INSERT INTO Vol


VALUES (366, ’19-02-2022’, '0123', 'AB320', 'TNCar', 115) ;
Algèbre relationnelle & Langage SQL, Exercices avec solutions Préparé par: Samir BOUCETTA 2 of 6
2-2) Ecrire toutes les requêtes de l’exercice précédent en langage SQL.

Requête#1: Liste des Pilotes de sexe féminin.


SELECT *
FROM Pilote
WHERE Sexe = "F" ;

Requête#2: Liste des IdAvion et noms constructeurs des avions ayant un nombre de
places supérieur à 100.

SELECT IdAvion, Constructeur


FROM Avion
WHERE NbrePlaces > 100 ;

Requête#3: Liste des noms et des numéros de téléphones mobiles des pilotes âgés de
moins de 30 ans.
SELECT NomPilote, NumTelMob
FROM Pilote
WHERE Age < 30 ;

Requête#4: Donnez les noms des villes et des noms de leurs aéroports.

SELECT NomVille, NomAeroport


FROM Ville, Aeroport
WHERE Ville.CodeVille = Aeroport.CodeVille ;

Ou bien, en utilisant des alias :

SELECT V.NomVille, A.NomAeroport


FROM Ville AS V, Aeroport AS A
WHERE V.CodeVille = A.CodeVille ;

Requête#5: Donnez la liste des numéros de vols desservant "Tokyo".

SELECT Vo.NumVol
FROM VolRegulier Vo, Ville Vi
WHERE (Vo.VilleArriv = Vi. CodeVille) AND (Vi.NomVille LIKE "%Tokyo%") ;

Algèbre relationnelle & Langage SQL, Exercices avec solutions Préparé par: Samir BOUCETTA 3 of 6
Requête#6: Donnez les numéros et date de vols effectués par des pilotes âgés de plus de
50 ans.

SELECT V.NumVol, V.DateVol


FROM Vol AS V , Pilote AS P
WHERE (V.IdPilote = P.IdPilote) AND (P.Age > 50) ;

Requête#7: Donnez les numéros de vols effectués par un avion construit en 2020.

SELECT V.NumVol
FROM Vol AS V , Avion AS A
WHERE (V.IdAvion = A.IdAvion) AND (A.AnFabrication = 2020) ;

Requête#8: Donnez les numéros et dates des vols complets (Nombre de places = Nombre
de voyageurs).

SELECT V.NumVol, V.DateVol


FROM Vol AS V , Avion AS A
WHERE (V.IdAvion = A.IdAvion) AND (V.NbVoyageurs =A.NbrePlaces) ;

Requête#9: Donnez les numéros de vols effectués le "19/12/2021" vers l’aéroport du "Roi
Mohamed V".

SELECT V.NumVol
FROM Vol AS V , Aeroport AS A
WHERE (V.Aeroport=A.CodeAeroport) AND (V.DateVol = "19/12/2021")
AND (A.NomAeroport LIKE "%Roi Mohamed V%") ;

2-3) Ecrire les requêtes suivantes en langage SQL.

Requête#10: Donnez les modèles des avions, les dates et le nombre de voyageurs des vols
effectués vers "Alger".

SELECT A.Modele, V.DateVol, V.NbVoyageurs


FROM Avion A, Vol V, VolRegulier Vr, Ville Vi
WHERE (A.IdAvion = V.IdAvion) AND (V.NumVol = Vr.NumVol) AND
(Vr.VilleArriv = Vi.CodeVille) AND (Vi.NomVille LIKE "%Alger%") ;

Algèbre relationnelle & Langage SQL, Exercices avec solutions Préparé par: Samir BOUCETTA 4 of 6
Requête#11: Donnez tous les noms et âgés des pilotes ayant effectué un vol sur un avion
disposant d’un nombre de places supérieur à 150.

SELECT P.NomPilote, P.Age


FROM Pilote P, Vol V, Avion A
WHERE (P.IdPilote = V.IdPilote) AND (V.IdAvion = A.IdAvion)
AND (A.NbrePlaces > 150) ;

Requête#12: Donnez les noms des pilotes ayant effectué un vol vers "Caire".

SELECT P.NomPilote
FROM Pilote P, Vol V, VolRegulier Vr, Ville Vi
WHERE (P.IdPilote = V.IdPilote) AND (V.NumVol = Vr.NumVol) AND
(Vr.VilleArriv = Vi.CodeVille) AND (Vi.NomVille LIKE "%Caire%") ;

Requête#13: Donnez les noms des pilotes et le nombre total de vols qu’ils ont effectué
vers "Caire".

SELECT P.NomPilote, Count(V.NumVol)


FROM Pilote P, Vol V, VolRegulier Vr, Ville Vi
WHERE (P.IdPilote = V.IdPilote) AND (V.NumVol = Vr.NumVol) AND
(Vr.VilleArriv = Vi.CodeVille) AND (Vi.NomVille LIKE "%Caire%")
GROUP BY P.NomPilote ;

Requête#14: Donnez les noms des pilotes et le nombre total de vols qu’ils ont effectué
vers "Caire" triés par ordre décroissant du nombre total de vols.

SELECT P.NomPilote, Count(V.NumVol)


FROM Pilote P, Vol V, VolRegulier Vr, Ville Vi
WHERE (P.IdPilote = V.IdPilote) AND (V.NumVol = Vr.NumVol) AND
(Vr.VilleArriv = Vi.CodeVille) AND (Vi.NomVille LIKE "%Caire%")
GROUP BY P.NomPilote
ORDER BY Count(V.NumVol) DESC ;

Algèbre relationnelle & Langage SQL, Exercices avec solutions Préparé par: Samir BOUCETTA 5 of 6
Requête#15: Donnez les noms des pilotes et le nombre total de vols complets qu’ils ont
effectué vers "Djeddah".

SELECT P.NomPilote, Count(V.NumVol)


FROM Pilote P, Vol V, VolRegulier Vr, Ville Vi, Avion A
WHERE (P.IdPilote = V.IdPilote) AND (V.NumVol = Vr.NumVol) AND
(Vr.VilleArriv = Vi.CodeVille) AND (V.IdAvion=A.IdAvion) AND
(V.NbVoyageurs=A.NbrePlaces) AND (Vi.NomVille LIKE "%Djeddah%")
GROUP BY P.NomPilote ;

Requête#16: Donnez les noms et âges des pilotes qui ont effectué un nombre total de vols
complets supérieur à 10.

SELECT P.NomPilote, P.Age, Count(V.NumVol)


FROM Pilote P, Vol V, Avion A
WHERE (P.IdPilote = V.IdPilote) AND (V.IdAvion=A.IdAvion) AND
(V.NbVoyageurs=A.NbrePlaces)
GROUP BY P.NomPilote, P.Age
HAVING Count(V.NumVol) > 10;

Algèbre relationnelle & Langage SQL, Exercices avec solutions Préparé par: Samir BOUCETTA 6 of 6

Vous aimerez peut-être aussi