Formateur SQL

Formateur SQL en ligne

Retrouvez le fil d’une requête compacte. Séparez visuellement les colonnes, les jointures et les filtres pour préparer votre relecture.

Éditeur de requêtesFormatage dans le navigateur · aucune exécution SQL
Charger un exemple
213 / 50 000 caractères

02 SQL formaté

La requête d’origine reste intacte

Mettre en forme une requête avant de la relire

Une requête copiée depuis un journal applicatif ou un ORM tient parfois sur une seule ligne. Le formateur SQL répartit les clauses et indente les sous-requêtes pour rendre leur structure plus lisible. Vous pouvez ainsi repérer les conditions de jointure sans ajouter chaque retour à la ligne à la main.

Collez le SQL, choisissez son dialecte, puis une indentation de deux espaces, quatre espaces ou tabulations. Réglez la casse des mots-clés et lancez le formatage. Le texte d’origine reste disponible à côté du résultat. Toute modification de la saisie ou des options efface l’ancien résultat : relancez le traitement avant de copier.

Choisir le dialecte de la requête source

Le menu propose SQL standard, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle SQL, BigQuery et Snowflake. Ce choix permet de reconnaître les conventions propres à chaque base, notamment la délimitation des identifiants et certains mots-clés.

Changer de dialecte ne traduit pas la requête vers un autre moteur. Les fonctions et le schéma ne sont pas adaptés automatiquement. L’option Oracle SQL concerne les requêtes ; elle ne constitue pas une prise en charge générale des procédures stockées.

Une présentation claire facilite la revue

Dans une requête agrégée, distinguer WHERE de HAVING aide à relire les filtres au bon niveau. L’indentation des CTE et des sous-requêtes permet aussi de suivre leur imbrication. Elle ne garantit cependant ni la justesse du résultat ni la validité de la requête.

Seuls les mots-clés reconnus sont concernés par l’option de casse. Les identifiants, noms de fonctions et types conservent leur écriture, et les paramètres ne sont pas remplacés par des valeurs. Les commentaires sont conservés, avec d’éventuels changements de disposition. Vérifiez le SQL obtenu dans son contexte avant de l’utiliser.

Exemples de mise en forme SQL

Ces résultats utilisent des données fictives, des mots-clés en majuscules et une indentation de deux espaces. Charger un exemple dans l’éditeur sélectionne aussi son dialecte.

Jointure et agrégation

Regrouper les commandes payées par client, puis filtrer les totaux. Les différentes conditions deviennent plus faciles à retrouver.

SELECT
  c.id,
  c.name,
  count(o.id) AS order_count,
  sum(o.total) AS revenue
FROM
  customers c
  JOIN orders o ON o.customer_id = c.id
WHERE
  o.status = 'paid'
GROUP BY
  c.id,
  c.name
HAVING
  sum(o.total) > 1000
ORDER BY
  revenue DESC;
Revenir au formateur

CTE et fonction de fenêtre

Une CTE PostgreSQL utilise ROW_NUMBER pour classer les commandes de chaque client. L’imbrication des SELECT apparaît dans le résultat.

WITH
  ranked_orders AS (
    SELECT
      id,
      customer_id,
      total,
      row_number() OVER (
        PARTITION BY
          customer_id
        ORDER BY
          created_at DESC
      ) AS position
    FROM
      orders
    WHERE
      created_at >= date '2024-01-01'
  )
SELECT
  customer_id,
  id,
  total
FROM
  ranked_orders
WHERE
  position = 1
ORDER BY
  customer_id;
Revenir au formateur

INSERT et commentaires

Un exemple MySQL avec identifiants entre accents graves, commentaire et chaîne contenant un point-virgule, qui reste une donnée.

-- Fictional seed data
INSERT INTO
  `products` (`sku`, `name`, `price`)
VALUES
  ('DEMO-01', 'Desk lamp; warm light', 29.95),
  ('DEMO-02', 'Reader''s notebook', 8.50);
Revenir au formateur

Questions fréquentes

Comment récupérer le SQL formaté ?

Cliquez sur Copier ou téléchargez le fichier formatted.sql. Le raccourci Ctrl+Entrée, ou Commande+Entrée sur macOS, lance également le formatage.

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

Le traitement s’effectue dans un Web Worker du navigateur. L’outil n’envoie pas la requête à une API de formatage, ne se connecte pas à une base de données et ne conserve pas durablement la saisie. Le SQL n’est pas placé dans l’URL.

Le formateur corrige-t-il les erreurs SQL ?

Non. Il ne vérifie ni les tables, ni les colonnes, ni les types ou les droits d’accès. Il n’exécute aucune requête et n’analyse pas les plans d’exécution. Utilisez les outils de votre base pour la validation et les performances.

Puis-je coller plusieurs instructions ?

Oui, pour des instructions SQL ordinaires séparées par un point-virgule. Un point-virgule dans une chaîne reconnue reste une donnée. Les délimiteurs personnalisés, procédures stockées et scripts propres à un client sortent de ce cadre.

Que faire si le formatage échoue ?

Vérifiez le dialecte, les guillemets et les parenthèses. Les modèles Jinja ou les interpolations de code peuvent ne pas être reconnus. La limite est de 50 000 caractères et le traitement s’arrête après dix secondes. Découpez les longs scripts.

Les commentaires et paramètres sont-ils conservés ?

Les commentaires restent présents, mais leur mise en page peut changer. Les paramètres reconnus pour le dialecte choisi ne sont pas remplacés. Une directive de commentaire désactivant le formateur peut laisser une portion du SQL sans mise en forme.

SQL Formatter · GitHub

Revenir au formateur