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.
