SQL
Il s'agit de l'exercice 1 de ce sujet
L'énoncé de cet exercice utilise les mots du langage SQL suivants : SELECT FROM, WHERE, JOIN ON, INSERT INTO VALUES, UPDATE, SET, DELETE, COUNT, AND,OR.
On considère dans cet exercice une gestion simplifiée des emprunts des ouvrages d'un CDI. La base de données utilisée sera constituée de trois relations (ou tables) nommées Eleves, Livres et Emprunts selon le schéma relationnel suivant :
Dans ce schéma relationnel,
- un attribut souligné indique qu'il s'agit d’une clé primaire ;
- le symbole
#devant un attribut indique qu'il s'agit d’une clé étrangère ; - la flèche associée indique l'attribut référencé par la clé étrangère.
Ainsi, l'attribut idEleve de la relation Emprunts est une clé étrangère qui fait référence à la clé primaire idEleve de la relation Eleves.
Question 1
Expliquer pourquoi le code SQL ci-dessous provoque une erreur.
INSERT INTO Eleves VALUES (128, 'Dupont', 'Jean', 'T1'); INSERT INTO Eleves VALUES (200, 'Dupont', 'Jean', 'T1'); INSERT INTO Eleves VALUES (128, 'Dubois', 'Jean', 'T2');
Question 2
Dans la définition de la relation Emprunts, qu'est-ce qui assure qu'on ne peut pas enregistrer un emprunt pour un élève qui n’a pas encore été inscrit dans la relation Eleves ?
Question 3
Écrire une requête SQL qui renvoie les titres des ouvrages de Molière détenus par le CDI.
Question 4
Décrire le résultat renvoyé par la requête ci-dessous.
SELECT COUNT(*) FROM Eleves WHERE classe = 'T2';
Question 5
Camille a emprunté le livre Les misérables. Le code ci-dessous a permis d'enregistrer cet emprunt.
INSERT INTO Emprunts VALUES (640, 192, '9782070409228', '2020-09-15', NULL);
Camille a restitué le livre le 30 septembre 2020.
Recopier et compléter la requête ci-dessous de manière à mettre à jour la date de retour dans la base de données.
UPDATE Emprunts SET ........................ WHERE ........................ ;
Question 6
Décrire le résultat renvoyé par la requête ci-dessous.
SELECT DISTINCT nom, prenom FROM Eleves, Emprunts WHERE Eleves.idEleve = Emprunts.idEleve AND Eleves.classe = 'T2';
Question 7
Écrire une requête SQL qui permet de lister les noms et prénoms des élèves qui ont emprunté le livre Les misérables.

