Skip to content
Back to Blog
developersql-formattersqldatabases

Comment formater la sortie d'une requête SQL pour la lisibilité

Un mur de SQL non indenté cache des bugs. Voici comment formater une requête de manière adaptée au dialecte, avec un formateur gratuit qui détecte automatiquement PostgreSQL, MySQL, T-SQL et plus.

SZ
Founder, Molixa
10 min read
Partager
Comment formater la sortie d'une requête SQL pour la lisibilité
Table of contents6 sections

Pour formater une requête SQL, placez chaque clause principale (SELECT, FROM, WHERE, JOIN, GROUP BY) sur sa propre ligne, indentez les colonnes et conditions en dessous, et utilisez une casse cohérente pour les mots-clés. Le moyen le plus rapide est de la coller dans un formateur SQL qui détecte automatiquement votre dialecte et la ré-indente en un clic, entièrement dans votre navigateur.

Le formatage n'est pas cosmétique. Une requête tassée sur une seule ligne cache les bugs précis qui vous coûtent des heures : une condition de jointure manquante qui transforme silencieusement une jointure interne en produit cartésien, une clause WHERE qui aurait dû être un ON, ou un OR qui se lie plus largement que vous ne le pensez. Étalez la même requête sur des lignes indentées et ces erreurs sautent aux yeux. Un SQL lisible est un SQL débogable.

SQL désordonné vs SQL formaté#

Voici une requête telle qu'elle arrive habituellement, collée depuis un journal ou un dump ORM :

select u.id,u.name,o.total from users u join orders o on u.id=o.user_id where u.active=1 and o.total>100 order by o.total desc;

Elle s'exécute, mais vous ne pouvez pas la parcourir. Maintenant, la même requête, formatée :

SELECT
    u.id,
    u.name,
    o.total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.active = 1
  AND o.total > 100
ORDER BY o.total DESC;

Rien n'a changé dans la logique. Mais maintenant, la condition de jointure, les deux filtres et le tri sont chacun sur leur propre ligne, le AND est indenté sous WHERE pour que vous voyiez qu'il s'agit d'une seconde condition, et les mots-clés en majuscules séparent la structure de vos noms de colonnes et de tables. Si cette JOIN n'avait pas son ON, le manque serait évident au premier coup d'œil.

Les règles de formatage essentielles#

Un bon formatage SQL repose sur quelques décisions cohérentes. Appliquez-les de la même manière à chaque fois et vos requêtes deviendront prévisibles à lire.

  • Une clause par ligne. SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY et chaque JOIN commencent sur une nouvelle ligne.
  • Indentez le corps. Les colonnes de la liste de sélection, les conditions de la clause WHERE et les tables jointes sont indentées sous leur clause.
  • Opérateurs booléens en début de ligne. Placez AND et OR au début de la ligne, pas à la fin. Vous lisez de haut en bas, donc l'opérateur qui relie deux conditions doit être là où votre œil se pose.
  • Casse cohérente des mots-clés. Les mots-clés en majuscules (SELECT, FROM) et les identifiants en minuscules ou en casse mixte sont la convention courante car elle sépare visuellement le langage des données. Choisissez une casse et ne mélangez jamais.
  • Alignez les comparaisons. colonne = valeur avec des espaces autour de l'opérateur se lit plus vite que colonne=valeur.
Choix de styleOptions courantesPourquoi c'est important
Casse des mots-clésMAJUSCULES / minusculesSépare les mots-clés SQL de vos identifiants
Indentation2 ou 4 espacesMontre la hiérarchie clause-corps ; choisissez-en une et restez cohérent
Opérateurs booléensdébut / finLe AND/OR en début de ligne se lit mieux dans des conditions empilées
Position des virgulesdébut / finLes virgules en début de ligne facilitent la mise en commentaire d'une colonne

Bizarreries des dialectes que les formateurs génériques cassent#

