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 ?

  1. AUNION ALL trie le résultat
  2. BUNION ALL supprime les lignes en double
  3. CUNION ALL conserve les lignes en double
  4. 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 ?

  1. AALIAS
  2. BRENAME
  3. CAS
  4. DNAME
3.Facile

Que fait COMMIT dans une transaction ?

  1. AIl verrouille toute la base de données
  2. BIl annule toutes les modifications effectuées depuis le début de la transaction
  3. CIl crée une nouvelle table
  4. DIl rend permanentes toutes les modifications de la transaction
4.Moyen

Pourquoi crée-t-on des index sur des colonnes ?

  1. APour rendre les insertions et les mises à jour plus rapides sur ces colonnes
  2. BPour accélérer les recherches et les jointures sur ces colonnes
  3. CPour économiser de l'espace disque
  4. DPour empêcher les valeurs NULL
5.Moyen

La troisième forme normale (3NF) élimine :

  1. ALes index redondants sur des colonnes qui ne font pas partie d'une clé
  2. BLes dépendances transitives entre attributs non clés
  3. CLes valeurs atomiques
  4. DLes clés composées
6.Moyen

Une colonne contient les valeurs 10, 20 et NULL. Que renvoie AVG(col) ?

  1. A10
  2. B30
  3. CNULL
  4. D15
7.Difficile

Après customers LEFT JOIN orders, pourquoi utiliser COUNT(o.id) plutôt que COUNT(*) pour compter les commandes par client ?

  1. ACOUNT(o.id) ne compte que les clients distincts
  2. BCOUNT(*) ignore les lignes contenant des valeurs NULL
  3. CCOUNT(*) n'est pas autorisé après une jointure
  4. 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 ?

  1. ALes index ne fonctionnent jamais avec des dates
  2. BAppliquer une fonction à la colonne empêche une simple recherche par plage dans l'index
  3. CYEAR n'est pas du SQL valide
  4. DUn index sur order_date n'est utilisé que pour les clauses ORDER BY, jamais pour WHERE

Corrigé

  1. 1. C · UNION ALL conserve les lignes en double
  2. 2. C · AS
  3. 3. D · Il rend permanentes toutes les modifications de la transaction
  4. 4. B · Pour accélérer les recherches et les jointures sur ces colonnes
  5. 5. B · Les dépendances transitives entre attributs non clés
  6. 6. D · 15
  7. 7. D · COUNT(*) compte pour 1 la ligne remplie de NULL des clients sans commande
  8. 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.