Présentation
Pour la première fois depuis la création de ce blog technique, je vais vous parler d’un livre que vous devez vraiment avoir tellement il est pratique, inspirant, et bien fourni.
Pourtant ce livre date 2005, ce qui peut sembler ancien dans le monde de l’informatique, et il l’est. Mais, bien que de nombreux passages doivent être revus en considérant les versions actuelles des bases de données, celui-ci propose une somme considérable de cas pratiques en s’appuyant sur plusieurs bases de données différentes et non pas une seule !
Ainsi, ce livre couvre SQL Server (version 2005), PostgreSQL (version 8), Oracle (version 10g), MySQL (version 5) et DB2 (version 8). Oui, cet ouvrage prend bien en compte cinq bases de données différentes.
Cet ouvrage est SQL Cookbook d’Anthony Molinaro aux éditions de l’excellent O’Reilly. Ce livre est dans la langue de James Bond, pensez-y.

Vous pouvez consulter la page produit sur O’Reilly pour plus d’information.
Structure
Dans la préface, l’auteur définit deux tables qui serviront pour tous les cas plus ou moins compliqués présentés dans le livre. Ces tables sont EMP
pour les employés et DEPT
pour les départements d’une hypothétique société. Il y a aussi des tables utilitaires servant juste à faire des pivots.
La table EMP
comporte les champs :
EMPNO
, qui est la clé primaire/le numéro du salarié dans la boîteENAME
, qui est le prénom du salariéJOB
, qui est le poste occupé par le salariéMGR
, qui pointe vers le champEMPNO
du supérieur de l’employéHIREDATE
, qui est la date d’embaucheSAL
, qui est la salaireCOMM
, qui est la commission que perçoivent certains salariés (ceux ayant le champJOB
àSALESMAN
)- et enfin le champ
DEPTNO
qui est une clé étrangère vers une entrée dans la tableDEPT
Rien qu’avec ça, il y a plein de cas à envisager : traitement des dates, classement par date, regroupement seon plein de critères, récursivité hiérarchique, etc.
Ensuite, la table DEPT
permet d’accroître le nombre des exemples. Elle se compose ainsi :
DEPTNO
sans surprise, la clé primaireDNAME
le nom du département,LOC
la localisation.
Avec des deux tables, le livre répond à tout un ensemble de problèmes en donnant des solutions clairement expliquées, et ce pour chaque base de données. Le tout est réparti dans 14 chapitres accompagnés de deux annexes.
Voici quelques titres de problématiques soulevées dans le livre :
- Investigating Future Rows
- Shifting Row Values
- Finding Records with the Highest and Lowest Values
- Determining WhichRows Are Reciprocals
- Reverse Pivoting a Result Set into One Column
- Calculating Simple Subtotals
- etc.
Le bouquin est très riche en exemples. Il faut autant le feuilleter sans but précis que le consulter pour trouver une solution à un cas immédiat à traiter.
Limitations
Alors il y a quelques points à prendre en compte :
- Oui, comme je l’ai dit, il est ancien, il faut garder ça en tête quand on le lit.
- Ça manque de CTE, de fonctions fenêtrées, mais à l’époque, certaines bases de données étaient limités dans ces fonctionnalités.
- Ça ne cause pas de script, comme du Transat SQL, du pl/pgSQL, etc. Mais c’est le but de cet ouvrage : se consacrer uniquement au SQL.
Mais ces limitations seront bientôt du passé…
La seconde édition
Heureusement, face aux limitation de la première édition, une seconde édition paraîtra le 30 novembre 2020 !
Pour l’aider dans sa tâche, l’auteur de la première édition fait cette fois équipe avec Robert de Graaf. Le titre change afin de viser plus de monde en « SQL Cookbook: Query Solutions and Techniques for All SQL Users ».

Cette nouvelle édition devraient inclure, dixit O’Reilly :
- des recettes entièrement révisées en incluant des fonctions fenêtrées dans les différentes implémentations SQL
- des recettes supplémentaires qui reflètent l’adoption généralisée des Common Table Expressions (CTE) pour des solutions plus claires et lisibles.
- des nouvelles recettes pour rendre SQL plus utile pour les personnes qui ne sont pas des experts en bases de données, y compris les data scientists
- des solutions pour travailler avec des nombres et des chaînes.
- des recettes SQL à jour tout au long du livre pour vous guider à travers les bases
Pour résumer…
Un livre qui ne traite pas de grands concepts pénibles à lire, mais au contraire qui présente des problèmes et donne des solutions sans y passer 10 heures et sans être partisant de telle ou telle base de données. Ce sont ces points forts que j’apprécie dans ce livre. Je pense que je vais acheter la seconde édition… Et vous ?
Première édition
- Date de publication : Décembre 2005
- Éditeur : O’Reilly Media, Inc.
- ISBN: 978-0-596-00976-2
Seconde édition
- Date de publication : Novembre 2020
- Éditeur : O’Reilly Media, Inc.
- ISBN: 978-1-492-07744-2