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 ?
AUNION ALL ne fonctionne que sur une seule table
BUNION ALL conserve les lignes en double
CUNION ALL supprime les lignes en double
DUNION ALL trie le résultat
2.Facile
Un INNER JOIN renvoie :
AToutes les lignes des deux tables
BUniquement les lignes ayant des valeurs correspondantes dans les deux tables
CToutes les lignes de la table de gauche, avec des NULL là où il n'y a pas de correspondance
DLes lignes qui ne correspondent pas
3.Facile
Qu'est-ce qu'une clé de substitution (surrogate key) ?
AUne clé qui fait référence à une autre table
BUn identifiant artificiel sans signification métier, comme un id auto-incrémenté
CUne clé utilisée uniquement dans les vues
DUne clé tirée de données réelles, comme une adresse e-mail
4.Moyen
Quelle affirmation sur HAVING est correcte ?
AElle doit figurer avant WHERE dans l'instruction SELECT
BElle trie les résultats
CElle ne peut pas être utilisée avec GROUP BY
DElle peut utiliser des fonctions d'agrégation pour filtrer les groupes
5.Moyen
Que signifie le « A » de ACID ?
AAggregation (agrégation)
BAvailability (disponibilité)
CAtomicity (atomicité)
DAccuracy (exactitude)
6.Moyen
Quelle requête renvoie le salaire le plus élevé de chaque service ?
ASELECT dept, salary FROM emp WHERE salary = MAX(salary)
BSELECT dept, MAX(salary) FROM emp GROUP BY dept
CSELECT dept, MAX(salary) FROM emp ORDER BY dept
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 ?
AOn ne peut pas créer d'index sur des colonnes booléennes
BL'optimiseur n'utilise jamais d'index dans les clauses WHERE
CLa plupart des lignes correspondent, donc un parcours complet de la table coûte moins cher que de nombreux accès par l'index
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 ?
ALe partitionnement (sharding) de la base de données
BLa journalisation anticipée (WAL)
CLe contrôle de concurrence optimiste
DLe verrouillage à deux phases strict avec des verrous de ligne
Corrigé
1. B · UNION ALL conserve les lignes en double
2. B · Uniquement les lignes ayant des valeurs correspondantes dans les deux tables
3. B · Un identifiant artificiel sans signification métier, comme un id auto-incrémenté
4. D · Elle peut utiliser des fonctions d'agrégation pour filtrer les groupes
5. C · Atomicity (atomicité)
6. B · SELECT dept, MAX(salary) FROM emp GROUP BY dept
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. C · Le contrôle de concurrence optimiste
Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.