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
Quelle instruction SQL permet de récupérer des données d'une table ?
ASELECT
BINSERT
CCREATE
DUPDATE
2.Facile
Quelle fonction d'agrégation compte les lignes ?
ACOUNT
BSUM
CMAX
DAVG
3.Facile
Que fait GROUP BY dans une requête ?
AIl trie les lignes du résultat par ordre alphabétique
BIl regroupe les lignes ayant les mêmes valeurs pour calculer les agrégats par groupe
CIl joint deux tables sur leurs colonnes communes
DIl supprime les lignes contenant des valeurs NULL
4.Moyen
La troisième forme normale (3NF) élimine :
ALes clés composées
BLes dépendances transitives entre attributs non clés
CLes index redondants sur des colonnes qui ne font pas partie d'une clé
DLes valeurs atomiques
5.Moyen
Que renvoie SELECT name, CASE WHEN grade >= 5,5 THEN 'pass' ELSE 'fail' END FROM results ?
AUniquement les étudiants reçus
BUne erreur, car CASE n'est pas autorisé dans SELECT
CChaque nom avec l'étiquette 'pass' ou 'fail' selon la note
DLe nombre d'étudiants reçus et recalés
6.Moyen
Que fait ROLLBACK TO SAVEPOINT s1 ?
AIl annule les modifications effectuées après le point de sauvegarde s1, en gardant la transaction ouverte
BIl termine la transaction et valide tout
CIl annule toute la transaction depuis le début
DIl supprime le point de sauvegarde et toutes les tables modifiées depuis
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 ?
ALa plupart des lignes correspondent, donc un parcours complet de la table coûte moins cher que de nombreux accès par l'index
BL'optimiseur n'utilise jamais d'index dans les clauses WHERE
COn ne peut pas créer d'index sur des colonnes booléennes
DL'index traite TRUE comme NULL
8.Difficile
Pourquoi SELECT dept, name, COUNT(*) FROM emp GROUP BY dept est-il invalide en SQL standard ?
ACOUNT(*) ne peut pas être utilisé avec GROUP BY
Bname n'est ni regroupé ni agrégé, il n'a donc pas une valeur unique par groupe
CGROUP BY doit lister toutes les colonnes de la table
Ddept doit figurer dans une fonction d'agrégation
Corrigé
1. A · SELECT
2. A · COUNT
3. B · Il regroupe les lignes ayant les mêmes valeurs pour calculer les agrégats par groupe
4. B · Les dépendances transitives entre attributs non clés
5. C · Chaque nom avec l'étiquette 'pass' ou 'fail' selon la note
6. A · Il annule les modifications effectuées après le point de sauvegarde s1, en gardant la transaction ouverte
7. A · 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. B · name n'est ni regroupé ni agrégé, il n'a donc pas une valeur unique par groupe
Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.