Formattare e indentare una query SQL

formatta le tue query SQL per renderle leggibili e comprensibili, facilitando lo sviluppo e la manutenzione

Perché la formattazione SQL?

La formattazione SQL permette di rendere le query SQL più leggibili e comprensibili per gli sviluppatori e gli amministratori di database. Questo facilita il debug, la code review e l'ottimizzazione delle query. Un SQL ben formattato è essenziale per mantenere la qualità del codice e collaborare efficacemente in un team di sviluppo.

Tipi di query SQL supportate

Questo strumento supporta tutti i tipi di query SQL, incluse le istruzioni SELECT, INSERT, UPDATE, DELETE, così come le istruzioni di creazione e modifica di tabelle (CREATE, ALTER, DROP).

Come formattare query SQL

Nella pagina di formattazione, potete formattare la vostra query SQL incollandola nella zona di testo prevista a tal scopo.

Non appena la query SQL viene sottomessa, sarà formattata e mostrata in una zona di risultato. Se la query è invalida, sarà mostrato un errore con un'indicazione della natura del problema.

Usare l'SQL formattato

Potete copiare l'SQL formattato usando il pulsante di copia previsto a tal scopo. Questo faciliterà l'integrazione delle query SQL nei vostri progetti o report.

Il vostro codice SQL dovrebbe assomigliare a questo:


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;

    

Domande frequenti

Quali dialetti SQL sono supportati: MySQL, PostgreSQL, SQL Server?

Il formattatore riconosce la sintassi SQL standard (ANSI) così come le principali estensioni di MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) e SQLite. Le parole chiave specifiche di ogni motore (LIMIT di MySQL e PostgreSQL, TOP di SQL Server, RETURNING di PostgreSQL, MERGE) sono indentate correttamente. Le funzioni native proprie di un motore vengono conservate così come sono senza validazione.

Il formattatore gestisce le CTE e le query ricorsive?

Sì. Le CTE (Common Table Expressions) dichiarate con WITH ... AS (...) sono indentate sul loro proprio blocco, e le CTE ricorsive (WITH RECURSIVE) sono riconosciute. Questo rende le query complesse nettamente più leggibili, in particolare le gerarchie (alberi, grafi) e le finestre scorrevoli. Le sottoquery correlate sono anche allineate con il loro scope padre.

Qual è la differenza tra un formattatore SQL e un ottimizzatore di query?

Un formattatore SQL non cambia la semantica della query: si limita a riorganizzare visivamente il codice (a capo, indentazione, maiuscole delle parole chiave). Un ottimizzatore, invece, riscrive la query o suggerisce modifiche (indici mancanti, join da riorganizzare, sottoquery da trasformare in join) per migliorare le performance. Per analizzare il piano di esecuzione, usate EXPLAIN o EXPLAIN ANALYZE a seconda del motore.

I commenti SQL sono preservati?

Sì. I commenti in linea -- commento e i commenti multi-riga /* ... */ sono conservati al loro posto originale. È essenziale per documentare una query complessa o marcare sezioni (TODO, hint per l'ottimizzatore, versione di una migrazione). Se trasmettete la query a un motore che interpreta gli hint commentati (/*+ INDEX(...) */ su Oracle), sono ugualmente preservati.

Perché le parole chiave SQL sono in maiuscolo?

Mettere le parole chiave (SELECT, FROM, WHERE, JOIN) in maiuscolo è una convenzione storica che le distingue visivamente dagli identificatori (nomi di tabella, colonne). Questa pratica facilita la lettura, soprattutto nelle query lunghe. I nomi di tabella e colonna sono invece conservati nella loro maiuscolizzazione originale per rispettare le convenzioni dello schema (in particolare su PostgreSQL dove la maiuscolizzazione è sensibile per gli identificatori quotati).

Il formattatore valida la sintassi SQL?

Il formattatore effettua un'analisi sintattica leggera che rileva gli errori grossolani (parentesi non bilanciate, punto e virgola mancante a fine istruzione, parole chiave incoerenti). Non valida né l'esistenza delle tabelle e colonne, né la conformità a uno schema preciso. Per questo, eseguite la query in modalità EXPLAIN sulla vostra base, o usate un linter dedicato come sqlfluff.

Esempio di richiesta

curl -X POST https://cdrn.fr/api/v1/tools/sql-formatter/execute \
  -H "Content-Type: application/json" \
  -d '{"input":"..."}'

Schema di input

Campo Tipo Richiesto Predefinito
input text

Endpoint

  • GET https://cdrn.fr/api/v1/tools - elenca tutti gli strumenti disponibili
  • GET https://cdrn.fr/api/v1/tools/sql-formatter - recupera lo schema di questo strumento
  • POST https://cdrn.fr/api/v1/tools/sql-formatter/execute - esegue questo strumento con un payload JSON