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 renvoie un CROSS JOIN ?
AUniquement les lignes qui correspondent sur une colonne clé commune
BUniquement les lignes qui ne correspondent pas
CUniquement les lignes de la première table
DToutes les combinaisons de lignes des deux tables
2.Facile
Qu'est-ce qu'une clé de substitution (surrogate key) ?
AUne clé tirée de données réelles, comme une adresse e-mail
BUne clé utilisée uniquement dans les vues
CUne clé qui fait référence à une autre table
DUn identifiant artificiel sans signification métier, comme un id auto-incrémenté
3.Facile
Qu'est-ce qu'une clé primaire (primary key) ?
AUne colonne qui peut contenir des doublons mais ne doit jamais contenir NULL
BUn mot de passe pour la base de données
CUne colonne ou un ensemble de colonnes qui identifie de manière unique chaque ligne
DLa première colonne de chaque table
4.Moyen
Une vue (view) en SQL est :
AUn écran du client de base de données pour parcourir les tables
BUne requête enregistrée qui se comporte comme une table virtuelle
CUn type d'index
DUne copie d'une table sur le disque
5.Moyen
Pourquoi une table ne peut-elle avoir qu'un seul index clustérisé (clustered index) ?
ALes index clustérisés utilisent trop de mémoire
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
DLa norme SQL interdit d'avoir plus d'un index sur une table
6.Moyen
Quelle requête liste les clients qui n'ont jamais passé de commande ?
ASELECT c.name FROM customers c LEFT 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 NOT NULL
CSELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
7.Difficile
Qu'est-ce qu'une lecture fantôme (phantom read) ?
AUne requête qui ne renvoie aucune ligne
BLa lecture de données qui n'ont jamais été écrites
CUne requête répétée renvoie de nouvelles lignes insérées par une autre transaction validée
DLa lecture de modifications non validées
8.Difficile
Pour une équijointure entre deux grandes tables sans index utile, quel algorithme de jointure un optimiseur choisit-il souvent ?
ALa jointure par boucles imbriquées avec accès par index
BLa jointure bitmap sur la clé primaire
CLa jointure croisée
DLa jointure par hachage (hash join)
Corrigé
1. D · Toutes les combinaisons de lignes des deux tables
2. D · Un identifiant artificiel sans signification métier, comme un id auto-incrémenté
3. C · Une colonne ou un ensemble de colonnes qui identifie de manière unique chaque ligne
4. B · Une requête enregistrée qui se comporte comme une table virtuelle
5. B · Les lignes ne peuvent être stockées physiquement que dans un seul ordre
6. A · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
7. C · Une requête répétée renvoie de nouvelles lignes insérées par une autre transaction validée
8. D · La jointure par hachage (hash join)
Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.