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 fait WHERE country IN ('NL', 'BE', 'DE') ?

  1. AIl trie les lignes dans l'ordre de la liste
  2. BIl conserve les lignes dont le pays est égal à l'une des valeurs de la liste
  3. CIl conserve les lignes dont la valeur de country contient les trois codes à la fois
  4. DIl conserve les lignes dont le pays n'est pas dans la liste
2.Facile

Un INNER JOIN renvoie :

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

Quelle instruction supprime des lignes d'une table ?

  1. ATRUNCATE COLUMN
  2. BDROP
  3. CREMOVE
  4. DDELETE
4.Moyen

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

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

Une table stocke l'adresse du client sur chaque ligne de commande. Modifier l'adresse dans une ligne mais pas dans les autres est un exemple :

  1. AD'anomalie de mise à jour
  2. BDe lecture fantôme
  3. CD'anomalie d'insertion
  4. DD'anomalie de suppression
6.Moyen

La table orders compte 5 lignes, chacune faisant référence à un client existant. La table customers compte 3 lignes. Combien de lignes un INNER JOIN sur customer_id renvoie-t-il ?

  1. A15
  2. B3
  3. C8
  4. D5
7.Difficile

Deux transactions lisent toutes deux stock = 10, retirent chacune 1 et écrivent le résultat, ce qui donne 9 au lieu de 8. De quelle anomalie s'agit-il ?

  1. AUne lecture sale
  2. BUne lecture fantôme
  3. CUne mise à jour perdue (lost update)
  4. DUne anomalie de suppression
8.Difficile

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

  1. ACOUNT(*) n'est pas autorisé après une jointure
  2. BCOUNT(*) ignore les lignes contenant des valeurs NULL
  3. CCOUNT(*) compte pour 1 la ligne remplie de NULL des clients sans commande
  4. DCOUNT(o.id) ne compte que les clients distincts

Corrigé

  1. 1. B · Il conserve les lignes dont le pays est égal à l'une des valeurs de la liste
  2. 2. C · Uniquement les lignes ayant des valeurs correspondantes dans les deux tables
  3. 3. D · DELETE
  4. 4. A · SELECT dept, MAX(salary) FROM emp GROUP BY dept
  5. 5. A · D'anomalie de mise à jour
  6. 6. D · 5
  7. 7. C · Une mise à jour perdue (lost update)
  8. 8. C · COUNT(*) compte pour 1 la ligne remplie de NULL des clients sans commande

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