Apprenez SQL en pratiquant
Learn SQL by doing: write real queries against a real database, with instant feedback. Chaque leçon s'exécute dans votre navigateur, sur une petite base de données d'entraînement : une boulangerie pour la plupart des leçons, et une entreprise pour les leçons sur les employés.
Les requêtes s'exécutent sur PostgreSQL. Le cœur de SQL est le même dans MySQL, SQL Server et SQLite ; les pages de référence signalent les différences. Voir aussi les guides et la référence.
0 leçons sur 34 terminées
Bases
Gratuit : lire, trier et filtrer une table.
- Votre premier SELECTLire des colonnes d'une table, trier les lignes et supprimer les doublons.Free
- Filtrer les lignes avec WHERENe garder que les lignes qui répondent à une condition, y compris les plages de valeurs et les valeurs manquantes.Free
- Motifs, listes et premiers résultatsRechercher du texte avec LIKE, tester une liste avec IN et ne garder que les premières lignes avec LIMIT.Free
Synthèses
Compter, additionner et calculer la moyenne, par groupe.
- Compter, additionner et grouperRésumez de nombreuses lignes en un seul nombre, ou en un nombre par groupe, avec GROUP BY et HAVING.Pro
- Synthèses avancées : STRING_AGG, FILTER et ROLLUPAssemblez des valeurs en un seul texte, comptez selon une condition en une seule passe et ajoutez une ligne de total général.Pro
Jointures
Combiner des tables grâce à leurs clés, y compris celles qui ne correspondent pas.
- Combiner des tables avec JOINAssociez des lignes de deux tables grâce à une clé commune, puis regroupez les lignes combinées.Pro
- Garder les lignes sans correspondance : LEFT JOINUne jointure interne écarte les lignes sans correspondance. Une jointure à gauche les conserve, ce qui permet de repérer ce qui manque.Pro
- Garder les lignes sans correspondance des deux côtés : RIGHT et FULL JOINUne RIGHT JOIN conserve chaque ligne de la table de droite. Une FULL JOIN conserve les lignes sans correspondance des deux tables.Pro
- Comparer des lignes d'une même tableJoignez une table à elle-même pour comparer ses lignes entre elles, sans répéter les paires.Pro
- Plusieurs-à-plusieurs grâce à une table intermédiaireLes commandes et les produits sont liés par order_items. Joindre via cette table permet de répondre à des questions au niveau des produits.Pro
- Toutes les combinaisons : CROSS JOIN et le raccourci USINGCROSS JOIN associe chaque ligne à chaque ligne d'une autre table. USING raccourcit une jointure sur une colonne de même nom dans les deux tables.Pro
Requêtes avancées
CASE, sous-requêtes, fonctions de fenêtrage, UNION, et fonctions de texte et de date.
- Choisir selon des conditions : CASE WHENCASE est l'équivalent SQL de SI et de SI.MULTIPLE : il choisit une valeur pour chaque ligne, selon des conditions.Pro
- Requêtes dans les requêtes : sous-requêtes, WITH et EXISTSUne sous-requête est un SELECT placé dans une autre requête. WITH donne un nom à une sous-requête pour la réutiliser. EXISTS vérifie si une ligne correspondante existe.Pro
- Rang et totaux cumulés : fonctions de fenêtrageOVER ajoute un calcul sur plusieurs lignes sans les regrouper, comme RANK et les totaux cumulés dans Excel.Pro
- Regarder les lignes voisines : LAG, LEAD et DENSE_RANKLAG et LEAD lisent la ligne précédente ou suivante sans jointure. DENSE_RANK classe sans sauter de rang. Les égalités modifient les totaux cumulés.Pro
- Empiler des résultats : UNION et UNION ALLUNION réunit les lignes de deux requêtes en un seul résultat. UNION ALL conserve les doublons. Les deux exigent le même nombre de colonnes.Pro
- Recoupement et différence : INTERSECT et EXCEPTINTERSECT garde les lignes présentes dans les deux résultats. EXCEPT garde les lignes du premier résultat qui sont absentes du second.Pro
- Texte et dates : assembler, découper et compterAssemblez du texte avec ||, changez la casse, extrayez une partie d'une valeur et calculez le nombre de jours entre deux dates.Pro
- Autres outils de texte et de dates : REPLACE, SPLIT_PART et generate_seriesRemplacez et découpez du texte, ajoutez des jours à une date et créez une liste de dates pour repérer les jours manquants.Pro
- Convertir et comparer : CAST, NULLIF, ILIKE et paginationChangez le type d'une valeur, évitez la division par zéro, comparez du texte sans tenir compte de la casse et affichez les résultats page par page.Pro
Modifier les données
Ajouter, modifier et supprimer des lignes en toute sécurité.
- Ajouter, modifier et supprimer des lignesINSERT, UPDATE et DELETE, et pourquoi UPDATE et DELETE ont besoin d'un WHERE.Pro
- Insérer ou mettre à jour : ON CONFLICT et RETURNINGUn upsert insère une ligne, ou la met à jour si la clé existe déjà. RETURNING affiche les lignes modifiées.Pro
- Créer une table avec des règles : CREATE TABLE et transactionsCREATE TABLE définit les colonnes et les règles d'une nouvelle table. Une transaction regroupe des modifications que ROLLBACK peut annuler.Pro
- Modifier la structure : ALTER TABLE, vues et indexAjouter des colonnes et des règles à une table existante, enregistrer une requête comme vue, accélérer les recherches avec un index et supprimer ce qui ne sert plus.Pro
Depuis Excel
Recherches, SUMIF, tableaux croisés dynamiques et matrices dynamiques, en SQL.
- De VLOOKUP à JOINSi vous connaissez VLOOKUP et XLOOKUP, vous connaissez déjà l'idée derrière un JOIN.Pro
- SUMIF, COUNTIFS et tableaux croisés dynamiques en SQLLes sommes et les comptages conditionnels deviennent WHERE combiné à SUM ou COUNT. Un tableau croisé dynamique devient un GROUP BY sur deux colonnes.Pro
- FILTER, UNIQUE et SORT en SQLLes fonctions de tableau dynamique correspondent à WHERE, DISTINCT et ORDER BY.Pro
Base de données des employés
Une deuxième base d'entraînement, une petite entreprise : organigrammes, salaires, dates d'embauche et cadres de fenêtrage.
- Organigrammes avec WITH récursifRemontez ou descendez une chaîne de managers sur autant de niveaux que nécessaire avec une expression de table commune récursive.Pro
- Salaires : N-ième plus élevé, par service et au-dessus de la moyenneClassez avec gestion des égalités, prenez la ligne du haut de chaque groupe et comparez chaque valeur à la moyenne de son groupe.Pro
- Managers et paires : auto-jointures sur employeesJoignez la table employees à elle-même pour afficher les managers, compter les subordonnés directs et trouver des paires.Pro
- Cadres de fenêtrage : totaux cumulés et moyennes mobilesROWS BETWEEN détermine les lignes couvertes par un calcul de fenêtrage : un total cumulé, une moyenne mobile et le traitement des égalités.Pro
Entraînement aux entretiens
Les questions qui reviennent sans cesse : N-ième plus élevée, premier de chaque groupe, doublons et évolution dans le temps.
- Schémas d'entretien : N-ième plus élevée, premier de chaque groupe, doublonsLes questions qui reviennent sans cesse dans les entretiens SQL, chacune avec plusieurs réponses correctes.Pro
- Schémas d'entretien : première ligne par groupe, évolution dans le temps, part du totalDes questions sur les fonctions de fenêtrage qui transforment un tableau en rapport.Pro
Étude de cas
Répondez à de vraies questions sur un mois de ventes.