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') ?
AIl trie les lignes dans l'ordre de la liste
BIl conserve les lignes dont le pays est égal à l'une des valeurs de la liste
CIl conserve les lignes dont la valeur de country contient les trois codes à la fois
DIl conserve les lignes dont le pays n'est pas dans la liste
2.Facile
Un INNER JOIN renvoie :
AToutes les lignes des deux tables
BToutes les lignes de la table de gauche, avec des NULL là où il n'y a pas de correspondance
CUniquement les lignes ayant des valeurs correspondantes dans les deux tables
DLes lignes qui ne correspondent pas
3.Facile
Quelle instruction supprime des lignes d'une table ?
ATRUNCATE COLUMN
BDROP
CREMOVE
DDELETE
4.Moyen
Quelle requête renvoie le salaire le plus élevé de chaque service ?
ASELECT dept, MAX(salary) FROM emp GROUP BY dept
BSELECT dept, MAX(salary) FROM emp ORDER BY dept
CSELECT dept, salary FROM emp WHERE salary = MAX(salary)
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 :
AD'anomalie de mise à jour
BDe lecture fantôme
CD'anomalie d'insertion
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 ?
A15
B3
C8
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 ?
AUne lecture sale
BUne lecture fantôme
CUne mise à jour perdue (lost update)
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 ?
ACOUNT(*) n'est pas autorisé après une jointure
BCOUNT(*) ignore les lignes contenant des valeurs NULL
CCOUNT(*) compte pour 1 la ligne remplie de NULL des clients sans commande
DCOUNT(o.id) ne compte que les clients distincts
Corrigé
1. B · Il conserve les lignes dont le pays est égal à l'une des valeurs de la liste
2. C · Uniquement les lignes ayant des valeurs correspondantes dans les deux tables
3. D · DELETE
4. A · SELECT dept, MAX(salary) FROM emp GROUP BY dept
5. A · D'anomalie de mise à jour
6. D · 5
7. C · Une mise à jour perdue (lost update)
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.