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
En quoi UNION ALL diffère-t-il de UNION ?
AUNION ALL trie le résultat
BUNION ALL supprime les lignes en double
CUNION ALL conserve les lignes en double
DUNION ALL ne fonctionne que sur une seule table
2.Facile
Quel mot-clé donne à une colonne ou à une table un autre nom temporaire dans une requête ?
AALIAS
BRENAME
CAS
DNAME
3.Facile
Que fait COMMIT dans une transaction ?
AIl verrouille toute la base de données
BIl annule toutes les modifications effectuées depuis le début de la transaction
CIl crée une nouvelle table
DIl rend permanentes toutes les modifications de la transaction
4.Moyen
Pourquoi crée-t-on des index sur des colonnes ?
APour rendre les insertions et les mises à jour plus rapides sur ces colonnes
BPour accélérer les recherches et les jointures sur ces colonnes
CPour économiser de l'espace disque
DPour empêcher les valeurs NULL
5.Moyen
La troisième forme normale (3NF) élimine :
ALes index redondants sur des colonnes qui ne font pas partie d'une clé
BLes dépendances transitives entre attributs non clés
CLes valeurs atomiques
DLes clés composées
6.Moyen
Une colonne contient les valeurs 10, 20 et NULL. Que renvoie AVG(col) ?
A10
B30
CNULL
D15
7.Difficile
Après customers LEFT JOIN orders, pourquoi utiliser COUNT(o.id) plutôt que COUNT(*) pour compter les commandes par client ?
ACOUNT(o.id) ne compte que les clients distincts
BCOUNT(*) ignore les lignes contenant des valeurs NULL
CCOUNT(*) n'est pas autorisé après une jointure
DCOUNT(*) compte pour 1 la ligne remplie de NULL des clients sans commande
8.Difficile
Pourquoi une requête avec WHERE YEAR(order_date) = 2025 pourrait-elle ne pas utiliser un index sur order_date ?
ALes index ne fonctionnent jamais avec des dates
BAppliquer une fonction à la colonne empêche une simple recherche par plage dans l'index
CYEAR n'est pas du SQL valide
DUn index sur order_date n'est utilisé que pour les clauses ORDER BY, jamais pour WHERE
Corrigé
1. C · UNION ALL conserve les lignes en double
2. C · AS
3. D · Il rend permanentes toutes les modifications de la transaction
4. B · Pour accélérer les recherches et les jointures sur ces colonnes
5. B · Les dépendances transitives entre attributs non clés
6. D · 15
7. D · COUNT(*) compte pour 1 la ligne remplie de NULL des clients sans commande
8. B · Appliquer une fonction à la colonne empêche une simple recherche par plage dans l'index
Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.