Formateur SQL
Collez une instruction SQL sur une seule ligne copiée d’un journal ou d’un ORM, et le formateur la décompose en clauses indentées avec une casse de mots-clés cohérente, des nouvelles lignes avant SELECT, FROM, WHERE, GROUP BY, et des colonnes alignées dans la projection. Prend en charge les dialectes MySQL, PostgreSQL, SQL Server, Oracle, SQLite et BigQuery, chacun ayant des mots-clés et des mots réservés légèrement différents.
Comment fonctionne le formatage
-
1
Collez votre SQL
Blob sur une seule ligne, sortie minifiée de Hibernate, peu importe. Plusieurs instructions séparées par `;` sont toutes formatées.
-
2
Choisissez le dialecte et le style
Le dialecte contrôle la liste des mots-clés ; le style contrôle le placement des virgules (en tête vs en fin), la largeur d'indentation et les mots-clés en majuscules/minuscules.
-
3
Les tokens sont analysés, pas remplacés par regex
Un analyseur gère correctement les chaînes, les commentaires, les parenthèses et les sous-requêtes. Les littéraux de chaîne sont préservés tels quels.
-
4
Copiez la sortie formatée
SQL validé, mêmes sémantiques, mise en page plus propre.
Avant et après
Avant :
SELECT u.id,u.name,COUNT(o.id) AS orders FROM users u LEFT JOIN orders o ON o.user_id=u.id WHERE u.created_at>='2024-01-01' GROUP BY u.id,u.name HAVING COUNT(o.id)>5 ORDER BY orders DESC LIMIT 50;
Après (virgule en tête, mots-clés en majuscules, indentation de 2 espaces) :
SELECT
u.id
, u.name
, COUNT(o.id) AS orders
FROM users u
LEFT JOIN orders o
ON o.user_id = u.id
WHERE u.created_at >= '2024-01-01'
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 5
ORDER BY orders DESC
LIMIT 50;
Choix de style qui comptent
- Mots-clés en majuscules vs minuscules. MAJUSCULE est traditionnel et facile à lire. Minuscule est plus propre dans les éditeurs de code modernes avec coloration syntaxique.
- Virgules en tête vs en fin. En tête (
, col) facilite le commentaire d’une seule colonne. En fin (col,) se lit plus naturellement dans le texte. - Placement des virgules dans
GROUP BY. Souvent une par ligne pour les longues clauses, en ligne pour les courtes. - Indentation des JOIN.
ONsur la ligne suivante (indentation suspendue) vs sur la même ligne. Les longues conditions bénéficient de l’indentation suspendue. - Sous-requêtes. Indentez toute la sous-requête, pas seulement la parenthèse d’ouverture.
Pièges spécifiques au dialecte
- Backticks MySQL vs guillemets doubles PostgreSQL pour les identifiants.
- CTEs
WITH, MS SQL a une exigence de;avantWITH; le formateur s’en occupe. - Fonctions de fenêtre, les longues clauses
OVER (...)bénéficient dePARTITION BYetORDER BYen ligne. - BigQuery a
ARRAY_AGG,STRUCTet des suffixes de table (*_yyyymmdd) que l’analyseur ne doit pas casser. - Oracle a la syntaxe de jointure externe
(+), le formateur la préserve mais la signale comme héritée.
Ce que le formateur ne fait pas
- Corriger les bugs, une jointure invalide reste invalide.
- Développer
SELECT *, les listes de colonnes ne sont pas déduites du schéma. - Optimiser les requêtes, mise en page uniquement, pas de plans d’exécution.
- Réécrire les sous-requêtes en CTE, une préoccupation différente.
Questions fréquentes
Non, c’est purement cosmétique. Les espaces, les nouvelles lignes et le placement des virgules changent, mais les mots-clés, les opérateurs, les littéraux et les identifiants sont préservés tels quels.
Pris en charge, CREATE TABLE, ALTER, CREATE PROCEDURE, déclencheurs. Le formateur gère les constructions de blocs (BEGIN ... END) et les continuations de ligne à l’intérieur des procédures.
Elle ne devrait pas, si c’est le cas, c’est probablement un problème de dialecte. Essayez de changer de dialecte. Veuillez signaler les échecs persistants ; nous les considérons comme des bugs.
Flink SQL et Cassandra CQL se ressemblent mais ont des mots-clés spécifiques au dialecte que les formateurs classiques déforment. Utilisez avec prudence et vérifiez que la sortie fonctionne.
Outils similaires
Référence de la table ASCII
Table ASCII complète de 0 à 127 avec décimal, hexadécimal, octal, binaire et référence numérique HTML pour chaque caractère, y compris les codes de contrôle comme NUL, LF et DEL.
Référence des caractères HTML
Liste consultable des entités HTML, de leurs codes nommés et numériques, et un copier-coller en un clic pour les caractères et symboles spéciaux.
Compteur de FPS
Mesurez les FPS du navigateur avec requestAnimationFrame : lissage, fréquence d'images min et max, seuil d'alerte et graphique facultatif. Tout se passe en local, sans envoi ni API.
Référence des raccourcis clavier
Recherchez les raccourcis par défaut documentés de VS Code, Chrome et Bash avec GNU Readline sous macOS, Windows et Linux.
Générateur de carte CSS
Créez le CSS d’un conteneur de carte : fond, bordure, rayon des angles, espacement intérieur et ombre douce, avec aperçu immédiat et code à copier-coller.
Générateur de licence
Générez le texte complet des licences open source avec votre nom et l'année remplis. Couvre les licences MIT, Apache 2.0, GPLv3, BSD-3, MPL-2.0 et CC.
Outil disponible dans d’autres langues
- SQL-formaterare [SV]
- SQLフォーマッター [JA]
- Formateador SQL [ES]
- SQL 포매터 [KO]
- تنسيق SQL [AR]
- Formatador SQL [PT]
- SQL-Formatter [DE]
- Format SQL [ID]
- รูปแบบ SQL [TH]
- SQL-formatter [NL]
- Định dạng SQL [VI]
- Formater SQL [PL]
- Форматтер SQL [RU]
- SQL Biçimlendirici [TR]
- SQL 格式化器 [ZH]
- SQL Formatter [EN]
- Formatter SQL [IT]