Impara SQL facendo
Learn SQL by doing: write real queries against a real database, with instant feedback. Ogni lezione gira nel tuo browser, su un piccolo database di prova: una panetteria per la maggior parte delle lezioni, e un'azienda per le lezioni sui dipendenti.
Le query girano su PostgreSQL. Il nucleo di SQL è lo stesso in MySQL, SQL Server e SQLite; le pagine di riferimento indicano dove differiscono. Vedi anche le guide e il riferimento.
0 di 34 lezioni completate
Basi
Gratis: leggi, ordina e filtra una tabella.
- Il tuo primo SELECTLeggi colonne da una tabella, ordina le righe e rimuovi i duplicati.Free
- Filtrare le righe con WHEREMantieni solo le righe che corrispondono a una condizione, inclusi intervalli e valori mancanti.Free
- Modelli, liste e primi risultatiConfronta il testo con LIKE, verifica un elenco con IN e mantieni solo le prime righe con LIMIT.Free
Riepiloghi
Conteggio, somma e media, per gruppo.
- Contare, sommare e raggruppareRiassumi molte righe in un unico numero, o in un numero per gruppo, con GROUP BY e HAVING.Pro
- Altri riepiloghi: STRING_AGG, FILTER e ROLLUPUnisci più valori in un unico testo, conta in base a una condizione in un solo passaggio e aggiungi una riga con il totale generale.Pro
Join
Combina le tabelle tramite le loro chiavi, anche quelle che non corrispondono.
- Combinare tabelle con JOINAbbina le righe di due tabelle tramite una chiave comune, poi raggruppa le righe combinate.Pro
- Mantenere le righe senza corrispondenza: LEFT JOINUn inner join scarta le righe senza corrispondenza. Un left join le mantiene, ed è così che trovi ciò che manca.Pro
- Mantenere le righe senza corrispondenza da entrambi i lati: RIGHT e FULL JOINUn RIGHT JOIN mantiene ogni riga della tabella di destra. Un FULL JOIN mantiene le righe senza corrispondenza di entrambe le tabelle.Pro
- Confrontare righe all'interno della stessa tabellaUnisci una tabella con se stessa per confrontare le sue righe tra loro, senza ripetere le coppie.Pro
- Molti a molti tramite una tabella intermediaOrdini e prodotti sono collegati tramite order_items. Unire le tabelle tramite quella tabella permette di rispondere a domande a livello di prodotto.Pro
- Ogni combinazione: CROSS JOIN e la scorciatoia USINGCROSS JOIN abbina ogni riga con ogni riga di un'altra tabella. USING accorcia una JOIN su una colonna con lo stesso nome in entrambe le tabelle.Pro
Query avanzate
CASE, sottoquery, funzioni finestra, UNION e funzioni di testo e data.
- Scegliere in base alle condizioni: CASE WHENCASE è la versione SQL di IF e IFS: sceglie un valore per ogni riga, in base a delle condizioni.Pro
- Query dentro le query: sottoquery, WITH ed EXISTSUna sottoquery è una SELECT dentro un'altra query. WITH assegna un nome a una sottoquery così puoi riusarla. EXISTS verifica se esiste almeno una riga corrispondente.Pro
- Ranking e totali parziali: funzioni finestraOVER aggiunge un calcolo tra le righe senza riassumerle, come RANK e i totali parziali in Excel.Pro
- Guardare le righe vicine: LAG, LEAD e DENSE_RANKLAG e LEAD leggono la riga precedente o successiva senza una JOIN. DENSE_RANK assegna ranghi senza salti. Le parità modificano i totali parziali.Pro
- Impilare i risultati: UNION e UNION ALLUNION mette le righe di due query in un unico risultato. UNION ALL mantiene i duplicati. Entrambe richiedono lo stesso numero di colonne.Pro
- Sovrapposizione e differenza: INTERSECT ed EXCEPTINTERSECT mantiene le righe presenti in entrambi i risultati. EXCEPT mantiene le righe del primo risultato che mancano nel secondo.Pro
- Testo e date: unire, tagliare e contareUnisci il testo con ||, cambia le maiuscole, estrai una parte di un valore e calcola i giorni tra due date.Pro
- Altri strumenti per testo e date: REPLACE, SPLIT_PART e generate_seriesSostituisci e dividi il testo, aggiungi giorni a una data e crea un elenco di date per trovare i buchi.Pro
- Converti e confronta: CAST, NULLIF, ILIKE e paginazioneCambia il tipo di un valore, evita la divisione per zero, confronta testi ignorando le maiuscole e recupera i risultati una pagina alla volta.Pro
Modifica dei dati
Aggiungi, modifica e rimuovi righe in sicurezza.
- Aggiungi, modifica e rimuovi righeINSERT, UPDATE e DELETE, e perché UPDATE e DELETE hanno bisogno di un WHERE.Pro
- Inserisci o aggiorna: ON CONFLICT e RETURNINGUn upsert inserisce una riga, oppure la aggiorna se la chiave esiste già. RETURNING mostra le righe modificate.Pro
- Crea una tabella con regole: CREATE TABLE e transazioniCREATE TABLE imposta le colonne e le regole di una nuova tabella. Una transazione raggruppa le modifiche, così ROLLBACK può annullarle.Pro
- Cambia la struttura: ALTER TABLE, viste e indiciAggiungi colonne e regole a una tabella esistente, salva una query come vista, velocizza le ricerche con un indice ed elimina ciò che non ti serve più.Pro
Da Excel
Ricerche, SUMIF, tabelle pivot e matrici dinamiche, in SQL.
- Da VLOOKUP a JOINSe conosci VLOOKUP e XLOOKUP, conosci già l'idea alla base di un JOIN.Pro
- SUMIF, COUNTIFS e tabelle pivot in SQLSomme e conteggi condizionali diventano WHERE più SUM o COUNT. Una tabella pivot diventa un GROUP BY su due colonne.Pro
- FILTER, UNIQUE e SORT in SQLLe funzioni a matrice dinamica corrispondono a WHERE, DISTINCT e ORDER BY.Pro
Database dei dipendenti
Un secondo database di esercizio, una piccola azienda: organigrammi, stipendi, date di assunzione e frame delle finestre.
- Organigrammi con WITH ricorsivoSegui una catena di responsabili verso l'alto o verso il basso su qualsiasi numero di livelli con una common table expression ricorsiva.Pro
- Stipendi: N-esimo più alto, per reparto e sopra la mediaClassifica con i pari merito, prendi la prima riga di ogni gruppo e confronta ogni valore con la media del suo gruppo.Pro
- Responsabili e coppie: self JOIN sui dipendentiUnisci la tabella dei dipendenti con se stessa per mostrare i responsabili, contare i riporti diretti e trovare le coppie.Pro
- Frame delle finestre: totali progressivi e medie mobiliROWS BETWEEN decide quali righe copre un calcolo a finestra: un totale cumulativo, una media mobile e come si comportano i pari merito.Pro
Pratica per i colloqui
Le domande che tornano sempre: N-esimo più alto, primo per gruppo, duplicati e variazione nel tempo.
- Schemi da colloquio: N-esimo più alto, primo per gruppo, duplicatiLe domande che tornano sempre nei colloqui SQL, ognuna con più di un modo corretto di rispondere.Pro
- Schemi da colloquio: prima riga per gruppo, variazione nel tempo, quota del totaleDomande con funzioni finestra che trasformano una tabella in un report.Pro
Caso di studio
Rispondi a domande reali su un mese di vendite.