Menu
Coddy logo textTech

SQL Cheat Sheet: comandi e query

Ultimo aggiornamento

Interrogare i dati (SELECT)

Il cuore di SQL: leggere righe da una o più tabelle.

OperazioneSintassi
Selezionare tutte le colonneSELECT * FROM users;
Selezionare colonne specificheSELECT id, name FROM users;
Rinominare una colonna (alias)SELECT name AS full_name FROM users;
Valori distintiSELECT DISTINCT country FROM users;
Limitare le righeSELECT * FROM users LIMIT 10;
Saltare e poi limitare (paginazione)SELECT * FROM users LIMIT 10 OFFSET 20;
Contare le righeSELECT COUNT(*) FROM users;

Filtrare le righe (WHERE)

Restringi le righe restituite da una query.

OperazioneSintassi
Uguaglianza / confrontoWHERE age >= 18
Più condizioniWHERE age >= 18 AND country = 'US'
Una delle due condizioniWHERE role = 'admin' OR role = 'owner'
In un insiemeWHERE country IN ('US', 'CA', 'MX')
In un intervalloWHERE price BETWEEN 10 AND 50
Corrispondenza di patternWHERE email LIKE '%@gmail.com'
È / non è nullWHERE deleted_at IS NULL
NegazioneWHERE status NOT IN ('archived')

Ordinamento e raggruppamento

OperazioneSintassi
Ordinare in modo crescente (predefinito)ORDER BY created_at
Ordinare in modo decrescenteORDER BY created_at DESC
Ordinare per più colonneORDER BY country, name DESC
Raggruppare le righeSELECT country, COUNT(*) FROM users GROUP BY country;
Filtrare i gruppiGROUP BY country HAVING COUNT(*) > 100

Joins

Combina righe di due tabelle in base a una colonna corrispondente.

Tipo di joinRestituisceSintassi
INNER JOINSolo le righe che corrispondono in entrambe le tabelleFROM orders o INNER JOIN users u ON o.user_id = u.id
LEFT JOINTutte le righe di sinistra + corrispondenze (altrimenti null)FROM users u LEFT JOIN orders o ON o.user_id = u.id
RIGHT JOINTutte le righe di destra + corrispondenzeFROM orders o RIGHT JOIN users u ON o.user_id = u.id
FULL OUTER JOINTutte le righe di entrambi i latiFROM a FULL OUTER JOIN b ON a.id = b.a_id
CROSS JOINOgni combinazione (prodotto cartesiano)FROM sizes CROSS JOIN colors
Self joinUna tabella unita a se stessaFROM employees e JOIN employees m ON e.manager_id = m.id

Funzioni di aggregazione

Calcolano un singolo valore su un gruppo di righe.

FunzioneCosa fa
COUNT(*)Numero di righe
COUNT(col)Numero di valori non null
SUM(col)Totale di una colonna numerica
AVG(col)Valore medio
MIN(col) / MAX(col)Valore minimo / massimo
STRING_AGG(col, ',')Concatena valori (Postgres; GROUP_CONCAT in MySQL)

Funzioni finestra

Calcolano su un insieme di righe senza ridurle a una sola.

FunzioneSintassi
Numero di rigaROW_NUMBER() OVER (ORDER BY score DESC)
Rango (con salti)RANK() OVER (PARTITION BY country ORDER BY score DESC)
Rango densoDENSE_RANK() OVER (ORDER BY score DESC)
Totale progressivoSUM(amount) OVER (ORDER BY created_at)
Riga precedente / successivaLAG(score) OVER (ORDER BY date), LEAD(score) OVER (...)

Modificare i dati (INSERT, UPDATE, DELETE)

OperazioneSintassi
Inserire una rigaINSERT INTO users (name, email) VALUES ('Ada', 'ada@x.com');
Inserire più righeINSERT INTO users (name) VALUES ('Ada'), ('Alan');
Aggiornare righeUPDATE users SET active = true WHERE id = 1;
Eliminare righeDELETE FROM users WHERE active = false;
Upsert (Postgres/SQLite)INSERT ... ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name;

Definire le tabelle (DDL)

OperazioneSintassi
Creare una tabellaCREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);
Aggiungere una colonnaALTER TABLE users ADD COLUMN age INTEGER;
Eliminare una colonnaALTER TABLE users DROP COLUMN age;
Eliminare una tabellaDROP TABLE users;
Creare un indiceCREATE INDEX idx_users_email ON users (email);
Chiave esternaFOREIGN KEY (user_id) REFERENCES users (id)

Ogni istruzione, clausola e join SQL che ti serve, in una sola pagina. Questa SQL cheat sheet è un riferimento rapido per interrogare e modificare dati relazionali: le clausole SELECT, i quattro tipi di JOIN, l'aggregazione e i comandi DDL e DML che usi per creare e aggiornare le tabelle.

La sintassi è SQL ANSI standard e funziona in PostgreSQL, MySQL, SQLite e SQL Server, salvo dove indicato. Copia ciò che ti serve o prova ogni query dal vivo nel playground SQL, senza installare nessun database. Sei alle prime armi con i database? Il corso SQL interattivo e gratuito di Coddy ti guida tra query, join e aggregazioni.

Domande frequenti sulla SQL cheat sheet

Questa SQL cheat sheet è gratuita?
Sì. Questa SQL cheat sheet è completamente gratuita e non richiede registrazione. Salvala nei preferiti e torna qui ogni volta che devi cercare una clausola, un join o una funzione.
Funziona con MySQL, PostgreSQL e SQLite?
Quasi sempre, sì. La sintassi di SELECT, WHERE, JOIN, GROUP BY e DDL mostrata qui è SQL ANSI standard e funziona allo stesso modo in MySQL, PostgreSQL, SQLite e SQL Server. Alcune funzionalità avanzate cambiano a seconda del dialetto (gli upsert e l'aggregazione di stringhe sono le più comuni) e in quelle righe la differenza è indicata.
Qual è la differenza tra INNER JOIN e LEFT JOIN?
Un INNER JOIN restituisce solo le righe che hanno una corrispondenza in entrambe le tabelle. Un LEFT JOIN restituisce tutte le righe della tabella di sinistra (la prima), riempiendo con NULL le colonne della tabella di destra quando non c'è corrispondenza: utile quando vuoi tutti gli utenti anche se alcuni non hanno ordini.
Posso esercitarmi con questi comandi SQL online?
Sì. Apri il playground SQL per eseguire qualsiasi query di questa cheat sheet su un vero database nel browser, senza installare nulla. Quando vuoi un percorso strutturato, il corso SQL interattivo e gratuito di Coddy ti accompagna passo dopo passo da SELECT fino ai join e alle funzioni finestra.
Questa cheat sheet va bene per chi inizia?
Sì. È organizzata dalle operazioni più comuni (interrogare e filtrare) fino a quelle avanzate (funzioni finestra), così puoi usare le prime sezioni fin dal primo giorno e affrontare il resto man mano che procedi.
Illustrazione dei linguaggi di programmazione di Coddy

Impara SQL con Coddy

INIZIA