Torna all'elenco degli articoli Articoli
Tempo di lettura: 6 minuti

Come scrivere query SQL comprensibili a chiunque

Scrivere SQL che funziona è una cosa. Scrivere un SQL che possa essere letto da altri e dire: "Oh, ho capito!" è un livello completamente diverso. E onestamente? È una delle cose più utili che si possano imparare se si lavora con i dati.

Sia che stiate costruendo dei report, analizzando il comportamento dei clienti o rispondendo a una domanda veloce del vostro capo, probabilmente userete l'SQL. E se l'SQL è disordinato o confuso, rallenterete tutti, compreso voi stessi.

Questa guida vi aiuterà a scrivere query SQL facili da leggere, semplici da modificare e che abbiano un senso per gli altri, anche se siete ancora alle prime armi con l'SQL.

Volete esercitarvi in SQL con esercizi adatti ai principianti? Provate il corsoSQL per principianti su LearnSQL.com.

Perché è importante scrivere un SQL comprensibile

L'SQL non è solo per le macchine. Certo, il database esegue le query, ma anche le persone reali devono leggerle. E se il vostro SQL è disordinato o confuso, non solo rendete la vita più difficile agli altri, ma anche a voi stessi.

Scrivere un SQL chiaro fa risparmiare tempo. È più facile risolvere i bug, collaborare con i colleghi e rivedere il vecchio codice senza doversi grattare la testa. Pensate a un biglietto per il vostro futuro o per un compagno di squadra: fatelo abbastanza chiaro da non doverlo tradurre.

Un SQL leggibile dimostra anche che ci tenete. Fa parte dell'essere un buon comunicatore. E quando si è in un team, questo è molto importante.

Avete mai aperto una query gigante di 100 righe senza commenti e con nomi di variabili poco chiari? Ora immaginate di cercare di risolvere il problema sotto pressione. Non è divertente.

Capire l'ordine di elaborazione di SQL

Potete scrivere l'SQL dall'alto verso il basso, ma il database non lo legge in questo modo. Ecco l'ordine effettivo che segue:

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY
  7. LIMIT

Capirlo aiuta a strutturare la logica e a individuare più facilmente gli errori.

Suddividere le query lunghe in parti (usando le CTE)

Invece di stipare tutto in un'unica lunga query, si possono usare le Espressioni di tabella comuni (CTE) per dividere la logica in passi gestibili.

Ecco una versione che utilizza una sottoquery:

SELECT *
FROM (
  SELECT customer_id, COUNT(*) AS order_count
  FROM orders
  GROUP BY customer_id
) AS subquery
WHERE order_count > 5;

Ecco la stessa logica utilizzando una CTE:

WITH orders_cte AS (
  SELECT customer_id, COUNT(*) AS order_count
  FROM orders
  GROUP BY customer_id
)
SELECT *
FROM orders_cte
WHERE order_count > 5;

Questa versione è più facile da seguire. Racconta la storia passo per passo e rende il codice più facile da riutilizzare, testare e mantenere.

Usare il maiuscolo per le parole chiave SQL

L'uso delle maiuscole per parole chiave come SELECT, FROM e WHERE le fa risaltare e migliora la leggibilità. È una pratica comune che rende le query più facili da analizzare.

Indentare il codice

L'indentazione mostra come le diverse parti della query sono collegate tra loro. Quando si usano sottoquery o logiche complesse, il rientro rende chiara la struttura. Confrontate questi esempi:

Senza indentazione:

SELECT customer_id FROM (SELECT customer_id, COUNT(*) AS total_orders FROM orders GROUP BY customer_id) AS subquery WHERE total_orders > 5;

Con rientri:

SELECT customer_id
FROM (
    SELECT customer_id, COUNT(*) AS total_orders
    FROM orders
    GROUP BY customer_id
) AS subquery
WHERE total_orders > 5;

Una clausola per riga

Suddividere le query in righe separate per ogni clausola (SELECT, FROM, WHERE, ecc.) ne facilita la scansione e il debug:

SELECT customer_id,
       COUNT(*) AS order_count
FROM orders
WHERE status = 'delivered'
GROUP BY customer_id;

Utilizzare alias significativi

Evitare alias brevi e vaghi come a, b, o t1. Usare invece alias che descrivano la tabella:

SELECT o.customer_id
FROM orders AS o

O meglio ancora:

SELECT orders.customer_id
FROM orders

Usare gli alias solo se necessario e assicurarsi che aiutino, non che confondano.

Usare AS per rinominare le colonne

Se si creano nuove colonne, come totali o medie, usare AS per dare loro nomi chiari:

SELECT COUNT(*) AS total_orders

Questo rende i risultati più facili da capire e mantiene l'output chiaro e professionale.

Evitare SELECT *

L'acquisizione di tutte le colonne con SELECT * può sembrare facile, ma può causare problemi:

  • Include dati inutili o sensibili
  • Rallenta le query
  • Rende il codice più difficile da capire e da mantenere.

Elencare invece le colonne di cui si ha effettivamente bisogno:

SELECT customer_id, order_date, total_amount
FROM orders

Aggiungere commenti utili

Utilizzate -- per aggiungere commenti in SQL. I commenti spiegano perché la query fa qualcosa, il che è spesso più utile di ciò che fa.

Esempio:

-- Only show active customers who ordered in the last 30 days
WHERE customer_status = 'active'
  AND order_date >= CURRENT_DATE - INTERVAL '30 days'

I commenti sono come appunti per il vostro futuro, o per la prossima persona che lavorerà sulla query.

Usare gli indici quando è necessario

Se si filtra o ci si unisce spesso a una colonna specifica, questa potrebbe beneficiare di un indice. Gli indici aiutano il database a trovare i dati più velocemente. Se non siete sicuri di quali colonne siano indicizzate, chiedete all'amministratore del database o controllate lo schema.

Non ripetersi

Se state calcolando qualcosa di complesso, fatelo una volta sola e riutilizzatelo, senza ripetere la logica. Le CTE sono perfette per questo scopo:

WITH order_totals AS (
  SELECT customer_id, SUM(total_amount) AS total_spent
  FROM orders
  GROUP BY customer_id
)
SELECT *
FROM order_totals
WHERE total_spent > 1000;

Utilizzare strumenti che aiutano

Ecco alcuni strumenti adatti ai principianti che possono facilitare la scrittura di SQL:

  • SQL Formatter - Pulisce automaticamente il codice con spaziature e strutture corrette. Provatene uno in VS Code o nel vostro editor SQL preferito.
  • Abbellitori online - Siti come org permettono di incollare query disordinate e di ottenere immediatamente una versione pulita.
  • SQL Linters - Questi strumenti controllano le query alla ricerca di errori o formattazioni incoerenti e suggeriscono miglioramenti. Sono ottimi per imparare le migliori pratiche man mano che si procede.

L'uso di questi strumenti aiuta a costruire abitudini migliori e a scrivere più velocemente un SQL più chiaro.

Pronti a continuare a imparare?

Siete arrivati fin qui e questo vi mette già in una posizione di vantaggio. Se volete continuare a sviluppare le vostre competenze in modo pratico e divertente, il passo successivo migliore è la pratica.

Ecco alcune risorse utili da LearnSQL.it:

Scegliete una query disordinata dal vostro lavoro e ripulitela utilizzando le nozioni apprese. Poi fatene un'altra. Ben presto, scrivere SQL pulito e facile da capire vi sembrerà naturale.