← 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 AAgré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 BTraduire 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.