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 fonction d'agrégation compte les lignes ?
AMAX
BCOUNT
CAVG
DSUM
2.Facile
Un client peut passer de nombreuses commandes, mais chaque commande appartient à exactement un client. De quel type d'association s'agit-il ?
AUn-à-un
BPlusieurs-à-plusieurs
CZéro-à-zéro
DUn-à-plusieurs
3.Facile
Quelle instruction ajoute une nouvelle colonne à une table existante ?
AUPDATE TABLE
BALTER TABLE
CCREATE COLUMN
DINSERT COLUMN
4.Moyen
Quelle propriété ACID signifie que des transactions concurrentes ne voient pas les modifications inachevées les unes des autres ?
ALa durabilité
BL'atomicité
CLa disponibilité
DL'isolation
5.Moyen
Quelle requête renvoie le nombre de villes différentes dans la table customers ?
ASELECT SUM(DISTINCT city) FROM customers
BSELECT DISTINCT COUNT(city) FROM customers
CSELECT COUNT(city) FROM customers GROUP BY city
DSELECT COUNT(DISTINCT city) FROM customers
6.Moyen
Pourquoi SELECT price * 2 AS double_price FROM t WHERE double_price > 10 échoue-t-il dans la plupart des bases de données ?
ALes alias ne peuvent pas contenir de tiret bas
BWHERE ne peut comparer que des colonnes de texte
CWHERE est évalué avant la liste du SELECT, donc l'alias n'existe pas encore
DL'arithmétique n'est pas autorisée dans la liste du SELECT
7.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 ?
ALa plupart des lignes correspondent, donc un parcours complet de la table coûte moins cher que de nombreux accès par l'index
BL'index traite TRUE comme NULL
CL'optimiseur n'utilise jamais d'index dans les clauses WHERE
DOn ne peut pas créer d'index sur des colonnes booléennes
8.Difficile
Pourquoi SELECT dept, name, COUNT(*) FROM emp GROUP BY dept est-il invalide en SQL standard ?
Adept doit figurer dans une fonction d'agrégation
BCOUNT(*) ne peut pas être utilisé avec GROUP BY
Cname n'est ni regroupé ni agrégé, il n'a donc pas une valeur unique par groupe
DGROUP BY doit lister toutes les colonnes de la table
Corrigé
1. B · COUNT
2. D · Un-à-plusieurs
3. B · ALTER TABLE
4. D · L'isolation
5. D · SELECT COUNT(DISTINCT city) FROM customers
6. C · WHERE est évalué avant la liste du SELECT, donc l'alias n'existe pas encore
7. A · La plupart des lignes correspondent, donc un parcours complet de la table coûte moins cher que de nombreux accès par l'index
8. C · name n'est ni regroupé ni agrégé, il n'a donc pas une valeur unique par groupe
Corrigés complets pas à pas : entraînez-vous sur ce thème sur examproblems.com.