Académique Documents
Professionnel Documents
Culture Documents
Nom :
Classe :
Contrôle sur les Bases de Données
Première partie :
1) QCM (cochez LA bonne réponse) /3,5
2) Questions de cours /4
1
a) Expliquez le rôle d’une clé primaire dans une table :
Crée un lien entre deux tables en faisant référence à la clé primaire de l’autre table.
d) Expliquez pourquoi on ne peut pas ajouter de tuple à une table, si elle a une clé
étrangère qui fait référence à une clé primaire d’une table vide :
2
Deuxième partie :
3) Exercices (compréhension) /4
En prenant en compte comme base de données les deux tables suivantes,
répondre aux questions
Table Joueur
id_Joueur pseudo id_Faction classe
1 Bobby 1 Mage
2 Grayson 2 Guerrier
3 Ximena 2 Prêtre
Table Faction
1 52 30 Valar
2 43 35 Gondor
3 65 35 Mordor
52, 43, 65
‘Grayson’, ‘Ximena’
3
c) Qu’affiche la requête SQL suivante:
SELECT *
FROM Faction
WHERE pourcentage_victoire>33
‘Groyson’, ‘Xinema’
4
4) Exercices (réalisation) /8,5
A partir de l’énoncé suivant, réaliser le schéma relationnel de la base de données
correspondante:
Une gare a besoin d’organiser ses données. Pour cela elle va essayer de ranger ses
données dans 3 catégories différentes.
Ses trains ont tous un id, un nom, un horaire, une gare de départ et une gare
d’arrivée.
Ses tickets ont tous un id, un id du train correspondant, une place, un prix et un id
du client correspondant
Ses clients ont tous un id, un prénom, un nom, une adresse mail et un âge.
5
b) Réaliser une requête d’insertion permettant d’enregistrer le client Jean Jean, qui
a 40 ans, d’id 2 et avec le mail ‘jeanjean@jeanmail.jean’
c) Réaliser une requête pour modifier toutes les gares de départ des trains qui
partent de ‘Paris_GareDeLyon’ en ‘Paris_GareDuNord’
UPDATE Trains
SET gare départ = ‘Paris_GareDuNord’
WHERE gare départ = ‘Paris_GareDeLyon’
d) Réaliser une requête pour récupérer les noms de tous les trains
SELECT nom
FROM Trains
e) Réaliser une requête pour récupérer la somme des prix de tous les tickets
SELECT SUM(prix)
FROM Tickets
f) Réaliser une requête pour récupérer le nom des trains qui ont des tickets ayant un
prix supérieur à 30
SELECT DISTINCT nom
FROM Trains
JOIN Tickets ON Tickets.idTrains = Trains.idTrains
WHERE prix > 30
6
g) Réaliser une requête pour récupérer la moyenne d’âge de tous les clients ayant
un ticket pour le train de nom ‘TGV’
SELECT AVG(age)
FROM Clients
JOIN Tickets ON Tickets.idClients = Clients.idClients
JOIN Trains ON Tickets.idTrains = Trains.idTrains
WHERE Trains.nom = ‘TGV’
h) Réaliser une requête pour récupérer les horaires (différents) des trains ayant des
clients de moins de 25 ans.
SELECT DISTINCT horaires
FROM Trains
JOIN Clients ON Clients.idClients = Tickets.idClients
JOIN Tickets ON Tickets.idTrains = Train.idTrains
WHERE age < 25
Question BONUS :
Voici une liste des domaines existants :
- Entier (INT)
- Chaîne de caractères (VARCHAR)
- Date (DATE)
- Décimal (NUM)
FACILE EZZZZZZZ