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 ?

  1. AToutes les combinaisons de lignes des deux tables
  2. BUniquement les lignes qui correspondent sur une colonne clé commune
  3. CUniquement les lignes qui ne correspondent pas
  4. DUniquement les lignes de la première table
2.Facile

Quel mot-clé SQL supprime les lignes en double d'un résultat ?

  1. ASINGLE
  2. BUNIQUE
  3. CDISTINCT
  4. DDIFFERENT
3.Facile

Qu'est-ce qu'une clé de substitution (surrogate key) ?

  1. AUne clé qui fait référence à une autre table
  2. BUne clé utilisée uniquement dans les vues
  3. CUn identifiant artificiel sans signification métier, comme un id auto-incrémenté
  4. 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 ?

  1. ASELECT MAX(dept), salary FROM emp GROUP BY salary
  2. BSELECT dept, MAX(salary) FROM emp GROUP BY dept
  3. CSELECT dept, MAX(salary) FROM emp ORDER BY dept
  4. 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 ?

  1. ALa clé étrangère des lignes enfants est mise à NULL automatiquement
  2. BLa suppression est toujours refusée
  3. CLes lignes enfants qui y font référence sont supprimées automatiquement
  4. DLa ligne parente est copiée dans une table d'archive
6.Moyen

Quelle requête renvoie le nombre de commandes par client ?

  1. ASELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  2. BSELECT DISTINCT COUNT(*) FROM orders
  3. CSELECT customer_id FROM orders WHERE COUNT(*) > 0
  4. DSELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
7.Difficile

Que montre EXPLAIN (ou EXPLAIN ANALYZE dans PostgreSQL) pour une requête ?

  1. ALa signification de chaque mot-clé SQL de la requête
  2. BUniquement une réécriture de la requête en notation d'algèbre relationnelle
  3. CLa liste des utilisateurs qui ont exécuté la requête
  4. 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 ?

  1. AIl rend les interblocages impossibles
  2. BIl supprime le besoin d'un journal des transactions
  3. CIl empêche les annulations en cascade, car personne ne peut lire des écritures non validées
  4. DIl permet aux transactions de lire des données sales sans risque

Corrigé

  1. 1. A · Toutes les combinaisons de lignes des deux tables
  2. 2. C · DISTINCT
  3. 3. C · Un identifiant artificiel sans signification métier, comme un id auto-incrémenté
  4. 4. B · SELECT dept, MAX(salary) FROM emp GROUP BY dept
  5. 5. C · Les lignes enfants qui y font référence sont supprimées automatiquement
  6. 6. A · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  7. 7. D · Le plan d'exécution choisi par l'optimiseur, comme les parcours et les méthodes de jointure
  8. 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.