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 GROUP BY dans une requête ?
AIl regroupe les lignes ayant les mêmes valeurs pour calculer les agrégats par groupe
BIl supprime les lignes contenant des valeurs NULL
CIl joint deux tables sur leurs colonnes communes
DIl trie les lignes du résultat par ordre alphabétique
2.Facile
Qu'est-ce qu'une clé candidate ?
AUn ensemble minimal de colonnes qui identifie de manière unique chaque ligne
BUn ensemble de colonnes partagé entre deux tables pour relier leurs lignes
CToute colonne contenant des valeurs NULL
DUne colonne en attente de devenir une clé étrangère
3.Facile
Que garantit une contrainte UNIQUE sur une colonne ?
ADeux lignes ne peuvent pas avoir la même valeur non NULL dans cette colonne
BLes valeurs de la colonne sont triées
CLa colonne devient automatiquement la clé primaire de la table
DLa colonne ne peut plus être modifiée après l'insertion
4.Moyen
Quelle requête renvoie le nombre de villes différentes dans la table customers ?
ASELECT COUNT(city) FROM customers GROUP BY city
BSELECT SUM(DISTINCT city) FROM customers
CSELECT DISTINCT COUNT(city) FROM customers
DSELECT COUNT(DISTINCT city) FROM customers
5.Moyen
Pourquoi une table ne peut-elle avoir qu'un seul index clustérisé (clustered index) ?
ALa norme SQL interdit d'avoir plus d'un index sur une table
BLes lignes ne peuvent être stockées physiquement que dans un seul ordre
CLes index clustérisés ne peuvent porter que sur la clé primaire
DLes index clustérisés utilisent trop de mémoire
6.Moyen
Une table contient des lignes où col est NULL. Quelles lignes WHERE col = NULL renvoie-t-il ?
AToutes les lignes de la table
BAucune ligne, car la comparaison est inconnue
CUne erreur dans toutes les bases de données
DUniquement les lignes où col est NULL, comme avec IS NULL
7.Difficile
Que renvoie la requête suivante : SELECT name FROM students WHERE grade > (SELECT AVG(grade) FROM students) ?
AUniquement les étudiants ayant la note la plus élevée
BLa note moyenne de tous les étudiants
CLes étudiants dont la note est supérieure à la note moyenne
DUne erreur, car les sous-requêtes ne sont pas autorisées dans WHERE
8.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
BOn ne peut pas créer d'index sur des colonnes booléennes
CL'index traite TRUE comme NULL
DL'optimiseur n'utilise jamais d'index dans les clauses WHERE
Corrigé
1. A · Il regroupe les lignes ayant les mêmes valeurs pour calculer les agrégats par groupe
2. A · Un ensemble minimal de colonnes qui identifie de manière unique chaque ligne
3. A · Deux lignes ne peuvent pas avoir la même valeur non NULL dans cette colonne
4. D · SELECT COUNT(DISTINCT city) FROM customers
5. B · Les lignes ne peuvent être stockées physiquement que dans un seul ordre
6. B · Aucune ligne, car la comparaison est inconnue
7. C · Les étudiants dont la note est supérieure à la note moyenne
8. 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
Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.