Formateur SQL
Collez une requête SQL et obtenez-la reformatée avec chaque clause (SELECT, FROM, WHERE, JOIN, GROUP BY…) sur sa propre ligne indentée.
1 125 vues
Comment ça fonctionne
Une longue requête SQL écrite sur une seule ligne est difficile à parcourir pour en saisir la structure — où se termine la clause WHERE et où commence la GROUP BY, quel JOIN appartient à quelle table ? Cet outil prend du SQL brut et le découpe en lignes séparées à chaque limite de clause majeure : SELECT, FROM, WHERE, toute la famille JOIN (INNER JOIN, LEFT JOIN, RIGHT JOIN…), GROUP BY, ORDER BY, HAVING et UNION. Les conditions enchaînées avec AND/OR, ainsi que les conditions de jointure après ON, sont indentées d'un niveau sous la clause à laquelle elles appartiennent, et les mots-clés sont mis en majuscules en option pour la cohérence. Une requête comme select id,name from users where active=1 and role='admin' order by name devient un bloc où SELECT, FROM, WHERE et ORDER BY débutent chacun leur propre ligne, avec la condition AND indentée sous WHERE — la même information, simplement disposée comme elle le serait à la main lors d'une revue de code.
Cela compte le plus précisément là où c'est le plus difficile à faire à la main : des requêtes avec plusieurs tables jointes, une sous-requête enfouie dans une clause WHERE, ou une expression CASE à plusieurs branches. Une indentation cohérente est ce qui permet à un relecteur de repérer d'un coup d'œil une condition de jointure manquante ou une parenthèse mal placée, plutôt que de lire caractère par caractère.
Ce qu'il faut savoir
Ceci est un formateur, pas un validateur — il ne fait que réorganiser les espaces et les sauts de ligne autour d'un ensemble fixe de mots-clés qu'il reconnaît ; il n'analyse jamais la requête en un arbre syntaxique et ne l'exécute jamais contre une base de données. Un validateur véritablement conscient du dialecte nécessiterait un analyseur complet pour chaque variante SQL, car MySQL, PostgreSQL, SQL Server et SQLite divergent tous sur des détails comme l'échappement des identifiants, les fonctions de date, et même les instructions qui sont légales — une vérification superficielle côté navigateur prétendant valider tout cela ne produirait qu'une fausse confiance. Si le résultat formaté semble étrange, cela signifie généralement que l'entrée contenait déjà une faute de frappe ou une parenthèse non équilibrée ; l'outil formate autour plutôt que de le signaler.
Comme il n'agit que sur la mise en page du texte, il est sûr de l'exécuter sur des requêtes de production : les identifiants, les littéraux de chaîne, les valeurs numériques et les opérateurs ne sont jamais réécrits, ajoutés ou supprimés — seuls les espaces changent, plus la casse des mots-clés en option. Rien n'est envoyé où que ce soit ni exécuté ; la requête ne quitte jamais le navigateur.
Questions fréquentes
Cela me dit-il si mon SQL est correct ?
Non — délibérément. La vraie validation SQL dépend de la base de données ciblée (MySQL, PostgreSQL, SQL Server ont tous des particularités de syntaxe différentes), et un outil léger dans le navigateur ne peut pas le faire honnêtement. Ceci ne fait que reformater la mise en page, sans jamais prétendre que votre requête est valide ou invalide.
Cela va-t-il casser ma requête ?
Non — cela insère uniquement des sauts de ligne et de l'indentation, et met en majuscules les mots-clés en option. Le texte SQL lui-même (identifiants, valeurs, opérateurs) n'est jamais modifié.
Puis-je utiliser ceci sur n'importe quel dialecte SQL (MySQL, PostgreSQL, SQL Server) ?
Oui, au niveau de la mise en page — les mots-clés de clause que ce formateur reconnaît (SELECT, FROM, WHERE, JOIN, GROUP BY, etc.) sont communs à pratiquement tous les dialectes SQL. Ce qu'il ne fera pas, c'est valider la syntaxe, les fonctions ou les règles d'échappement spécifiques au dialecte ; celles-ci diffèrent suffisamment entre moteurs pour que seule l'exécution réelle de la requête contre la base de données puisse confirmer son exactitude.
Que se passe-t-il avec les sous-requêtes ou les CTE ?
Les instructions SELECT imbriquées et les blocs WITH (expressions de table communes) sont formatés récursivement avec les mêmes règles de découpage par clause, si bien qu'une requête interne obtient sa propre structure indentée à l'intérieur de la requête externe — c'est exactement là que le formatage aide le plus, puisque les requêtes profondément imbriquées sont les plus difficiles à lire sur une seule ligne.
Le formatage change-t-il le comportement de ma requête ?
Non. Seuls les espaces, les sauts de ligne et éventuellement la casse des mots-clés sont modifiés. Chaque identifiant, littéral, comparaison et opérateur reste exactement tel qu'écrit, si bien que la requête formatée est fonctionnellement identique à l'originale — elle produit le même jeu de résultats dans les deux cas.
Outils similaires
Signaler un problème
Formateur SQL
Commentaires
Pas encore de commentaires — soyez le premier à en écrire un !