Formater et indenter une requête SQL
- Tableau de bord
- Documentation
- API
Pourquoi le formatage SQL ?
Le formatage SQL permet de rendre les requêtes SQL plus lisibles et compréhensibles pour les développeurs et les administrateurs de bases de données. Cela facilite le débogage, la revue de code et l'optimisation des requêtes. Un SQL bien formaté est essentiel pour maintenir la qualité du code et collaborer efficacement au sein d'une équipe de développement.
Types de requêtes SQL pris en charge
Cet outil prend en charge tous les types de requêtes SQL, y compris les instructions SELECT, INSERT, UPDATE, DELETE, ainsi que les instructions de création et de modification de tables (CREATE, ALTER, DROP).
Comment formater des requêtes SQL
Sur la page de formatage, vous pouvez formater votre requête SQL en la collant dans la zone de texte prévue à cet effet.
Dès que la requête SQL est soumise, elle sera formatée et affichée dans une zone de résultat. Si la requête est invalide, une erreur sera affichée avec une indication de la nature du problème.
Utiliser le SQL formaté
Vous pouvez copier le SQL formaté en utilisant le bouton de copie prévu à cet effet. Cela facilitera l'intégration des requêtes SQL dans vos projets ou rapports.
Votre code SQL devrait ressembler à ceci :
SELECT u.id, u.name, u.email,
p.product_name, p.price,
o.order_date, o.quantity,
(SELECT SUM(p2.price * o2.quantity)
FROM orders o2
JOIN products p2 ON o2.product_id = p2.id
WHERE o2.user_id = u.id) as total_spent
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN products p ON o.product_id = p.id
WHERE u.id IN (
SELECT user_id
FROM orders
WHERE order_date >= '2023-01-01' AND order_date <= '2023-12-31'
GROUP BY user_id
HAVING COUNT(*) > 5
)
AND p.price > 50
ORDER BY u.name ASC, o.order_date DESC
LIMIT 10;
Questions fréquentes
Quels dialectes SQL sont pris en charge : MySQL, PostgreSQL, SQL Server ?
Le formateur reconnaît la syntaxe SQL standard (ANSI) ainsi que les principales extensions de MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) et SQLite. Les mots-clés spécifiques à chaque moteur (LIMIT de MySQL et PostgreSQL, TOP de SQL Server, RETURNING de PostgreSQL, MERGE) sont indentés correctement. Les fonctions natives propres à un moteur sont conservées telles quelles sans validation.
Le formateur gère-t-il les CTE et les requêtes récursives ?
Oui. Les CTE (Common Table Expressions) déclarées avec WITH ... AS (...) sont indentées sur leur propre bloc, et les CTE récursives (WITH RECURSIVE) sont reconnues. Cela rend les requêtes complexes nettement plus lisibles, notamment les hiérarchies (arbres, graphes) et les fenêtres glissantes. Les sous-requêtes corrélées sont également alignées avec leur portée parente.
Quelle différence entre un formateur SQL et un optimiseur de requêtes ?
Un formateur SQL ne change pas la sémantique de la requête : il se contente de réorganiser visuellement le code (sauts de ligne, indentation, casse des mots-clés). Un optimiseur, lui, réécrit la requête ou suggère des modifications (index manquants, jointures à réorganiser, sous-requêtes à transformer en jointures) pour améliorer les performances. Pour analyser le plan d'exécution, utilisez EXPLAIN ou EXPLAIN ANALYZE selon le moteur.
Les commentaires SQL sont-ils préservés ?
Oui. Les commentaires en ligne -- commentaire et les commentaires multi-lignes /* ... */ sont conservés à leur emplacement d'origine. C'est essentiel pour documenter une requête complexe ou marquer des sections (TODO, hint pour l'optimiseur, version d'une migration). Si vous transmettez la requête à un moteur qui interprète les hints commentés (/*+ INDEX(...) */ sur Oracle), ils sont également préservés.
Pourquoi les mots-clés SQL sont-ils mis en majuscules ?
Mettre les mots-clés (SELECT, FROM, WHERE, JOIN) en majuscules est une convention historique qui les distingue visuellement des identifiants (noms de table, colonnes). Cette pratique facilite la lecture, surtout dans les requêtes longues. Les noms de table et de colonne sont en revanche conservés dans leur casse d'origine pour respecter les conventions du schéma (en particulier sur PostgreSQL où la casse est sensible pour les identifiants quotés).
Le formateur valide-t-il la syntaxe SQL ?
Le formateur effectue une analyse syntaxique légère qui détecte les erreurs grossières (parenthèses non équilibrées, point-virgule manquant en fin d'instruction, mots-clés incohérents). Il ne valide ni l'existence des tables et colonnes, ni la conformité à un schéma précis. Pour cela, exécutez la requête en mode EXPLAIN sur votre base, ou utilisez un linter dédié comme sqlfluff.
Exemple de requête
curl -X POST https://cdrn.fr/api/v1/tools/sql-formatter/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Schéma d'entrée
| Champ | Type | Requis | Défaut |
|---|---|---|---|
input |
text | ✓ | – |
Points d'accès
GET https://cdrn.fr/api/v1/tools- liste tous les outils disponiblesGET https://cdrn.fr/api/v1/tools/sql-formatter- récupère le schéma de cet outilPOST https://cdrn.fr/api/v1/tools/sql-formatter/execute- exécute cet outil avec un payload JSON