PK Systems PK Systems
Outils pour développeurs

Formateur SQL

Embellissez ou minifiez du SQL, mettez les mots-clés en majuscules, indentez les jointures et sous-requêtes.

Formateur SQL

SQL formaté

Cliquez sur « Formater le SQL » pour mettre en forme votre requête.

À quoi sert cet outil ?

Le SQL est un langage que l'on écrit une fois et que l'on débogue éternellement : vous copiez une requête depuis un journal d'ORM ou le message d'un collègue et vous la recevez sous forme d'une seule ligne de 400 caractères. Ce formateur SQL en ligne prend ce pavé de texte et le dispose sur plusieurs lignes avec une indentation cohérente, place une clause par ligne, aligne les conditions JOIN et décompose les longues listes SELECT en colonnes empilées verticalement. Il tient compte du dialecte, donc il comprend les fonctionnalités PostgreSQL comme RETURNING, les accents graves de MySQL, les crochets de T-SQL, les listes de colonnes EXCEPT de BigQuery et les particularités de SQLite — la requête rendue reste valide pour le moteur pour lequel elle a été écrite. Tout se passe dans votre navigateur, donc le SQL que vous collez ne quitte jamais l'onglet et n'atteint jamais un serveur. La requête originale n'est jamais modifiée sémantiquement — seuls les espaces, les sauts de ligne et la casse changent — vous pouvez donc recoller le résultat dans votre code, votre fichier de migration, votre description de pull request, votre billet de blog ou votre réponse de chat en toute confiance. Utilisez-le pour nettoyer les journaux de Postgres, MySQL, SQL Server, BigQuery ou SQLite, pour préparer des requêtes en vue de revues de code, ou simplement pour rendre lisible une requête de 200 lignes avant de commencer à optimiser son plan d'exécution.

Mode d'emploi

Choisissez un dialecte qui correspond à la base de données ciblée, collez votre SQL dans la zone de texte, choisissez la casse et l'indentation que vous préférez, puis cliquez sur Formater. La sortie apparaît ci-dessous avec un bouton de copie en un clic.

  1. Choisissez le bon dialecte — En cas de doute, SQL standard gère la plupart des requêtes conformes à l'ANSI. Passez à un dialecte propriétaire lorsque votre requête utilise des identifiants comme `accents graves`, [crochets], ou des mots-clés propres à un éditeur (RETURNING, QUALIFY, etc.).
  2. Choisissez une casseMAJUSCULES est le standard de fait pour le SQL dans les revues de code. minuscules se lit davantage comme du texte courant. Conserver garde tout ce que vous avez déjà saisi.
  3. Définissez l'indentation — 2 espaces est la valeur par défaut la plus courante. 4 espaces est plus agréable pour les CTE imbriqués. Tabulation correspond aux éditeurs configurés pour une indentation par tabulation uniquement.
  4. Formatez et copiez — Cliquez sur Formater le SQL, vérifiez la sortie et utilisez le bouton de copie pour la mettre dans votre presse-papiers. Recollez-la dans votre éditeur, votre fichier de migration ou votre réponse de chat.

Règles de formatage en français clair

Le formateur émet une clause principale par ligne : SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT. Chaque JOIN figure sur sa propre ligne avec la condition ON correspondante indentée d'un niveau. Les éléments d'une liste SELECT, d'un tuple VALUES ou d'une clause IN (…) sont répartis sur plusieurs lignes lorsqu'ils dépassent la largeur de ligne. Les sous-requêtes et les CTE reçoivent un niveau d'indentation supplémentaire par rapport à leur parent. Les commentaires (-- et /* */) sont préservés tels quels. Le résultat correspond aux mêmes instructions que celles de départ — simplement disposées de manière à ce que les relecteurs humains puissent saisir la structure de la requête d'un coup d'œil.

Aide-mémoire des dialectes

Chaque dialecte gère différemment la mise entre guillemets des identifiants, la concaténation de chaînes et une poignée de mots-clés propriétaires. Choisissez le dialecte correspondant au moteur pour lequel vous écrivez.

Dialecte Particularités respectées par le formateur
SQL standardRéférence conforme à l'ANSI. Guillemets doubles pour les identifiants, guillemets simples pour les chaînes, || pour la concaténation.
PostgreSQLAjoute RETURNING, ON CONFLICT, ::cast, les chaînes délimitées par des dollars ($$) et les littéraux de tableau.
MySQLIdentifiants entre accents graves, STRAIGHT_JOIN, SQL_CALC_FOUND_ROWS, chaînes entre guillemets doubles autorisées.
BigQueryRéférences projet/dataset/table entre accents graves, EXCEPT dans les listes de colonnes, QUALIFY, UNNEST.
T-SQL (SQL Server)Identifiants entre crochets, TOP n, OUTPUT INSERTED.*, indications NOLOCK.
SQLitePrincipalement ANSI ; différences mineures sur WITHOUT ROWID, la gestion de CONFLICT et le système de typage souple.

Questions fréquentes

Ma requête est-elle envoyée à un serveur ?

Non. Le formatage se fait entièrement dans l'onglet de votre navigateur, donc le SQL que vous collez — y compris les noms de tables sensibles, noms de colonnes, identifiants codés en dur ou données de production présentes dans les clauses WHERE — n'atteint jamais nos serveurs ni aucun tiers. Vous pouvez vous déconnecter du réseau après le chargement de la page et le formateur fonctionne toujours.

Pourquoi le résultat diffère-t-il légèrement du formateur de mon EDI ?

Chaque formateur SQL a ses propres conventions sur les sauts de ligne, les virgules en début ou en fin de ligne, et la manière d'envelopper les longues expressions CASE. Les valeurs par défaut utilisées ici suivent les conventions courantes dans les éditeurs de bases de données professionnels et les revues de code. Si vous avez besoin d'une correspondance exacte avec le guide de style de votre équipe, faites passer le résultat dans le formateur préféré de votre équipe en dernière étape.

Va-t-il exécuter ma requête ?

Non. Seul le formatage (espaces et casse) a lieu. La requête n'est jamais exécutée, ni analysée par rapport à un schéma de base de données, ni envoyée où que ce soit.

Comprend-il les procédures stockées et les blocs PL/pgSQL ?

Il formate correctement le SQL externe mais traite le corps procédural interne comme du texte opaque — les sauts de ligne à l'intérieur de BEGIN … END sont préservés mais ne sont pas réagencés. Pour les procédures stockées complexes, utilisez un outil propre à l'éditeur, comme le formateur de PGAdmin.

Que se passe-t-il si je laisse le dialecte sur SQL standard mais que ma requête utilise les accents graves de MySQL ?

Le formateur produira généralement un résultat acceptable, mais les mots-clés propriétaires peuvent se retrouver mal indentés ou en mauvaise casse. Choisissez le dialecte correspondant pour obtenir la sortie la plus propre.

Peut-il gérer plusieurs instructions séparées par des points-virgules ?

Oui. Plusieurs instructions séparées par ; sont formatées indépendamment et reliées par une ligne vide. C'est pratique pour coller un script de migration entier.