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 une contrainte CHECK ?
- AElle vérifie si une table existe avant qu'une requête lui soit appliquée
- BElle rejette les lignes dont les valeurs ne satisfont pas une condition
- CElle vérifie le mot de passe de l'utilisateur
- DElle compte les lignes d'une table
2.Facile
Que fait ROLLBACK dans une transaction ?
- AIl enregistre définitivement sur disque toutes les modifications de la transaction
- BIl annule les modifications effectuées depuis le début de la transaction
- CIl supprime la table
- DIl répète la dernière instruction
3.Facile
Quelle instruction supprime des lignes d'une table ?
- ADELETE
- BDROP
- CTRUNCATE COLUMN
- DREMOVE
4.Moyen
Quelle requête renvoie le nombre de commandes par client ?
- ASELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
- BSELECT customer_id FROM orders WHERE COUNT(*) > 0
- CSELECT DISTINCT COUNT(*) FROM orders
- DSELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
5.Moyen
Une colonne contient les valeurs 10, 20 et NULL. Que renvoie AVG(col) ?
- A15
- BNULL
- C30
- D10
6.Moyen
La table a compte 3 lignes et la table b 4 lignes. Combien de lignes SELECT * FROM a CROSS JOIN b renvoie-t-il ?
- A4
- B3
- C12
- D7
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 fantôme
- BUne anomalie de suppression
- CUne mise à jour perdue (lost update)
- DUne lecture sale
8.Difficile
La requête FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.status = 'paid' élimine de façon inattendue les clients sans commande. Pourquoi ?
- ALEFT JOIN ne conserve jamais les lignes sans correspondance
- BLa condition WHERE sur o rejette les lignes remplies de NULL, ce qui en fait une jointure interne
- CLa jointure devrait utiliser USING au lieu de ON
- Dstatus est un mot réservé