Skip to content

Latest commit

 

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SQL Playground

Une bibliothèque personnelle de requêtes, de notes et de notebooks pour explorer le SQL en contexte professionnel. Le dépôt couvre aussi bien les opérations courantes que le nettoyage, l'analyse avancée et la modélisation de données.

Les exemples ciblent PostgreSQL 15+ et MySQL 8+. Les snippets communs privilégient une syntaxe portable ; les différences importantes sont isolées dans les dossiers propres à chaque moteur.

Tous les commentaires présents dans le code sont rédigés en français, avec un ton volontairement direct et pédagogique.

Ce que contient le dépôt

flowchart LR
    R[SQL Playground] --> S[snippets]
    R --> N[notebooks]
    R --> D[notes]
    R --> F[dictionnaire]
    S --> C[Socle commun]
    S --> P[PostgreSQL]
    S --> M[MySQL]
    S --> B[Cas métier]
    N --> E[Notebooks exécutables]
    N --> G[Guides pédagogiques]
    D --> X[Explications ciblées]
    F --> DF[Fonctions et constructions SQL]
Loading
  • snippets/ : requêtes prêtes à adapter, classées du socle SQL aux cas avancés ;
  • snippets/postgresql/ : JSONB, séries, ON CONFLICT, index et plans PostgreSQL ;
  • snippets/mysql/ : JSON, CTE récursifs, ON DUPLICATE KEY et plans MySQL ;
  • snippets/metiers/ : exemples e-commerce, SaaS, finance, logistique et RH ;
  • notebooks/ : parcours thématiques, dont trois exécutables sans serveur de base ;
  • notes/ : rappels personnels sur le grain, les fenêtres, les SCD, les transactions et la portabilité.
  • dictionnaire/ : table de référence des fonctions, opérateurs et constructions avec exemples et compatibilité par moteur.

Démarrage rapide

Le jeu de données commun se trouve dans snippets/00_schema_et_donnees.sql. Il sert de base aux exemples numérotés 01 à 16. Les thèmes 17 à 34 annoncent directement leurs tables supposées.

# PostgreSQL
psql -d sql_playground -f snippets/00_schema_et_donnees.sql

# MySQL
mysql sql_playground < snippets/00_schema_et_donnees.sql

Les fichiers ne sont pas tous conçus pour être exécutés intégralement : certains contiennent plusieurs variantes ou des paramètres comme :start_date. Chaque bloc indique son intention et les adaptations éventuelles.

Pour les notebooks autonomes :

python -m pip install -r notebooks/requirements.txt
jupyter lab notebooks/

Repères par besoin

Besoin Point de départ
Retrouver une fonction ou vérifier sa compatibilité dictionnaire/
Filtres, dates, NULL, agrégations 01 à 04
Fenêtres et analyses temporelles 05 à 07
Qualité, déduplication, historisation 08 et 09
Performance et diagnostic 10, puis dossiers moteur
JSON, récursivité, transactions 12 à 14
Modélisation analytique et sécurité 15 et 16
Indexation, recherche et résultats matérialisés 17 à 19
Incrémental, retards et calendriers 20 à 22
Cohortes, fraude et réapprovisionnement 23 à 25
Routines, géospatial et nettoyage avancé 26 à 28
Bitemporel, fuseaux horaires et intervalles 29 à 31
Distributions, pagination et expérimentations 32 à 34
Exemples orientés activité snippets/metiers/

Conventions

  • Un commentaire court explique surtout le pourquoi ou le piège métier.
  • Le grain attendu est annoncé avant les requêtes complexes.
  • Les périodes utilisent de préférence une borne de début incluse et une borne de fin exclue.
  • Les divisions protègent le dénominateur avec NULLIF.
  • Les classements ajoutent une clé de départage pour rester déterministes.
  • Les variantes non portables portent explicitement la mention PostgreSQL ou MySQL.

Compatibilité

La majorité des exemples communs utilise les CTE, fonctions fenêtre et expressions standard disponibles sur PostgreSQL 15+ et MySQL 8+. Les principales différences concernent les intervalles, la génération de séries, le JSON, les upserts, les index partiels et les outils d'analyse de plans. La note portabilite-postgresql-mysql.md résume ces écarts.

Ce dépôt est un terrain de jeu : avant de reprendre une requête en production, il faut vérifier le schéma réel, les volumes, les fuseaux horaires, les règles métier et le plan d'exécution.

Vérification locale

Après installation des dépendances des notebooks, un contrôle unique vérifie la structure, les liens et l’état d’exécution des notebooks :

python tools/validate_repository.py

About

A personal SQL playground for experimenting with queries, patterns, and techniques, with my own snippets and cheat sheets.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages