# SQL et bases de données

Les données sont au cœur de toute application informatique. Avant même d'écrire une requête, une base de données existe : un système organisé, cohérent et interrogeable qui permet de stocker, retrouver et transformer des informations à grande échelle. Comprendre SQL et les bases de données, c'est comprendre comment les applications mémorisent le monde — pourquoi une banque peut retrouver instantanément l'historique de millions de transactions, pourquoi une plateforme de streaming recommande un film en quelques millisecondes, ou encore pourquoi certains modèles de données résistent mieux que d'autres aux évolutions d'un système en production.

Ce livre adopte une approche progressive et pratique : chaque concept est illustré par du **code SQL exécutable**, des **visualisations Python** et des **jeux de données concrets**. Les douze premiers chapitres utilisent **SQLite** (intégré à Python, aucune installation requise), les chapitres avancés introduisent **PostgreSQL**, **PostGIS**, **DuckDB** et les bases NoSQL. Les exemples de connexion à un serveur externe sont présentés en blocs illustratifs lorsqu'ils nécessitent une infrastructure particulière.

Ce livre s'adresse aux développeurs qui souhaitent maîtriser SQL au-delà des requêtes basiques, aux data scientists qui manipulent des bases de données dans leur workflow quotidien, et à toute personne curieuse de comprendre comment les données sont réellement stockées, indexées et interrogées dans les systèmes modernes. Aucun prérequis en bases de données n'est nécessaire ; un niveau intermédiaire en Python est suffisant.

## Partie I — Fondations

- [Le modèle relationnel](01_modele_relationnel.md)
- [Premiers pas avec SQL](02_premiers_pas.md)
- [Types de données et contraintes](03_types_contraintes.md)
- [Modélisation et schémas](04_modelisation.md)

## Partie II — Interroger les données

- [Jointures](05_jointures.md)
- [Agrégation et groupement](06_agregation.md)
- [Sous-requêtes et CTE](07_sous_requetes_cte.md)
- [Fonctions fenêtrées](08_fenetrees.md)

## Partie III — Modifier et administrer

- [Modifications de données et transactions](09_modifications_transactions.md)
- [Index et performance](10_index_performance.md)
- [Vues et triggers](11_vues_triggers.md)
- [Sécurité et droits](12_securite.md)

## Partie IV — Au-delà du relationnel

- [PostgreSQL avancé](13_postgresql_avance.md)
- [Bases de données spatiales et PostGIS](14_postgis.md)
- [NoSQL : MongoDB](15_nosql_mongodb.md)
- [NoSQL : Redis](16_nosql_redis.md)
- [Bases vectorielles](17_bases_vectorielles.md)

## Partie V — En production

- [ORM et Python avec SQLAlchemy](18_orm_python.md)
- [Analyse de données avec DuckDB](19_analyse_duckdb.md)
- [Conception avancée](20_conception_avancee.md)

## Partie VI — Bonnes pratiques

- [SQL moderne et bonnes pratiques](21_bonnes_pratiques.md)

---

**À propos de ce livre.** Cet ouvrage couvre SQL et les bases de données depuis les fondements du modèle relationnel jusqu'aux bases vectorielles, NoSQL et aux outils analytiques modernes, en passant par la modélisation, les transactions, les index, PostgreSQL et PostGIS. Chaque chapitre mêle explications conceptuelles rigoureuses, requêtes SQL exécutables et visualisations Python. La rédaction a été réalisée par Lôc Cosnier avec l'assistance de Claude (Anthropic), un modèle de langage. Le contenu a été relu, structuré et validé par l'auteur ; toute erreur restante lui est imputable.
