Formater et indenter une requête SQL

formate vos requêtes SQL pour les rendre lisibles et compréhensibles, facilitant le développement et la maintenance

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 disponibles
  • GET https://cdrn.fr/api/v1/tools/sql-formatter - récupère le schéma de cet outil
  • POST https://cdrn.fr/api/v1/tools/sql-formatter/execute - exécute cet outil avec un payload JSON