SQL (Structured Query Language) est le langage standard pour interagir avec les bases de données relationnelles. Que vous administriez PostgreSQL, MySQL, MariaDB ou SQLite, les mêmes fondamentaux SQL reviennent partout : requêter des données, les modifier, les structurer, les protéger.
Vous n’avez pas besoin d’être développeur pour en avoir besoin. Un SELECT bien écrit dans pg_stat_activity ou performance_schema peut vous épargner des heures de diagnostic. Un UPDATE … WHERE mal maîtrisé peut détruire des données en production en une fraction de seconde.
Cette section vous propose une progression en 5 guides, du SELECT basique aux fonctionnalités avancées (CTE, window functions, vues). Tous les guides s’appuient sur une base fil rouge SQLite (infra.db) — une base d’infrastructure avec des serveurs, des déploiements, des alertes et des utilisateurs. Vous la créez une seule fois et vous la réutilisez tout au long du parcours.
L’objectif n’est pas de vous former au développement applicatif, mais de vous donner les compétences SQL indispensables au quotidien pour l’administration et le DevOps.
Pour qui ?
Section intitulée « Pour qui ? »- Administrateurs système qui gèrent des bases PostgreSQL, MySQL ou MariaDB et ont besoin de requêter, vérifier ou corriger des données
- DevOps qui écrivent des scripts de migration, des healthchecks SQL ou des pipelines CI/CD avec des étapes base de données
- SRE qui diagnostiquent des problèmes de performance via
EXPLAIN,pg_stat_statementsou le slow query log - Toute personne qui touche à une base relationnelle sans en maîtriser le langage
Parcours recommandé
Section intitulée « Parcours recommandé »La progression suit un ordre logique : lire les données, puis les modifier, puis croiser les tables, puis agréger, puis structurer les requêtes complexes. Chaque guide s’appuie sur les connaissances du précédent.
| Étape | Guide | Ce que vous saurez faire |
|---|---|---|
| 1 | Syntaxe de base | Lire et filtrer les données d’une table |
| 2 | Manipuler les données | Insérer, modifier, supprimer en toute sécurité |
| 3 | Jointures et sous-requêtes | Croiser les données de plusieurs tables |
| 4 | Fonctions et agrégations | Calculer des statistiques et transformer les données |
| 5 | SQL avancé | Structurer des requêtes complexes lisibles et performantes |
Les guides
Section intitulée « Les guides »La base fil rouge
Section intitulée « La base fil rouge »Tous les guides utilisent une base SQLite nommée infra.db, créée dans le dossier ~/Projets/cours-sql. Elle contient 6 tables réalistes :
| Table | Contenu | Lignes |
|---|---|---|
servers | Serveurs avec OS, datacenter, RAM, CPU | 12 |
users | Utilisateurs (admins, ops, devs) | 10 |
services | Services déployés sur les serveurs | 15 |
deployments | Historique des déploiements | 25 |
alerts | Alertes de supervision | 20 |
categories | Catégories hiérarchiques (pour les CTE récursifs) | 11 |
Le script init-db.sql complet est fourni dans le premier guide (Syntaxe de base). Vous n’avez besoin que de sqlite3 (installé par défaut sur la plupart des distributions Linux et macOS).
SQL standard vs dialectes
Section intitulée « SQL standard vs dialectes »SQL est un standard ISO (dernière version : SQL:2023, ISO/IEC 9075:2023). En pratique, chaque SGBD ajoute ses extensions propres :
| Fonctionnalité | SQL standard | SQLite | PostgreSQL | MySQL |
|---|---|---|---|---|
| Limiter les résultats | FETCH FIRST n ROWS ONLY | LIMIT n | LIMIT n | LIMIT n |
| Insensible à la casse | LIKE + UPPER() | LIKE (insensible ASCII) | ILIKE | LIKE (insensible par défaut) |
| Auto-incrémentation | GENERATED ALWAYS AS IDENTITY | INTEGER PRIMARY KEY AUTOINCREMENT | GENERATED ALWAYS AS IDENTITY | AUTO_INCREMENT |
| Upsert | MERGE | ON CONFLICT | ON CONFLICT | ON DUPLICATE KEY UPDATE |
| Concaténation | || | || | || | CONCAT() |
| Dates | Types dédiés | TEXT (ISO 8601) + strftime() | TIMESTAMP | DATETIME |
Les guides de cette section utilisent une syntaxe SQLite comme base. Les différences avec PostgreSQL et MySQL sont signalées dans des encadrés quand elles sont significatives.