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

Quel mot-clé donne à une colonne ou à une table un autre nom temporaire dans une requête ?

  1. ARENAME
  2. BAS
  3. CNAME
  4. DALIAS
2.Facile

Une clé étrangère (foreign key) est :

  1. AUne colonne qui fait référence à la clé primaire d'une autre table
  2. BUne colonne dont les valeurs doivent être uniques sur toutes les lignes de la table
  3. CUne clé toujours chiffrée
  4. DUne clé utilisée par des utilisateurs étrangers
3.Facile

Quelle instruction ajoute une nouvelle colonne à une table existante ?

  1. AINSERT COLUMN
  2. BUPDATE TABLE
  3. CCREATE COLUMN
  4. DALTER TABLE
4.Moyen

Quelle requête renvoie le nombre de commandes par client ?

  1. ASELECT DISTINCT COUNT(*) FROM orders
  2. BSELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  3. CSELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
  4. DSELECT customer_id FROM orders WHERE COUNT(*) > 0
5.Moyen

Que renvoie INTERSECT utilisé entre deux requêtes SELECT ?

  1. AToutes les lignes des deux résultats
  2. BLes lignes présentes dans les deux résultats
  3. CLe produit cartésien des résultats
  4. DLes lignes du premier résultat absentes du second
6.Moyen

Une table contient des lignes où col est NULL. Quelles lignes WHERE col = NULL renvoie-t-il ?

  1. AUniquement les lignes où col est NULL, comme avec IS NULL
  2. BAucune ligne, car la comparaison est inconnue
  3. CUne erreur dans toutes les bases de données
  4. DToutes les lignes de la table
7.Difficile

Une base de données de reporting copie les noms des clients dans la table des commandes pour éviter des jointures. Quel est le principal coût de cette dénormalisation ?

  1. ALes requêtes sur la table des commandes deviennent plus lentes
  2. BLes clés primaires ne peuvent plus être utilisées
  3. CLes copies redondantes doivent rester cohérentes chaque fois que les données client changent
  4. DLa base de données ne peut plus utiliser d'index
8.Difficile

Après customers LEFT JOIN orders, pourquoi utiliser COUNT(o.id) plutôt que COUNT(*) pour compter les commandes par client ?

  1. ACOUNT(*) ignore les lignes contenant des valeurs NULL
  2. BCOUNT(*) n'est pas autorisé après une jointure
  3. CCOUNT(o.id) ne compte que les clients distincts
  4. DCOUNT(*) compte pour 1 la ligne remplie de NULL des clients sans commande

Corrigé

  1. 1. B · AS
  2. 2. A · Une colonne qui fait référence à la clé primaire d'une autre table
  3. 3. D · ALTER TABLE
  4. 4. B · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  5. 5. B · Les lignes présentes dans les deux résultats
  6. 6. B · Aucune ligne, car la comparaison est inconnue
  7. 7. C · Les copies redondantes doivent rester cohérentes chaque fois que les données client changent
  8. 8. D · 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.