code mascot
Codice7 min di lettura

SQL: il linguaggio che ogni database parla

Ogni app che usi ogni giorno — la tua banca, la tua email, il tuo feed social — archivia e recupera dati usando una qualche forma di SQL. Inventato in IBM negli anni '70, Structured Query Language e sopravvissuto a ogni moda della programmazione per oltre 50 anni. Capire le sue operazioni fondamentali richiede circa 20 minuti. Padroneggiarlo richiede una carriera.


Le quattro operazioni fondamentali

SQL organizza tutto attorno a quattro verbi, spesso chiamati CRUD (Create, Read, Update, Delete):

-- Read data
SELECT name, email FROM users WHERE active = true;

-- Create data
INSERT INTO users (name, email) VALUES ('Jane', '[email protected]');

-- Update data
UPDATE users SET active = false WHERE last_login < '2025-01-01';

-- Delete data
DELETE FROM users WHERE id = 42;

SELECT e di gran lunga il piu complesso: supporta filtri, ordinamento, raggruppamento, join e subquery. Gli altri tre sono diretti una volta che hai capito le clausole WHERE.


Utentiid, name, emailOrdiniid, user_id, totalProdottiid, name, price

JOIN: combinare tabelle

I database reali normalizzano i dati su piu tabelle. Una JOIN le collega:

Tipo di joinRestituisceQuando usarla
INNER JOINSolo le righe corrispondentiTi servono dati che esistono in entrambe le tabelle
LEFT JOINTutte le righe a sinistra + quelle corrispondenti a destraVuoi tutti gli utenti, anche quelli senza ordini
RIGHT JOINTutte le righe a destra + quelle corrispondenti a sinistraUsata raramente; uguale a LEFT JOIN con tabelle invertite
FULL JOINTutte le righe da entrambi i latiTi serve un quadro completo dei dati non corrispondenti
AB

INNER JOIN

AB

LEFT JOIN

AB

RIGHT JOIN

AB

FULL JOIN

GROUP BY e aggregazioni

GROUP BY comprime le righe in gruppi, e funzioni aggregate come COUNT, SUM, AVG, MIN e MAX riassumono ogni gruppo:

SELECT department, COUNT(*) AS headcount, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY avg_salary DESC;

Perche la formattazione conta

Nelle codebase di team, le query SQL vivono nel codice applicativo, nei file di migrazione e negli script ad hoc. Confronta queste due versioni della stessa query:

-- Messy: hard to scan, easy to miss bugs
select u.name,o.total,o.created_at from users u join orders o on u.id=o.user_id where o.total>100 and u.active=true order by o.created_at desc limit 20;

-- Formatted: structure is visible at a glance
SELECT
  u.name,
  o.total,
  o.created_at
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.total > 100
  AND u.active = true
ORDER BY o.created_at DESC
LIMIT 20;
SQL leggibile intercetta i bug. Quando ogni clausola sta sulla propria riga, condizioni mancanti, join sbagliate e cross join accidentali diventano visivamente evidenti durante la code review.

Dialetti SQL

Lo standard SQL (ISO/IEC 9075) definisce il linguaggio, ma ogni motore di database aggiunge le proprie estensioni:

  • PostgreSQL — il piu conforme agli standard, con ricco supporto JSON, window function e CTE
  • MySQL — popolare per le web app, piu permissivo con la coercizione dei tipi
  • SQLite — un database a file singolo incorporato in app mobili e browser
  • SQL Server — l'offerta enterprise di Microsoft con estensioni T-SQL

NoSQL vs SQL

I database NoSQL (MongoDB, Redis, DynamoDB) scambiano schemi strutturati con flessibilita. Usa SQL quando i tuoi dati hanno relazioni chiare e hai bisogno di garanzie transazionali. Usa NoSQL quando il tuo schema evolve rapidamente, hai bisogno di scalare orizzontalmente o i tuoi dati hanno naturalmente forma di documento (blob JSON, profili utente, log di eventi).

SQL non e un database: e un linguaggio. Impararlo una volta ti apre l'accesso a decine di motori di database, da un file SQLite da 50 KB a un data warehouse su scala petabyte.

Provalo tu stesso

Metti in pratica cio che hai imparato con il nostro SQL Formatter.

SQL: il linguaggio che ogni database parla | ToolsCanvas