1.
Analyse et correction de requêtes SQL erronées
- Objectif : Vérifier la compréhension des étudiants des concepts SQL et
leur capacité à identifier et corriger des erreurs.
- Exemple :
- Requête erronée :
SELECT nom, COUNT(*)
FROM clients
WHERE age > 30
GROUP BY ville;
- Questions :
1. Identifiez l'erreur dans cette requête.
2. Proposez une correction pour obtenir le nombre de clients par ville
ayant plus de 30 ans.
- Correction attendue :
SELECT ville, COUNT(*)
FROM clients
WHERE age > 30
GROUP BY ville;
2. Interprétation de requêtes SQL
- Objectif : Évaluer la capacité des étudiants à comprendre une requête
SQL et à anticiper son résultat.
- Exemple de requête :
SELECT produit, SUM(quantite)
FROM ventes
WHERE date_vente BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY produit
HAVING SUM(quantite) > 100;
- Questions :
1. Que fait cette requête ?
2. Quel est le résultat attendu si la table `ventes` contient des
données pour plusieurs produits et dates ?
- Réponse
1. La requête sélectionne les produits dont la quantité totale vendue
en 2023 est supérieure à 100.
2. Le résultat sera une liste de produits avec leur quantité totale
vendue en 2023, uniquement pour ceux dont la quantité dépasse 100.
3. QCU/QCM
- Objectif : Tester les connaissances théoriques des étudiants sur les
concepts SQL et la modélisation de bases de données.
- Exemples de questions :
1. Quelle clause SQL est utilisée pour filtrer les résultats après un
`GROUP BY` ?
- a) `WHERE`
- b) `HAVING`
- c) `FILTER`
- d) `LIMIT`
- Réponse correcte: b) `HAVING`
2. Quel type de jointure retourne toutes les lignes des deux tables,
même s'il n'y a pas de correspondance ?
- a) `INNER JOIN`
- b) `LEFT JOIN`
- c) `FULL OUTER JOIN`
- d) `CROSS JOIN`
- Réponse correcte : c) `FULL OUTER JOIN`
4.Exemple de modèle relationnel :
- Clients (`id_client`, `nom`, `email`, `ville`)
- Commandes (`id_commande`, `id_client`, `date_commande`,
`montant`)
- Produits (`id_produit`, `nom_produit`, `prix`)
- Details_Commandes (`id_commande`, `id_produit`, `quantite`)
- Questions :
1. Quelle est la clé primaire de la table `Commandes` ?
2. Écrivez une requête SQL pour trouver le montant total des
commandes passées par un client spécifique (par exemple, `id_client =
5`).
3. Proposez une requête pour lister les clients qui n'ont passé aucune
commande.
- Réponses :
1. La clé primaire de la table `Commandes` est `id_commande`.
2.
SELECT SUM(montant)
FROM Commandes
WHERE id_client = 5;
3.
SELECT c.nom
FROM Clients c
LEFT JOIN Commandes co ON c.id_client = co.id_client
WHERE co.id_commande IS NULL;