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
Comment trier un résultat du salaire le plus élevé au plus bas ?
ASORT salary DOWN
BORDER BY salary ASC
CORDER BY salary DESC
DGROUP BY salary DESC
2.Facile
Qu'est-ce qu'une clé candidate ?
AToute colonne contenant des valeurs NULL
BUn ensemble minimal de colonnes qui identifie de manière unique chaque ligne
CUne colonne en attente de devenir une clé étrangère
DUn ensemble de colonnes partagé entre deux tables pour relier leurs lignes
3.Facile
Qu'est-ce qu'une clé primaire (primary key) ?
AUne colonne qui peut contenir des doublons mais ne doit jamais contenir NULL
BUne colonne ou un ensemble de colonnes qui identifie de manière unique chaque ligne
CLa première colonne de chaque table
DUn mot de passe pour la base de données
4.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
5.Moyen
Quelle instruction supprime toutes les lignes d'une table, conserve sa structure et n'accepte pas de clause WHERE ?
ADROP TABLE
BALTER TABLE
CDELETE FROM avec une clause WHERE
DTRUNCATE TABLE
6.Moyen
Que renvoie INTERSECT utilisé entre deux requêtes SELECT ?
ALes lignes du premier résultat absentes du second
BToutes les lignes des deux résultats
CLe produit cartésien des résultats
DLes lignes présentes dans les deux résultats
7.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
BGROUP BY doit lister toutes les colonnes de la table
Cdept doit figurer dans une fonction d'agrégation
Dname n'est ni regroupé ni agrégé, il n'a donc pas une valeur unique par groupe
8.Difficile
Deux transactions lisent toutes deux stock = 10, retirent chacune 1 et écrivent le résultat, ce qui donne 9 au lieu de 8. De quelle anomalie s'agit-il ?
AUne lecture fantôme
BUne mise à jour perdue (lost update)
CUne anomalie de suppression
DUne lecture sale
Corrigé
1. C · ORDER BY salary DESC
2. B · Un ensemble minimal de colonnes qui identifie de manière unique chaque ligne
3. B · Une colonne ou un ensemble de colonnes qui identifie de manière unique chaque ligne
4. B · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
5. D · TRUNCATE TABLE
6. D · Les lignes présentes dans les deux résultats
7. D · name n'est ni regroupé ni agrégé, il n'a donc pas une valeur unique par groupe
8. B · Une mise à jour perdue (lost update)
Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.