Fiche d’exercices de Bases de données et SQL avec corrigé
Fiche d’exercices de Bases de données et SQL gratuite et imprimable : 8 exercices, du niveau facile au niveau examen, avec corrigé. Imprimez-la ou enregistrez-la en PDF.
Pour les enseignants : gratuite à imprimer, copier et utiliser en classe. Chaque nouvelle fiche a de nouvelles valeurs et son propre corrigé. Un lien vers ExamProblems sur la page de votre cours est apprécié.
Nom: ____________________ Date: ____________
1.Facile
Que renvoie un CROSS JOIN ?
AToutes les combinaisons de lignes des deux tables
BUniquement les lignes qui correspondent sur une colonne clé commune
CUniquement les lignes qui ne correspondent pas
DUniquement les lignes de la première table
2.Facile
Quel mot-clé SQL supprime les lignes en double d'un résultat ?
ASINGLE
BUNIQUE
CDISTINCT
DDIFFERENT
3.Facile
Qu'est-ce qu'une clé de substitution (surrogate key) ?
AUne clé qui fait référence à une autre table
BUne clé utilisée uniquement dans les vues
CUn identifiant artificiel sans signification métier, comme un id auto-incrémenté
DUne clé tirée de données réelles, comme une adresse e-mail
4.Moyen
Quelle requête renvoie le salaire le plus élevé de chaque service ?
ASELECT MAX(dept), salary FROM emp GROUP BY salary
BSELECT dept, MAX(salary) FROM emp GROUP BY dept
CSELECT dept, MAX(salary) FROM emp ORDER BY dept
DSELECT dept, salary FROM emp WHERE salary = MAX(salary)
5.Moyen
Une clé étrangère est déclarée avec ON DELETE CASCADE. Que se passe-t-il quand une ligne parente est supprimée ?
ALa clé étrangère des lignes enfants est mise à NULL automatiquement
BLa suppression est toujours refusée
CLes lignes enfants qui y font référence sont supprimées automatiquement
DLa ligne parente est copiée dans une table d'archive
6.Moyen
Quelle requête renvoie le nombre de commandes par client ?
ASELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
BSELECT DISTINCT COUNT(*) FROM orders
CSELECT customer_id FROM orders WHERE COUNT(*) > 0
DSELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
7.Difficile
Que montre EXPLAIN (ou EXPLAIN ANALYZE dans PostgreSQL) pour une requête ?
ALa signification de chaque mot-clé SQL de la requête
BUniquement une réécriture de la requête en notation d'algèbre relationnelle
CLa liste des utilisateurs qui ont exécuté la requête
DLe plan d'exécution choisi par l'optimiseur, comme les parcours et les méthodes de jointure
8.Difficile
Pourquoi de nombreux SGBD utilisent-ils le verrouillage à deux phases strict, en gardant les verrous exclusifs jusqu'à la validation ?
AIl rend les interblocages impossibles
BIl supprime le besoin d'un journal des transactions
CIl empêche les annulations en cascade, car personne ne peut lire des écritures non validées
DIl permet aux transactions de lire des données sales sans risque
Corrigé
1. A · Toutes les combinaisons de lignes des deux tables
2. C · DISTINCT
3. C · Un identifiant artificiel sans signification métier, comme un id auto-incrémenté
4. B · SELECT dept, MAX(salary) FROM emp GROUP BY dept
5. C · Les lignes enfants qui y font référence sont supprimées automatiquement
6. A · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
7. D · Le plan d'exécution choisi par l'optimiseur, comme les parcours et les méthodes de jointure
8. C · Il empêche les annulations en cascade, car personne ne peut lire des écritures non validées
Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.