C'est là que la plupart des formateurs universels échouent. SQL n'est pas un langage unique ; chaque base de données a une syntaxe qu'un formateur naïf déforme. Si votre outil de formatage ne connaît pas le dialecte, il peut casser du SQL valide ou le laisser moche.

  • T-SQL (SQL Server) utilise des identifiants entre crochets comme [Order Details] et [user]. Un formateur qui ne les reconnaît pas peut ajouter des espaces parasites à l'intérieur des crochets ou les traiter comme des jetons séparés. T-SQL utilise aussi TOP et les blocs procéduraux BEGIN ... END qui nécessitent leur propre indentation.
  • PostgreSQL a des chaînes entre dollars ($$ ... $$) pour les corps de fonctions, la syntaxe de cast :: et les littéraux de tableaux. Un formateur doit laisser le contenu d'un bloc $$ intact plutôt que de le reformater comme s'il s'agissait d'une instruction.
  • MySQL utilise des identifiants entre guillemets inverses (`select`) et a ses propres fonctions et la syntaxe LIMIT.
  • Oracle (PL/SQL) encapsule la logique dans des blocs DECLARE/BEGIN/END et utilise (+) pour les jointures externes héritées, ce qu'un formateur SELECT simple ne gère pas.
  • SQLite est surtout standard mais tolère les chaînes entre guillemets doubles à des endroits où d'autres les rejettent.

Un formateur qui détecte automatiquement le dialecte que vous avez collé, puis applique les bonnes règles de tokenisation, fait la différence entre un résultat propre et une requête cassée. C'est pourquoi la détection du dialecte importe plus que les réglages d'indentation.

Astuce : si un formateur change ce que votre requête fait, et pas seulement son apparence, c'est qu'il a mal interprété le dialecte. Le formatage doit être purement présentatif. Testez la version formatée sur votre base de données avant de lui faire confiance.

Pourquoi le formatage côté navigateur est important pour SQL#

Il y a un angle de confidentialité spécifique à SQL qui ne s'applique pas au formatage, par exemple, du JSON générique. Vos requêtes contiennent votre schéma. Les vrais noms de tables, noms de colonnes et parfois des valeurs littérales comme des adresses e-mail ou des identifiants se trouvent directement dans le texte. Coller cela dans un outil web aléatoire signifie que la requête, et tout ce qu'elle révèle sur votre modèle de données, atteint le serveur de quelqu'un d'autre.

Un formateur qui s'exécute à 100 % dans votre navigateur ne télécharge jamais la requête. Le texte est tokenisé et ré-indenté par JavaScript dans la page, et rien ne quitte l'onglet. Pour quiconque formate des requêtes de production, des noms de schémas internes ou tout ce qui est soumis à un NDA, c'est le seul paramètre par défaut sûr. Le formateur SQL Molixa fonctionne entièrement côté client pour cette raison : votre requête ne touche jamais un serveur.

Étape 1 : Collez la requête brute et laissez-la détecter le dialecte#

Déposez votre SQL non formaté dans le formateur SQL gratuit. Il détecte si vous avez collé du PostgreSQL, MySQL, T-SQL, Oracle ou SQLite à partir de la syntaxe (les identifiants entre crochets signalent T-SQL, les backticks signalent MySQL, le dollar-quoting signale PostgreSQL) et applique le tokenizer correspondant. Si la détection se trompe sur un extrait ambigu, définissez le dialecte manuellement.

Étape 2 : Définissez votre casse et votre indentation, puis formatez#

Choisissez des mots-clés en majuscules ou minuscules et une indentation de 2 ou 4 espaces pour correspondre au style de votre équipe. Lancez le formatage. Les clauses se répartissent sur leurs propres lignes, le corps s'indente et les opérateurs booléens passent en position de tête. Lisez le résultat de haut en bas et confirmez que chaque jointure a son ON et que chaque condition est là où vous l'attendez.

Étape 3 : Copiez-le et vérifiez-le par rapport à la base de données#

Copiez la requête formatée dans votre éditeur ou fichier de migration. Comme le formatage est uniquement présentiel, la requête se comporte de manière identique, mais exécutez-la une fois pour confirmer, surtout si l'outil a dû deviner le dialecte. Ensuite, validez la version lisible pour que la prochaine personne qui la touche n'hérite pas d'un mur d'une ligne.

