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 ne fonctionne que sur une seule table
  2. BUNION ALL conserve les lignes en double
  3. CUNION ALL supprime les lignes en double
  4. DUNION ALL trie le résultat
2.Facile

Un INNER JOIN renvoie :

  1. AToutes les lignes des deux tables
  2. BUniquement les lignes ayant des valeurs correspondantes dans les deux tables
  3. CToutes les lignes de la table de gauche, avec des NULL là où il n'y a pas de correspondance
  4. DLes lignes qui ne correspondent pas
3.Facile

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

  1. AUne clé qui fait référence à une autre table
  2. BUn identifiant artificiel sans signification métier, comme un id auto-incrémenté
  3. CUne clé utilisée uniquement dans les vues
  4. DUne clé tirée de données réelles, comme une adresse e-mail
4.Moyen

Quelle affirmation sur HAVING est correcte ?

  1. AElle doit figurer avant WHERE dans l'instruction SELECT
  2. BElle trie les résultats
  3. CElle ne peut pas être utilisée avec GROUP BY
  4. DElle peut utiliser des fonctions d'agrégation pour filtrer les groupes
5.Moyen

Que signifie le « A » de ACID ?

  1. AAggregation (agrégation)
  2. BAvailability (disponibilité)
  3. CAtomicity (atomicité)
  4. DAccuracy (exactitude)
6.Moyen

Quelle requête renvoie le salaire le plus élevé de chaque service ?

  1. ASELECT dept, salary FROM emp WHERE salary = MAX(salary)
  2. BSELECT dept, MAX(salary) FROM emp GROUP BY dept
  3. CSELECT dept, MAX(salary) FROM emp ORDER BY dept
  4. DSELECT MAX(dept), salary FROM emp GROUP BY salary
7.Difficile

Une table a un million de lignes et une colonne booléenne is_active vraie pour 95% d'entre elles. Pourquoi l'optimiseur pourrait-il ignorer un index sur is_active pour WHERE is_active = TRUE ?

  1. AOn ne peut pas créer d'index sur des colonnes booléennes
  2. BL'optimiseur n'utilise jamais d'index dans les clauses WHERE
  3. CLa plupart des lignes correspondent, donc un parcours complet de la table coûte moins cher que de nombreux accès par l'index
  4. DL'index traite TRUE comme NULL
8.Difficile

Une application exécute UPDATE item SET qty = 4, version = 8 WHERE id = 1 AND version = 7 et signale un conflit si aucune ligne n'a été mise à jour. De quelle technique s'agit-il ?

  1. ALe partitionnement (sharding) de la base de données
  2. BLa journalisation anticipée (WAL)
  3. CLe contrôle de concurrence optimiste
  4. DLe verrouillage à deux phases strict avec des verrous de ligne

Corrigé

  1. 1. B · UNION ALL conserve les lignes en double
  2. 2. B · Uniquement les lignes ayant des valeurs correspondantes dans les deux tables
  3. 3. B · Un identifiant artificiel sans signification métier, comme un id auto-incrémenté
  4. 4. D · Elle peut utiliser des fonctions d'agrégation pour filtrer les groupes
  5. 5. C · Atomicity (atomicité)
  6. 6. B · SELECT dept, MAX(salary) FROM emp GROUP BY dept
  7. 7. C · La plupart des lignes correspondent, donc un parcours complet de la table coûte moins cher que de nombreux accès par l'index
  8. 8. C · Le contrôle de concurrence optimiste

Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.