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
Dans PostgreSQL et MySQL, quelle clause renvoie uniquement les 10 premières lignes d'un résultat ?
ATOP ROWS 10
BFIRST 10 ONLY
CMAX 10
DLIMIT 10
2.Facile
Que renvoie un CROSS JOIN ?
AUniquement les lignes qui ne correspondent pas
BToutes les combinaisons de lignes des deux tables
CUniquement les lignes de la première table
DUniquement les lignes qui correspondent sur une colonne clé commune
3.Facile
Quelle contrainte garantit qu'une colonne ne peut jamais rester vide (NULL) ?
ANOT NULL
BUNIQUE
CDEFAULT
DCHECK NULL
4.Moyen
Que fait GRANT SELECT ON employees TO alice ?
AIl copie la table employees pour alice
BIl fait d'alice la propriétaire de la base de données
CIl autorise alice à modifier et à supprimer des lignes de la table employees
DIl autorise l'utilisatrice alice à lire la table employees
5.Moyen
Quelle propriété ACID garantit que les modifications validées survivent à une panne du système ?
ALa durabilité
BL'atomicité
CLa cohérence
DL'isolation
6.Moyen
Qu'est-ce qu'une lecture sale (dirty read) ?
ALa lecture d'une même ligne deux fois avec la même valeur
BLa lecture de données sur un disque corrompu
CLa lecture de données écrites par une autre transaction qui n'a pas encore été validée
DLa lecture de données sans clause WHERE
7.Difficile
Pourquoi une requête avec WHERE YEAR(order_date) = 2025 pourrait-elle ne pas utiliser un index sur order_date ?
ALes index ne fonctionnent jamais avec des dates
BAppliquer une fonction à la colonne empêche une simple recherche par plage dans l'index
CYEAR n'est pas du SQL valide
DUn index sur order_date n'est utilisé que pour les clauses ORDER BY, jamais pour WHERE
8.Difficile
Après customers LEFT JOIN orders, pourquoi utiliser COUNT(o.id) plutôt que COUNT(*) pour compter les commandes par client ?
ACOUNT(*) ignore les lignes contenant des valeurs NULL
BCOUNT(*) compte pour 1 la ligne remplie de NULL des clients sans commande
CCOUNT(*) n'est pas autorisé après une jointure
DCOUNT(o.id) ne compte que les clients distincts
Corrigé
1. D · LIMIT 10
2. B · Toutes les combinaisons de lignes des deux tables
3. A · NOT NULL
4. D · Il autorise l'utilisatrice alice à lire la table employees
5. A · La durabilité
6. C · La lecture de données écrites par une autre transaction qui n'a pas encore été validée
7. B · Appliquer une fonction à la colonne empêche une simple recherche par plage dans l'index
8. B · COUNT(*) compte pour 1 la ligne remplie de NULL des clients sans commande
Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.