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 clause filtre les lignes avant le regroupement ?
AWHERE
BGROUP BY
CORDER BY
DHAVING
2.Facile
Qu'est-ce qu'une clé primaire (primary key) ?
AUne colonne qui peut contenir des doublons mais ne doit jamais contenir NULL
BLa première colonne de chaque table
CUn mot de passe pour la base de données
DUne colonne ou un ensemble de colonnes qui identifie de manière unique chaque ligne
3.Facile
Que fait WHERE country IN ('NL', 'BE', 'DE') ?
AIl conserve les lignes dont le pays n'est pas dans la liste
BIl conserve les lignes dont le pays est égal à l'une des valeurs de la liste
CIl conserve les lignes dont la valeur de country contient les trois codes à la fois
DIl trie les lignes dans l'ordre de la liste
4.Moyen
Une table employees possède une colonne manager_id qui fait référence à un autre employé. Comment lister chaque employé à côté du nom de son responsable ?
ACombiner la table avec elle-même au moyen de UNION ALL et d'un filtre WHERE
BJoindre la table employees à elle-même avec deux alias
CCréer une seconde copie de la table sur disque
DUtiliser uniquement GROUP BY manager_id
5.Moyen
Que renvoie SELECT SUM(amount) FROM orders lorsque la clause WHERE ne correspond à aucune ligne ?
AUne erreur
BUne chaîne vide
CNULL
D0
6.Moyen
Quelle affirmation sur HAVING est correcte ?
AElle ne peut pas être utilisée avec GROUP BY
BElle doit figurer avant WHERE dans l'instruction SELECT
CElle trie les résultats
DElle peut utiliser des fonctions d'agrégation pour filtrer les groupes
7.Difficile
La requête FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.status = 'paid' élimine de façon inattendue les clients sans commande. Pourquoi ?
ALa jointure devrait utiliser USING au lieu de ON
BLa condition WHERE sur o rejette les lignes remplies de NULL, ce qui en fait une jointure interne
Cstatus est un mot réservé
DLEFT JOIN ne conserve jamais les lignes sans correspondance
8.Difficile
Quel est un inconvénient connu de la décomposition des tables en BCNF par rapport à la 3NF ?
ALes tables en BCNF ne peuvent pas avoir de clé primaire
BLa décomposition perd toujours des données lors de la jointure inverse
CCertaines dépendances fonctionnelles peuvent ne plus être vérifiables au sein d'une seule table
DLa BCNF permet plus de redondance que la 3NF
Corrigé
1. A · WHERE
2. D · Une colonne ou un ensemble de colonnes qui identifie de manière unique chaque ligne
3. B · Il conserve les lignes dont le pays est égal à l'une des valeurs de la liste
4. B · Joindre la table employees à elle-même avec deux alias
5. C · NULL
6. D · Elle peut utiliser des fonctions d'agrégation pour filtrer les groupes
7. B · La condition WHERE sur o rejette les lignes remplies de NULL, ce qui en fait une jointure interne
8. C · Certaines dépendances fonctionnelles peuvent ne plus être vérifiables au sein d'une seule table
Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.