← Parcours
🗄️

SQL & Bases de Données

Débutant
🧠Comprendre en lisant n'est pas savoir écrire.🧠Un module est fini quand tu peux le reproduire fenêtre fermée.🧠Écris le problème en français avant d'écrire du code.🧠Une question impossible cache trois questions faciles.🧠Retape le code à la main. Puis referme et réécris-le.🧠Essaie d'abord, cherche ensuite.🧠Cherche « comment on écrit ça », jamais « qu'est-ce que je dois faire ».🧠Pour comprendre du code, casse-le.⌨️Une fonction qui plante sur un cas limite n'est pas finie.⌨️Si un bloc a un nom clair, il mérite d'être une fonction.⌨️Savoir lire une erreur vaut plus que connaître dix méthodes.⌨️Diagnostiquer, c'est éliminer dans l'ordre — pas essayer au hasard.⌨️Une optimisation sans mesure avant/après est une croyance.🔍Regarde le fichier avant de le charger.🔍Une performance anormalement bonne est une hypothèse à réfuter.🔍Cette valeur existe-t-elle à l'instant où je dois prédire ?🔍fit sur le train, transform partout.🔍Un chiffre qu'on ne sait pas raconter est un chiffre qu'on n'a pas compris.🔍Un graphique sans question n'a rien à dire.🤖Un score d'entraînement parfait n'est jamais une bonne nouvelle.🤖Le jeu de test ne se regarde qu'une fois.🤖Plus tu essaies de configurations, plus ton meilleur score est optimiste.🤖Un seuil de décision est un arbitrage économique, pas un réglage technique.🤖Commence toujours par une baseline. Note son score.🤖Le meilleur modèle n'est pas le plus précis, c'est celui qu'on peut maintenir.🚀Un modèle en production n'est pas un livrable, c'est un système vivant.🚀Un secret publié est un secret compromis.🚀Pour chaque permission : que se passe-t-il si cette machine est compromise ?🚀Un post-mortem qui cherche un coupable ne produit aucune amélioration.🚀« Nous n'utilisons pas cette variable » n'est pas une garantie d'équité.🚀Rends l'arbitrage explicite et chiffré. Ne le tranche pas en silence.🚀Un résultat qu'on ne sait pas reproduire est une anecdote.

🎯 Objectifs d'apprentissage

À l'issue de ce module, tu seras capable de :

  • 01Écrire des requêtes SQL avec jointures, agrégations et sous-requêtes
  • 02Utiliser les fonctions de fenêtrage pour des calculs par groupe
  • 03Lire un plan d'exécution et ajouter l'index qui corrige une requête lente
  • 04Modéliser un schéma relationnel normalisé à partir d'un besoin métier

Prérequis

Module Python (manipulation de données tabulaires)

Fondamentaux SQL

⏱ 50 min

SQL (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 exercices

Fais-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…

🤖

Un point pas clair ? Clique sur 💬 Demander au tuteur en bas à droite.