Outils
Guides

Formateur SQL

Formatage

Formater le SQL pour de nombreux dialectes (MySQL, PostgreSQL, T-SQL, etc.) avec sql-formatter, ou le minifier.

100 % côté client Sans backend
SQL
Sortie
Sur cette page

Qu’est-ce qu’un formateur SQL ?#

Un formateur SQL transforme une requête écrite pour le moteur — souvent entassée sur une seule ligne, ou collée depuis un journal avec une indentation aléatoire — en une requête écrite pour l’humain. Les mots-clés vont sur leurs propres lignes, les colonnes s’alignent, les sous-requêtes décalent d’un niveau, et une clause WHERE avec cinq conditions AND cesse d’être un mur de texte. L’opération inverse, la compression, replie tous ces espaces en une seule ligne pour quand une requête doit voyager dans un fichier de configuration ou un paramètre d’API.

Ce qui rend la mise en forme du SQL délicate, c’est que chaque base de données a son propre dialecte. Une requête Postgres avec RETURNING, une requête MySQL avec identificateurs entre accents graves, une requête SQL Server avec TOP (n) et une requête BigQuery avec des littéraux de structure et de tableau ont toutes l’air différentes, et un formateur qui prétend qu’il existe un SQL universel ratera subtilement les cas limites. Cette page gère cela en utilisant sql-formatter avec une sélection de dialecte explicite : SQL standard, MySQL, MariaDB, PostgreSQL, SQLite, T-SQL, PL/SQL, BigQuery, Redshift, Snowflake, DB2 et Trino. Vous choisissez celui que votre base parle réellement, et le formateur analyse en conséquence.

Mode d’emploi#

  1. Collez votre requête dans le panneau SQL à gauche, ou cliquez sur Exemple pour charger un court exemple.
  2. Choisissez un Dialecte dans la barre d’outils — le dialecte de votre base. Le défaut sql est une saveur générique sûre ; basculez sur postgresql, mysql, tsql et ainsi de suite quand la requête utilise une syntaxe spécifique au dialecte.
  3. Choisissez une Indentation : 2, 4 ou tabulation. Quatre espaces est courant pour le SQL parce que cela garde les longues listes de colonnes lisibles.
  4. Cliquez sur une action :
    • Formater — réindenter, découper la requête en lignes logiques, et mettre les mots-clés en majuscules par défaut afin que SELECT, FROM et WHERE se détachent des identificateurs.
    • Compresser — retirer les commentaires de ligne -- et les commentaires de bloc /* */, puis condenser chaque suite d’espaces en un seul espace. Les sauts de ligne deviennent des espaces, ce qui est sûr pour SQL parce que les instructions se terminent par un point-virgule, pas par un saut de ligne.
  5. Lisez le résultat dans le panneau Sortie. Utilisez Copier pour le récupérer ; Effacer réinitialise les deux panneaux.

Principales fonctionnalités#

  • Douze dialectes. MySQL, MariaDB, PostgreSQL, SQLite, T-SQL, PL/SQL, BigQuery, Redshift, Snowflake, DB2, Trino, plus le SQL standard générique. La grammaire du formateur change pour correspondre, donc les mots-clés spécifiques au dialecte sont positionnés correctement.
  • Casse des mots-clés. Formater met les mots-clés en majuscules par défaut (donc select devient SELECT) et laisse vos identificateurs tranquilles. C’est purement cosmétique et ne change jamais ce que fait la requête.
  • Compression sûre. Les espaces se condensent en espaces simples ; le SQL est terminé par points-virgules, donc joindre les lignes ne peut pas fusionner deux instructions comme cela peut arriver dans les langages sensibles aux sauts de ligne.
  • Retrait des commentaires à la compression. Les commentaires -- et /* */ sont retirés quand vous compresser, gardant la charge utile compacte.
  • Deux panneaux, prêt à copier, entièrement côté client. Le formateur s’exécute dans votre navigateur ; la requête n’est envoyée nulle part.

Exemple détaillé#

Une requête de rapport déversée sur une ligne, avec un commentaire, une jointure et un GROUP BY :

Entrée :

select u.id,u.name,count(o.id) as orders from users u join orders o on o.user_id=u.id where u.status='active' and o.created_at >= '2026-01-01' group by u.id,u.name order by orders desc

Choisissez postgresql comme dialecte, puis cliquez sur Formater avec 2 espaces :

SELECT
  u.id,
  u.name,
  count(o.id) AS orders
FROM
  users u
  JOIN orders o ON o.user_id = u.id
WHERE
  u.status = 'active'
  AND o.created_at >= '2026-01-01'
GROUP BY
  u.id,
  u.name
ORDER BY
  orders DESC

Chaque clause a désormais sa propre ligne, la condition de jointure est visible, et les deux prédicats du WHERE sont séparés afin que vous puissiez voir d’un coup d’œil que le filtre de date est >=, pas >. La casse des mots-clés est passée en majuscules tandis que les noms de colonnes sont restés exactement comme écrits. Cliquez sur Compresser sur la même entrée et vous récupérez la forme sur une ligne, prête à coller dans une configuration ou un paramètre ?query= :

select u.id,u.name,count(o.id) as orders from users u join orders o on o.user_id=u.id where u.status='active' and o.created_at >= '2026-01-01' group by u.id,u.name order by orders desc

FAQ#

Quel dialecte choisir ?#

Faites correspondre votre base. Si vous n’êtes pas sûr, le sql générique est un point de départ raisonnable et gère correctement les clauses courantes. Basculez sur le dialecte spécifique quand la requête utilise une syntaxe que la grammaire générique n’attend pas — RETURNING (Postgres), identificateurs à accents graves (MySQL), TOP (n) (T-SQL), ou littéraux de structure/tableau (BigQuery). Choisir le mauvais dialecte fonctionne en général encore, mais peut mal placer un mot-clé exotique.

Pourquoi Formater met-il les mots-clés en majuscules mais pas mes noms de colonnes ?#

Parce que mettre les mots-clés en majuscules est une convention de lisibilité qui ne change jamais le sens — SELECT et select sont identiques pour le moteur — tandis que vos identificateurs peuvent être sensibles à la casse (Postgres plie les identificateurs sans guillemets en minuscules ; MySQL est sensible à la casse sur certaines plateformes). Laisser les identificateurs tranquilles est le défaut sûr. Si vous préférez les mots-clés en minuscules, formatez la requête puis faites une passe manuelle.

La compression préserve-t-elle les scripts multi-instructions ?#

Elle condense chaque suite d’espaces en un seul espace, y compris les sauts de ligne, mais elle conserve les points-virgules exactement là où ils étaient. Donc SELECT 1; SELECT 2; reste deux instructions séparées par ;. Cela dit, pour un long script de migration avec de nombreuses instructions, une forme compressée sur une seule ligne est dure à lire et dure à déboguer — la compression convient à une requête unique ou à un court lot.

Ma requête est-elle téléversée quelque part ?#

Non. Le formateur est embarqué dans la page et s’exécute localement dans votre navigateur. Rien de votre SQL — ni les noms de tables, ni les littéraux — ne quitte l’onglet.