Introduction SQL SlidesSQL : Les Fondations Devenez un architecte de données. Apprenez à parler la langue des bases de données MySQL. C'est quoi le SQL ? Structured Query Language Le langage standard pour communiquer avec les bases de données relationnelles (comme MySQL). Le rôle de l'analyste Extraire, filtrer et transformer les données brutes en informations précieuses. SELECT nom, salaire FROM employes WHERE salaire > 50000; Une simple phrase pour poser une question complexe. Anatomie d'une Table id (Clé)Produit (Colonne)Prix (Valeur)Stock (Type: Int)1Laptop Pro1200€152Souris Sans Fil25€142↑ Chaque ligne est un "Enregistrement" (Record) Imaginez Excel, mais capable de gérer des milliards de lignes sans ramer. C'est ça le Big Data. Le trépied magique : SELECT, FROM, WHERE 1 SELECT Quelles colonnes voulez-vous voir ? (Ex: nom, email) 2 FROM Dans quelle table se trouvent-elles ? (Ex: clients) 3 WHERE Quelles sont vos conditions ? (Ex: age > 18) SELECT * FROM produits WHERE categorie = 'IA';
Ma Première Requête WorksheetMa Première Requête SQL Détective • Niveau Débutant Nom: __________________________ Date: __________________________ Le Scénario Vous êtes analyste pour une entreprise de Big Data spécialisée dans l'IA. Votre base de données contient une table appelée serveurs qui liste l'état de vos machines d'entraînement. id (Int) nom (Text) ram_gb (Int) status (Text) 1 Extraction simple Écrivez une requête pour afficher toutes les colonnes de tous les serveurs. 2 Sélection de colonnes Écrivez une requête pour afficher uniquement le nom et la ram_gb des serveurs. 3 Filtrage de données Le manager veut voir les serveurs dont le statut est 'en_ligne'. Utilisez la clause WHERE. 4 La Puissance du Big Data Trouvez les serveurs qui ont plus de 128 Go de RAM et qui sont 'en_ligne'. Défi Analyste Comment feriez-vous pour trier ces serveurs du plus puissant au moins puissant (selon la RAM) ? Recherchez ORDER BY.
Guide Enseignant Fondations SQLGuide de l'Instructeur Maîtrise SQL • Leçon 1 90 min Objectifs Structure d'une BDD relationnelle (Tables, Colonnes). Extraire des données avec SELECT & FROM. Filtrer avec la clause WHERE. Mots-Clés SELECT WHERE JOIN Pacing 0-15m Intro Big Data Expliquez pourquoi SQL est le standard pour l'IA et l'analyse massive. 15-40m Anatomie & SELECT Présentation des concepts clés. Montrez la structure en lignes/colonnes. 40-60m Clauses & Filtres Focus sur WHERE. Insistez sur les guillemets pour les chaînes de texte. 60-90m Atelier Pratique Fiche d'exercice. Surveillez les oublis de points-virgules. Pièges Communs Inversion SELECT / FROM. Confusion entre nom de colonne et valeur texte. Oubli du point-virgule terminal. Notes de séance
Calculs Groupes SlidesCalculs & Groupes Apprenez à résumer des millions de lignes en un seul chiffre. L'essence même de l'analyse de données. Les 5 Fantastiques COUNT() Compter le nombre de lignes. SUM() Additionner des valeurs numériques. AVG() Calculer la moyenne (Average). MIN() Trouver la plus petite valeur. MAX() Trouver la plus grande valeur. Le pouvoir du GROUP BY Sans GROUP BY, vos fonctions calculent sur toute la table. Avec GROUP BY, vous pouvez : Calculer le CA par pays Compter les clients par mois Moyenne de prix par catégorie SELECT categorie, COUNT(*) FROM produits GROUP BY categorie;
Corrigé Chiffres qui Parlent Answer KeySQL Corrigé : Chiffres qui Parlent Maîtrise SQL • Leçon 2 • Analyse Groupée 1 Nombre total de ventes SELECT COUNT(*) FROM ventes; Note : COUNT(*) compte toutes les lignes de la table ventes. 2 Chiffre d'Affaires total SELECT SUM(montant) FROM ventes; 3 Analyse par catégorie de produit SELECT categorie, SUM(montant) AS total_ca FROM ventes GROUP BY categorie; Note : On utilise 'ventes' pour rester cohérent avec les exercices précédents. 4 Catégories avec CA > 10 000€ (Le piège du HAVING) SELECT categorie, SUM(montant) FROM ventes GROUP BY categorie HAVING SUM(montant) > 10000; Explication : On utilise HAVING car WHERE s'exécute avant le groupement et ne peut donc pas filtrer sur des agrégations. Conseils de Correction Vérifiez l'utilisation des alias (AS) qui facilitent la lecture des rapports. Insistez sur l'ordre syntaxique : SELECT → FROM → WHERE → GROUP BY → HAVING.
Pouvoir des Joins SlidesLe Pouvoir des Joins Dans une base de données réelle, les données sont éparpillées. Apprenez à les réunir comme un puzzle professionnel. Pourquoi plusieurs tables ? Éviter la redondance On ne veut pas répéter le nom du client sur chaque ligne de commande. C'est lourd et source d'erreurs. La "Clé Étrangère" C'est le fil invisible qui relie les tables entre elles. TABLE CLIENTS ID: 42 | Nom: Marie TABLE COMMANDES ID: 101 | ClientID: 42 | Montant: 50€ L'INNER JOIN : L'Intersection Table A INNER JOIN Table B SELECT clients.nom, commandes.montant FROM clients INNER JOIN commandes ON clients.id = commandes.client_id;
Guide Joins Cheat SheetLe Guide des Joins SQL Détective • Aide-mémoire indispensable MySQL Focus 1. INNER JOIN Standard Retourne les lignes avec correspondance dans les deux tables. SELECT * FROM T1 JOIN T2 ON T1.id = T2.t1_id; 2. LEFT JOIN Retourne tout à gauche + correspondances à droite (ou NULL). SELECT * FROM T1 LEFT JOIN T2 ON T1.id = T2.t1_id; 3. CROSS JOIN Toutes les combinaisons possibles (produit cartésien). SELECT * FROM T1 CROSS JOIN T2; Note Spéciale MySQL Le mot-clé JOIN seul équivaut à INNER JOIN. MySQL ne supporte pas FULL OUTER JOIN nativement. Pour un FULL JOIN, on utilise UNION de deux requêtes. INNER LEFT Conseils d'Analyste 1 Utilisez les Alias pour plus de clarté : FROM clients c JOIN commandes o. 2 En Big Data, évitez le SELECT * lors des jointures pour ne pas saturer la mémoire avec des colonnes inutiles. 3 Vérifiez toujours vos colonnes de jointure (Clé Primaire / Clé Étrangère) pour éviter les doublons inattendus. Maîtrise SQL Détective • Module Big Data
Requêtes Haut Vol SlidesRequêtes de Haut Vol Sous-requêtes et CTE : structurez vos analyses comme un véritable ingénieur Big Data. La Sous-requête : Une poupée russe C'est une requête à l'intérieur d'une autre requête. Exemple concret : "Trouve-moi les produits dont le prix est supérieur à la moyenne." 1. Calculer la moyenne (Requête interne) 2. Filtrer les produits (Requête externe) SELECT nom, prix FROM produits WHERE prix > ( SELECT AVG(prix) FROM produits ); Le Graal de la clarté : Les CTE WITH ventes_par_client AS ( SELECT client_id, SUM(total) as ca FROM commandes GROUP BY client_id ) SELECT * FROM ventes_par_client WHERE ca > 5000; Le mot-clé WITH Les CTE créent une "table temporaire" lisible juste pour votre requête finale. Lecture facile (de haut en bas) Réutilisable dans la même requête Standard en Big Data
Défi Final Analyste IA ProjectDéfi Final : L'Analyste IA Projet de Synthèse • Mastery SQL VOTRE MISSION Vous venez d'être recruté par Aura Intel, une startup de pointe. Votre première tâche est de fournir un rapport complet sur l'utilisation de leurs modèles d'IA pour optimiser les coûts serveurs. Les Tables du Projet utilisateurs id (PK) nom pays plan (Gratuit, Pro) requetes_ia id (PK) user_id (FK) modele_id (FK) tokens_utilises modeles_ia id (PK) nom_modele cout_par_token Étape 1 : Analyse de base Combien d'utilisateurs avons-nous par pays ? Triez-les du plus au moins peuplé. Étape 2 : Fusion des données Affichez la liste des requêtes (ID) avec le nom de l'utilisateur et le nom du modèle IA utilisé. (Besoin de Joins !) Étape 3 : Calcul Expert Calculez le coût total généré par chaque utilisateur (tokens_utilises * cout_par_token). Seuls les utilisateurs ayant dépensé plus de 50€ doivent apparaître. Rapport Final Préparez un fichier .sql avec vos solutions commentées.
Guide Évaluation Finale Teacher ResourceGuide d'Évaluation : Défi Final Outils pour l'instructeur • Session de clôture Grille d'évaluation CritèreIndicateur de succèsPointsSyntaxe SQLUtilisation correcte des mots-clés, points-virgules et alias./5Maîtrise des JOINSCapacité à lier 3 tables avec les bonnes clés étrangères./5Calculs complexesMultiplication en ligne (tokens * coût) et agrégations./5Logique de filtrageUtilisation de HAVING pour les filtres post-agrégation./5 Solutions Attendues -- ÉTAPE 3 : LA PLUS COMPLEXE SELECT u.nom, SUM(r.tokens_utilises * m.cout_par_token) AS depense_totale FROM utilisateurs u JOIN requetes_ia r ON u.id = r.user_id JOIN modeles_ia m ON r.modele_id = m.id GROUP BY u.nom HAVING SUM(r.tokens_utilises * m.cout_par_token) > 50 ORDER BY depense_totale DESC; Conseils pour le Débriefing Clarté du code : Montrez comment les alias (u, r, m) facilitent la lecture des jointures multiples. Performance : Expliquez que dans le Big Data, on évite le SELECT * pour économiser de la bande passante et des coûts. Vers l'IA : Mentionnez que SQL est la première étape avant d'utiliser Python ou des outils comme Spark pour l'IA à grande échelle.