Vous êtes sur la page 1sur 3

Bases de Données

TP n°2 : Langage de Manipulation des Données


Interrogation des Données
Enseignant : Mme Ben Saïd Salma

Exercice 1:
Soit le schéma relationnel de la base de données « pilotes-avions-vols ».

Pilote (numP, nomP, prenomP, ville, salaire)


Avion (numAv, typeAv, capacite, localisation)
Vol (numVol, # numP, # numAv, villeDep, villeAr)

Travail à faire
1- Créer une séquence sur le numéro du pilote commençant par 101 avec un pas de 2.
2- Créer une séquence sur le numéro de l’avion commençant par 1000 avec un pas de 2.
3- Créer une séquence sur le numéro du vol commençant par 712 avec un pas de 1.
4- Insérer des données suivantes dans les tables :
Pilote : (sq_Nump.Nextval, ‘Dalton’,’Jack’,’Californie’,6000)
(sq_Nump.Nextval, ‘Turan’,’Micke’,’New York’,6200)
(sq_Nump.Nextval, ‘Driss’,’Sami’,’Paris’,6500)
(sq_Nump.Nextval, ‘Durand’,’Richard’,’Marseille’,6600)
(sq_Nump.Nextval, ‘Marchant’,’Bertrand’,’Paris’,6100)
Avion: (sq_NumAv.Nextval, ‘AirBus A320’,150,’Paris’)
(sq_NumAv.Nextval, ‘AirBus A340’,295,’Paris’)
(sq_NumAv.Nextval, ‘Boeing 737’,135,’New York’)
(sq_NumAv.Nextval, ‘Boeing 767’,350,’Californie’)
(sq_NumAv.Nextval, ‘Boeing 787’,250,’Californie’)
Insérer 4 tuples dans la table Vol.
5- Les pilotes qui touchent exactement 6000 € ont une augmentation de salaire de 10%, mettre
à jour la table correspondante.
6- Supprimer le vol numéro 712.

7- Ecrire les requêtes SQL permettant d'afficher :


a) Tous les vols.
b) Nom, prénom et salaire des pilotes dont le salaire est entre 6200 € et 6500 €.
c) Nom, prénom et salaire des pilotes les mieux payés.
d) Caractéristiques des avions localisés à Paris.
e) Caractéristiques (NumAv, TypeAv, Capacite, Localisation) des avions localisés dans
la même ville que le pilote 'sami'.
f) Caractéristiques (NumVol, VilleDep, VilleAr, TypeAv, Nomp) du vol numéro 714.
g) Numéro et type des avions affectés à des vols.
h) Nombre total de vols.
Exercice 2
Soit le schéma relationnel de la base de données «Etudiant_Enseignant_Matiere_Evaluation» :
Etudiant (numEtu, nomEtu, prenomEtu, age, genre)
Enseignant (numEns, nomEns, prenomEns, grade)
Matiere (numMat, nomMat, coefficient, #numEns)
Evaluation (#numEtu, #numMat, note)

Page 1 /3
Travail à faire
1- Insérer des données de votre choix à toutes les tables du schéma ci-dessus.
2- Ecrire les requêtes SQL permettant d'afficher:
a) la liste de tous les étudiants.
b) la liste des matières enseignées par l'enseignant numéro 11.
c) le nombre d'enseignants dont le grade est "PRO"
d) la moyenne de l'étudiant numéro 15 arrondie à deux chiffres après la virgule. Définir
un alias de colonne.
Exercice 3
Soit le schéma relationnel suivant :
Employe ( idEmp, nom, d_Nais, adresse, grade, salaire, #idSup, #numDept)
Departement (numDept, nomDept, # idResp)
Travail à faire

1- Insérer des données dans chacune des tables.


2- Ecrire les requêtes permettant d'afficher :

a) le nom et le grade des employés du département 31 qui ont un grade que l'on ne
trouve pas dans le département 32.
b) le nom, le salaire et le numéro de département des employés qui gagnent plus qu'au
moins un employé du département 31, classés par numéro de département et salaire.
c) le nom, le salaire et le numéro de département des employés qui gagnent plus que
tous les employés du département 31, classés par numéro de département et salaire.
d) TOUS les employés (nom) avec leur chef (nom). Ceux qui n'ont pas de chef doivent
quand même être affichés.

Exercice 4
Soit le schéma relationnel suivant :
Machine (numMachine, désignation, dat_service, prix)
DemandePR (numDemande, dat_demande, observation, #code_machine)
PièceRech ( numPièce, désignation, prix)
LigneDemande(# numDmde, #numPièce, quantité_demandée)

Travail à faire

1. Ecrire les commandes SQL permettant d'insérer des lignes de données à chacune des tables avec
des données de votre choix.

2. Ecrire des requêtes SQL permettant de :


a) Créer une vue relative à toutes les informations d’entretien d’une machine suivant cet
affichage :

n_machine n_demande datDde n_pièce desgn qté

… … … … … …

Page 2 /3
b) Afficher toutes les machines qui ont été mises en service le même jour et qui ont nécessité
un entretien à la même date.
c) Afficher les machines qui n’ont nécessité aucun entretien, de deux manières différentes dont
l’une en utilisant l’opérateur EXISTS ou NOT EXISTS.
d) Afficher les machines qui ont nécessité un nombre de pièces de rechanges supérieur à 5.
e) Calculer la proportion de machines entretenues durant le dernier mois.
f) Afficher toutes les machines et leurs dates de demandes d’entretiens correspondantes, même
les machines qui n’ont jamais été entretenues doivent être affichées.

Exercice 5
Soit le schéma relationnel suivant :

Client (idClient, nom, ville)


Produit (idProduit, libellé, marque, prix , qtéStock)
Vente (#idClient,# idProduit, dateVente, qtéVendue)
Travail à faire : Ecrire des requêtes SQL permettant de :

a) Afficher les libellés des produits qui n’ont jamais été commandés.
b) Afficher les libellés des produits qui ont été acheté par TOUS les clients de ‘Nice’.
c) Afficher en une seule colonne les identifiants des produits de la marque ‘IBM’ et ceux
achetés par le client ‘C1’.
d) Afficher pour chaque produit la quantité totale vendue.
e) Donner les identifiants, les prix, les marques et la quantité maximale vendue de tous les
produits ‘IBM’, ‘Apple’ ou ‘Dec’ dont les quantités vendues sont > 10 et dont la quantité
totale vendue est supérieure à 500.
f) Créer une vue nommée InfoVente relative à tous les détails qui concernent chaque vente
(concernant la vente, le produit et le client).
g) Afficher pour chaque produit tous les détails qui le concerne et la quantité vendue
correspondante, les produits qui n’ont jamais été vendus doivent figurer aussi dans la liste
d’affichage.

Page 3 /3