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
Une clé étrangère (foreign key) est :
AUne clé toujours chiffrée
BUne colonne dont les valeurs doivent être uniques sur toutes les lignes de la table
CUne clé utilisée par des utilisateurs étrangers
DUne colonne qui fait référence à la clé primaire d'une autre table
2.Facile
Qu'est-ce qu'une clé candidate ?
AUn ensemble de colonnes partagé entre deux tables pour relier leurs lignes
BUn ensemble minimal de colonnes qui identifie de manière unique chaque ligne
CUne colonne en attente de devenir une clé étrangère
DToute colonne contenant des valeurs NULL
3.Facile
À quoi sert un diagramme entité-association (ER) ?
AÀ modéliser les entités, leurs attributs et leurs associations lors de la conception d'une base de données
BÀ lister les utilisateurs d'une base de données
CÀ mesurer les performances d'une base de données
DÀ montrer comment une requête est exécutée
4.Moyen
Que fait ROLLBACK TO SAVEPOINT s1 ?
AIl termine la transaction et valide tout
BIl annule toute la transaction depuis le début
CIl annule les modifications effectuées après le point de sauvegarde s1, en gardant la transaction ouverte
DIl supprime le point de sauvegarde et toutes les tables modifiées depuis
5.Moyen
Quelle requête liste les clients qui n'ont jamais passé de commande ?
ASELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
BSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
CSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NOT NULL
DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
6.Moyen
La troisième forme normale (3NF) élimine :
ALes index redondants sur des colonnes qui ne font pas partie d'une clé
BLes valeurs atomiques
CLes clés composées
DLes dépendances transitives entre attributs non clés
7.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(*) compte pour 1 la ligne remplie de NULL des clients sans commande
CCOUNT(*) ignore les lignes contenant des valeurs NULL
DCOUNT(o.id) ne compte que les clients distincts
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 ?
AL'optimiseur n'utilise jamais d'index dans les clauses WHERE
BL'index traite TRUE comme NULL
CLa plupart des lignes correspondent, donc un parcours complet de la table coûte moins cher que de nombreux accès par l'index
DOn ne peut pas créer d'index sur des colonnes booléennes
Corrigé
1. D · Une colonne qui fait référence à la clé primaire d'une autre table
2. B · Un ensemble minimal de colonnes qui identifie de manière unique chaque ligne
3. A · À modéliser les entités, leurs attributs et leurs associations lors de la conception d'une base de données
4. C · Il annule les modifications effectuées après le point de sauvegarde s1, en gardant la transaction ouverte
5. B · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
6. D · Les dépendances transitives entre attributs non clés
7. B · COUNT(*) compte pour 1 la ligne remplie de NULL des clients sans commande
8. 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
Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.