Formatage dans votre flux de travail#

Un formateur est particulièrement utile à deux moments : lorsque vous héritez d'une requête compressée écrite par quelqu'un d'autre, et juste avant de valider la vôtre. Formater à l'arrivée vous aide à comprendre du SQL étranger ; formater au départ maintient la lisibilité de votre dépôt. De nombreuses équipes exécutent également un formateur dans un hook de pré-validation afin que chaque requête validée suive automatiquement un seul style maison.

Le même principe côté navigateur, sans téléchargement, s'applique à tous les utilitaires pour développeurs. Si vous nettoyez également des réponses API ou des configurations en parallèle de votre SQL, le formateur JSON s'en charge, et le testeur d'expressions régulières est pratique lorsque vous extrayez des valeurs structurées de résultats de requêtes ou de journaux. Pour une tâche de conversion connexe, notre guide sur la transformation de JSON en types TypeScript couvre la même approche dans le navigateur, respectueuse de la vie privée.

Foire aux questions#

Comment formater une requête SQL pour la rendre lisible ? Placez chaque clause principale (SELECT, FROM, WHERE, chaque JOIN, GROUP BY, ORDER BY) sur sa propre ligne, indentez les colonnes et conditions sous leur clause, mettez AND et OR au début des lignes de conditions empilées, et utilisez une casse cohérente pour les mots-clés. Le moyen le plus rapide est un formateur SQL qui ré-indente toute la requête en un clic.

Les mots-clés SQL doivent-ils être en majuscules ou en minuscules ? Les deux fonctionnent ; ce qui compte, c'est la cohérence. Les mots-clés en majuscules avec des identifiants en minuscules est la convention la plus courante car elle sépare visuellement le langage SQL de vos noms de tables et de colonnes. Choisissez un style, appliquez-le à chaque requête, et laissez un formateur l'appliquer pour ne plus jamais avoir à y penser.

Est-il sûr de formater du SQL dans un outil en ligne ? Seulement s'il s'exécute dans votre navigateur. Les requêtes exposent votre schéma, les vrais noms de tables et de colonnes, et parfois des valeurs littérales, donc un outil qui télécharge la requête envoie tout cela à un serveur. Un formateur côté client comme le formateur SQL Molixa traite tout dans la page et ne transmet jamais votre requête, ce qui est le choix sûr pour du SQL de production.

Le formatage modifie-t-il ce que fait ma requête SQL ? Non. Un formatage correct est purement présentatif ; il ajoute des sauts de ligne, des indentations et des changements de casse sans toucher à la logique. Si un formateur altère le résultat, c'est qu'il a mal analysé votre dialecte. C'est pourquoi un formatage conscient du dialecte est important, et pourquoi vous devriez exécuter la requête formatée une fois pour confirmer qu'elle se comporte à l'identique.

Un seul formateur peut-il gérer PostgreSQL, MySQL et T-SQL ? Oui, s'il détecte le dialecte et applique les bonnes règles. T-SQL utilise des identifiants entre crochets, MySQL utilise des backticks, et PostgreSQL utilise des blocs entre dollars, donc un formateur doit les reconnaître pour éviter de les déformer. Le formateur Molixa détecte automatiquement PostgreSQL, MySQL, T-SQL, Oracle et SQLite, et vous permet de choisir manuellement.

Pourquoi mettre AND et OR au début de la ligne ? Parce que vous lisez SQL de haut en bas, et un opérateur booléen en début de ligne se trouve là où votre œil se pose au début de chaque condition, rendant la structure logique évidente. Les opérateurs en fin de ligne se cachent à la fin de la ligne précédente, où ils sont faciles à manquer. Les virgules en début de ligne dans la liste SELECT fonctionnent de la même manière et facilitent la mise en commentaire d'une colonne.

developersql-formattersqldatabases

More from Molixa

Try Molixa Tools

50+ free AI tools for content creation, SEO, coding, and more. No signup, no watermark.

Explore all tools