Vous êtes sur la page 1sur 5

TP 1 Base de données : Langage SQL

Enseignant : Mehdi Achour


Année universitaire : 2023/2024
Filière : 2émé SI Groupe 01
Etudiante : Ele Akacha

Compte Rendu :
-- Création des tables
CREATE TABLE Avion (
NA INT PRIMARY KEY,
Nom VARCHAR(12),
Capacité INT,
Localité VARCHAR(10)
);
CREATE TABLE Pilote (
NP INT PRIMARY KEY,
Nom VARCHAR(25),
Adresse VARCHAR(40)
);
CREATE TABLE Vol (
NV INT PRIMARY KEY,
NP INT,
NA INT,
VD VARCHAR(10),
VA VARCHAR(10),
HD INT,
HA INT,
FOREIGN KEY (NP) REFERENCES Pilote(NP),
FOREIGN KEY (NA) REFERENCES Avion(NA)
);

-- Insertion des données


INSERT INTO Avion VALUES (100, 'AIRBUS', 300, 'RABAT');
INSERT INTO Avion VALUES (101, 'B737', 250, 'CASA');
INSERT INTO Avion VALUES (102, 'B737', 220, 'RABAT');

INSERT INTO Pilote VALUES (1, 'Pilote1', 'Adresse1');


INSERT INTO Pilote VALUES (2, 'Pilote2', 'Adresse2');
INSERT INTO Pilote VALUES (3, 'Pilote3', 'Adresse3');

INSERT INTO Vol VALUES (1, 1, 100, 'RABAT', 'CASA', 1200, 1400);
INSERT INTO Vol VALUES (2, 2, 101, 'CASA', 'RABAT', 1500, 1700);
INSERT INTO Vol VALUES (3, 3, 102, 'RABAT', 'CASA', 1100, 1300);
INSERT INTO Vol VALUES (4, 1, 101, 'CASA', 'RABAT', 1800, 2000);
INSERT INTO Vol VALUES (5, 2, 100, 'RABAT', 'CASA', 1400, 1600);
-- Requêtes demandées
-- 2) Afficher tous les avions
SELECT * FROM Avion;

-- 3) Afficher tous les avions par ordre croissant sur le nom


SELECT * FROM Avion ORDER BY Nom;

-- 4) Afficher les noms et les capacités des avions


SELECT Nom, Capacité FROM Avion;

-- 5) Afficher les localités des avions sans redondance


SELECT DISTINCT Localité FROM Avion;

-- 6) Afficher les avions dans la localité est Rabat ou Casa


SELECT * FROM Avion WHERE Localité IN ('RABAT', 'CASA');
-- 7) Modifier la capacité de l’avion numéro 101, la nouvelle capacité et 220
UPDATE Avion SET Capacité = 220 WHERE NA = 101;

-- 8) Supprimer les avions dans la capacité et inférieure à 200


DELETE FROM Avion WHERE Capacité < 200;

-- 9) Afficher la capacité maximale, minimale, moyenne des avions


SELECT MAX(Capacité) AS Capacité_Max, MIN(Capacité) AS Capacité_Min, AVG(Capacité)
AS Capacité_Moyenne FROM Avion;

-- 10) Afficher les données des avions dont la capacité est la plus basse
SELECT * FROM Avion WHERE Capacité = (SELECT MIN(Capacité) FROM Avion);

-- 11) Afficher les données des avions dont la capacité est supérieure à la capacité moyenne
SELECT * FROM Avion WHERE Capacité > (SELECT AVG(Capacité) FROM Avion);
-- 12) Afficher le nom et l’adresse des pilotes assurant les vols IT100 et IT104 (jointure entre
table pilote et vol)
SELECT Pilote.Nom, Pilote.Adresse FROM Pilote INNER JOIN Vol ON Pilote.NP = Vol.NP
WHERE Vol.NV IN (1, 4);

-- 13) Afficher les numéros des pilotes qui sont en service


SELECT DISTINCT NP FROM Vol;

-- 14) Afficher les numéros des pilotes qui ne sont pas en service
SELECT NP FROM Pilote WHERE NP NOT IN (SELECT DISTINCT NP FROM Vol);

-- 15) Afficher les noms des pilotes qui conduisent un AIRBUS


Method 1 :
SELECT DISTINCT Pilote.Nom FROM Pilote INNER JOIN Vol ON Pilote.NP = Vol.NP INNER
JOIN Avion ON Vol.NA = Avion.NA WHERE Avion.Nom = 'AIRBUS';
Method 2:
SELECT DISTINCT Nom
FROM Pilote
WHERE NP IN (
SELECT DISTINCT Vol.NP
FROM Vol, Avion
WHERE Vol.NA = Avion.NA AND Avion.Nom = 'AIRBUS'
);

Vous aimerez peut-être aussi