Fondamentaux SQL
⏱ 50 minSQL (Structured Query Language) est le langage universel des bases de données relationnelles. Tout ML Engineer lit et écrit du SQL quotidiennement.
Les 4 opérations fondamentales
-- Lire des données
SELECT nom, age, salaire
FROM employes
WHERE departement = 'Tech' AND salaire > 60000
ORDER BY salaire DESC
LIMIT 10;
-- Insérer
INSERT INTO employes (nom, age, departement) VALUES ('Emile', 30, 'ML');
-- Modifier
UPDATE employes SET salaire = 75000 WHERE id = 42;
-- Supprimer
DELETE FROM employes WHERE actif = false;
Fonctions d'agrégation — essentielles pour l'analyse de données :
SELECT
departement,
COUNT(*) AS nb_employes,
AVG(salaire) AS salaire_moyen,
MAX(salaire) AS salaire_max,
MIN(salaire) AS salaire_min
FROM employes
GROUP BY departement
HAVING COUNT(*) > 5
ORDER BY salaire_moyen DESC;
Ressource : SQLBolt — https://sqlbolt.com/ (exercices interactifs gratuits, parfait pour débuter)
✍️ Exercices de la leçon
2 exercicesFais-les dans l'ordre, dans un vrai fichier .py — pas dans ta tête. Ne déplie la correction qu'après avoir écrit quelque chose, même faux.
Exercice A — Agréger avec GROUP BY et HAVING
Application directe · Tu appliques ce que tu viens de lire.
Soit une table employes(id, nom, age, departement, salaire, actif).
Écris une seule requête qui retourne, pour chaque département comptant plus de 3 employés actifs :
- le nom du département
- le nombre d'employés
- le salaire moyen, arrondi à l'entier
- le salaire maximum
Le tout trié par salaire moyen décroissant.
Le piège : il y a deux filtres dans cet énoncé, et ils ne se placent pas au même endroit.
Exercice B — Traduire trois questions métier
Page blanche · Aucun squelette : à toi de choisir la méthode.
Page blanche. On te donne les questions en français, pas la structure des requêtes.
Table commandes(id, client_id, produit, categorie, montant, statut, date_commande).
Le directeur commercial te demande, par mail :
1. « Quel est notre chiffre d'affaires du mois dernier, hors commandes annulées ? »
2. « Quelles catégories ont un panier moyen supérieur à 100 € ? »
3. « Combien de commandes a-t-on eu chaque mois cette année, et pour quel montant ? »
Écris une requête par question.
Méthode : pour chacune, écris d'abord en commentaire SQL la phrase française, puis traduis-la morceau par morceau. « hors commandes annulées » est un WHERE. « par catégorie » est un GROUP BY. « supérieur à 100 » porte sur une moyenne, donc…