Après de nombreuses années dans l’ombre d’autres outils (python, R…), le SQL revient en force dans le quotidien du data analyst et du data engineer. En effet, on a souvent cru que le SQL n’avait plus sa place dans le monde de la data car on a confondu data science et préparation de données. De plus avec l’avènement des Data Lake, les langages comme scala et python (pour PySpark) ont pris une place très importante.
Néanmoins depuis quelques années, les data warehouse ont repris du poil de la bête avec notamment des outils extrêmement puissants comme DuckDB dans l’écosystème open source et des solutions en cloud extrêmement puissante comme Snowflake ou BigQuery. Ces bases de données utilisent du SQL et vont un peu plus loin que les SGBD classiques. Il est néanmoins important de connaître ces systèmes qui sont centraux dans les métiers de la data.
Les SGBD relationnels (Systèmes de Gestion de Bases de Données relationnelles) sont au cœur de la plupart des applications professionnelles, de la business intelligence au web en passant par la science des données. Je vous propose une vue d’ensemble des principaux moteurs SQL, de leurs spécificités techniques (dialectes SQL, stockage, performances) et de leurs cas d’usage typiques.
1. SGBD relationnels vs autres types de stockage
Avant de choisir un moteur SQL, il est essentiel de comprendre ce qu’est un SGBD relationnel et comment il se différencie des autres systèmes de stockage de données.
Qu’est-ce qu’un SGBD relationnel ?
Un SGBD relationnel organise les données sous forme de tables, où chaque ligne correspond à un enregistrement et chaque colonne à un attribut. Il repose sur le modèle relationnel de Codd, avec des concepts fondamentaux comme les clés primaires, les clés étrangères, et les jointures.
Comparaison avec d’autres stockages
| Type de stockage | Caractéristiques principales | Cas d’usage typiques |
|---|---|---|
| SGBD relationnel | Structuré, ACID, requêtage SQL, relations fortes | Applications transactionnelles, BI |
| NoSQL (document) | Non structué, JSON/BSON, pas de schéma strict | Applications web, mobile, agiles |
| Clé/valeur | Simple, ultra-rapide, pas de relations | Cache, sessions, configuration |
| Orientée colonne | Lecture optimisée, analytique, compression élevée | Data warehouses, outils d’analyse massive |
| Fichiers plats / CSV | Faible structure, lecture simple, pas de gestion transactionnelle | Échange de données, prototypage rapide |
Le choix d’un type de stockage doit se faire dans le cadre de vos usages. Les SGBD sont les plus répandus dans les entreprises.
2. Comparatif des SGBD relationnels les plus courants
Dans le monde des SGBD, il y a les « historiques » parmi lesquels on trouvera Oracle et SQL server. Les portables avec SQLite et DuckDB
| SGBD | Forces principales | Limites / faiblesses |
|---|---|---|
| PostgreSQL | Open source, SQL avancé, JSONB, extensible, très rigoureux | Légèrement plus complexe à administrer que MySQL |
| MySQL | Léger, très utilisé, simple à déployer | Moins strict sur les contraintes, moins performant à grande échelle |
| MariaDB | Amélioration libre de MySQL, plus de moteurs de stockage | Moins compatible avec certains outils prévus pour MySQL |
| SQL Server | Excellente intégration Microsoft, interface graphique complète | Coûteux, majoritairement Windows |
| Oracle | Hautement scalable, riche en fonctionnalités (RAC, partitionnement…) | Très cher, complexe à administrer |
| SQLite | Ultra portable, sans serveur, idéal pour les apps embarquées | Pas adapté au multi-utilisateur, pas de véritable SGBD serveur |
| DuckDB | Ultra performant, ultra portable, idéal pour les apps web manipulant de grandes quatités de données | Plus adapté à un travail en local ou sur un serveur indépendant. |
| Snowflake | Cloud-native, scaling automatique, requêtes SQL modernes | Dépendance au cloud, coût à la requête |
| BigQuery | Ultra rapide sur très gros volumes, sans administration | Complexité des jointures, coûts potentiellement élevés |
3. Les dialectes SQL par SGBD
Le SQL (Structured Query Language) est le langage standard utilisé pour interroger et manipuler des bases de données relationnelles. Depuis plusieurs décennies, il constitue le socle de la majorité des systèmes de gestion de données, aussi bien transactionnels qu’analytiques.
Contrairement à des langages impératifs comme Python ou Java, le SQL repose sur une approche déclarative : on décrit le résultat attendu, et non la manière de le calculer. Cette caractéristique est fondamentale pour comprendre son fonctionnement, ses performances et son rôle dans les architectures data modernes.
Un langage déclaratif
Le SQL est un langage déclaratif.
Cela signifie que l’utilisateur spécifie ce qu’il veut obtenir, sans indiquer comment le moteur doit procéder.
Par exemple, lorsqu’on écrit une requête SQL pour agréger des ventes par client, on ne décrit ni les boucles, ni l’ordre des calculs, ni les structures mémoire utilisées. Ces choix sont laissés au moteur de base de données, via son optimiseur de requêtes.
Cette séparation entre l’intention (la requête) et l’exécution (le plan choisi par le moteur) permet :
- une écriture plus simple et plus lisible,
- une optimisation automatique des performances,
- une portabilité du code entre différents moteurs SQL.
Un modèle relationnel fondé sur les tables
Le SQL repose sur le modèle relationnel, formalisé par Edgar F. Codd.
Dans ce modèle :
- les données sont organisées en tables,
- chaque table est composée de lignes (enregistrements) et de colonnes (attributs),
- les relations entre tables sont exprimées via des clés (primaires et étrangères).
Les opérations SQL (sélection, projection, jointure, agrégation) sont issues de l’algèbre relationnelle et permettent de manipuler ces tables de manière formelle et cohérente.
Les transactions et le principe ACID
Dans les bases de données transactionnelles, le SQL s’appuie sur le principe ACID, qui garantit la fiabilité des opérations.
ACID est un acronyme pour :
- Atomicité
Une transaction est indivisible : soit toutes les opérations sont appliquées, soit aucune ne l’est. - Cohérence (Consistency)
Une transaction fait passer la base d’un état valide à un autre état valide, en respectant les règles d’intégrité. - Isolation
Les transactions concurrentes ne se perturbent pas mutuellement ; le résultat final est équivalent à une exécution séquentielle. - Durabilité
Une fois une transaction validée, ses effets sont persistants, même en cas de panne.
Ces garanties sont essentielles pour les systèmes transactionnels (banque, commandes, paiements), mais sont souvent partiellement ou totalement assouplies dans les systèmes analytiques modernes pour privilégier la performance.
Les grandes familles de SQL
Bien que le SQL soit un standard, il existe plusieurs formes de SQL, selon les usages et les moteurs.
SQL standard (ANSI SQL)
Le SQL standard définit :
- la syntaxe de base (SELECT, JOIN, GROUP BY…),
- les types de données fondamentaux,
- les règles générales.
Il garantit une interopérabilité minimale, mais reste volontairement abstrait et incomplet.
Dialectes SQL
Chaque moteur implémente son propre dialecte SQL, avec :
- des fonctions spécifiques,
- des types supplémentaires,
- des extensions syntaxiques.
Par exemple :
- gestion des dates et timestamps,
- fonctions analytiques,
- gestion des semi-structurés (JSON, ARRAY).
Ainsi, une requête SQL peut nécessiter des adaptations pour changer de moteur, même si les concepts restent identiques.
SQL analytique avancé
Les moteurs modernes proposent des extensions orientées analyse :
- fonctions de fenêtre (window functions),
- CTE (WITH),
- agrégations avancées,
- types complexes.
Ces fonctionnalités permettent d’écrire des transformations complexes directement en SQL, sans passer par un langage externe.
C’est cette forme de SQL qui est massivement utilisée dans les projets dbt par exemple.
Ce qui change d’un SQL à l’autre
Entre les différentes formes de SQL, ce qui change principalement :
- les fonctions disponibles,
- la gestion des types (dates, booléens, NULL),
- les performances et stratégies d’exécution,
- les garanties ACID,
- les capacités analytiques.
Ce qui ne change pas :
- la logique relationnelle,
- les principes déclaratifs,
- la structure fondamentale des requêtes.
Dans le tableau suivant nous rassemblons les principaux dialectes :
| SGBD | Usage dominant | ACID | Stockage | SQL dominant | Spécificités SQL |
|---|---|---|---|---|---|
| Oracle Database | Transactionnel critique | Strict | Lignes | SQL standard + PL/SQL | Procédures stockées, logique métier côté base |
| PostgreSQL | Mixte (OLTP + analytique) | Strict | Lignes | SQL ANSI étendu | CTE, fenêtres, JSON, types riches |
| MySQL | Applications web | Strict | Lignes | SQL simplifié | Capacités analytiques limitées |
| SQL Server | Transactionnel & BI | Strict | Lignes / colonnes | T-SQL | Syntaxe spécifique, intégration BI |
| Snowflake | Analytics cloud | Partiel | Colonnes | SQL analytique | Séparation stockage / calcul |
| BigQuery | Analytics massifs | Faible | Colonnes | SQL analytique | Coût au scan, ARRAY/STRUCT |
| Amazon Redshift | Analytics cloud | Partiel | Colonnes | SQL analytique | Distribution et tri des données |
| DuckDB | Analyse locale | Faible | Colonnes | SQL analytique | In-process, très rapide |
| SQLite | Embarqué léger | Partiel | Lignes | SQL minimal | Faible concurrence, peu analytique |
4. Quel SGBD choisir selon les besoins ?
Les différents SGBD s’adaptent plus ou moins bien aux usages. Il faut donc se concentrer sur l’usage pour sélectionner la bonne solution :
| Usage / Contexte | SGBD recommandé | Pourquoi |
|---|---|---|
| Application métier transactionnelle critique | Oracle Database (PosgreSQL si on recherche une solution open source) | ACID strict, haute disponibilité, robustesse éprouvée |
| Application web transactionnelle classique | PostgreSQL | SQL riche, fiabilité, open-source, très polyvalent |
| Application web simple / CMS | MySQL / MariaDB | Simplicité, large écosystème, performances OLTP |
| Système d’information d’entreprise Microsoft | SQL Server | Intégration native BI et stack Microsoft |
| Data warehouse cloud multi-équipes | Snowflake | Séparation stockage/calcul, élasticité, SQL analytique puissant |
| Analyse de très grands volumes (Big Data) | BigQuery | Scalabilité massive, SQL analytique distribué, serverless |
| Data warehouse sur AWS | Amazon Redshift | Intégration AWS, performances analytiques, SQL familier |
| Analyse locale de fichiers (CSV, Parquet) | DuckDB | Moteur analytique in-process, très rapide, zéro infra |
| Prototypage data / POC | DuckDB ou PostgreSQL | Mise en œuvre rapide, SQL complet |
| Tests, démonstrations, notebooks | DuckDB | Portable, reproductible, idéal pour la formation |
| Base embarquée légère | SQLite | Simplicité, zéro configuration |
| BI / reporting d’entreprise | Snowflake ou BigQuery | Performance analytique, SQL expressif |
| Transformation analytique (ELT) | Snowflake, BigQuery, DuckDB | SQL analytique, peu de contraintes ACID |
5. Pour aller plus loin
Vous souhaitez approfondir les subtilités des requêtes SQL, comprendre les performances, les index, les vues, les fonctions fenêtres ou la modélisation de bases de données relationnelles ?
La formation SQL proposée par Stat4decision vous permet d’approfondir les aspects essentiels du langage SQL et de manipuler les principaux SGBD en pratique, quels que soient vos objectifs professionnels.
Si vous vous intéressez à des technologies plus spécifiques, participez à nos formations :
Vous pouvez également nous contacter directement pour un accompagnement ou une formation sur mesure.
6. Références
Les différents SGBD :
- PostgreSQL – https://www.postgresql.org/
- Oracle – https://www.oracle.com/fr/
- MariaDB – https://mariadb.org/
- MySQL – https://www.mysql.com/fr/
- Snowflake – https://www.snowflake.com/fr/
- BigQuery – https://cloud.google.com/bigquery
- SQLite – https://sqlite.org/
- DuckDB – https://duckdb.org/
Partager cet article
