Vai al contenuto
eLearner.app

Corso interattivo

Corso SQL

Impara SQL da zero con dataset realistici e un Postgres reale nel browser: scrivi query, leggi result set, correggi errori e arrivi fino a CTE, window function, indici e transazioni.

01 · SELECT base

4 lezioni

Le fondamenta: leggere dati da una tabella e filtrarli.

  1. 1.1Introduzione a SQLCosa è SQL, perché si usa, com’è fatto un database.~5 min
  2. 1.2SELECT … FROMLa query più semplice: leggere righe da una tabella.~10 min
  3. 1.3Filtrare con WHERESelezionare solo le righe che soddisfano una condizione.~10 min
  4. 1.4Ordinare con ORDER BYMettere in ordine i risultati, crescente o decrescente.~8 min

02 · SELECT più potente

4 lezioni

Limitare, deduplicare, rinominare e contare: gli strumenti che usi ogni giorno.

  1. 2.1Limitare con LIMITRestituire solo le prime N righe, ad esempio per fare classifiche.~6 min
  2. 2.2Valori unici con DISTINCTEliminare i duplicati dal risultato di una SELECT.~6 min
  3. 2.3Rinominare con ASDare nomi più leggibili a colonne ed espressioni nel risultato.~6 min
  4. 2.4Contare e riassumere: COUNT, AVG, MAXFunzioni di aggregazione: ottenere un singolo numero da molte righe.~8 min

03 · JOIN e GROUP BY

4 lezioni

Combinare più tabelle e ottenere report per gruppo: il cuore di ogni query reale.

  1. 3.1Unire due tabelle: INNER JOINCombinare righe da tabelle diverse seguendo le loro relazioni.~12 min
  2. 3.2Tenere tutto a sinistra: LEFT JOINIncludere anche le righe senza corrispondenza nell’altra tabella.~10 min
  3. 3.3Raggruppare con GROUP BYCalcolare un aggregato per ogni gruppo, ad esempio per dipartimento.~10 min
  4. 3.4Filtrare i gruppi: HAVINGTenere solo i gruppi che soddisfano una condizione sull’aggregato.~8 min

04 · SQL pratico

4 lezioni

Gli strumenti che fanno la differenza nel lavoro vero: liste, intervalli, NULL e logica condizionale.

  1. 4.1Liste e intervalli: IN e BETWEENFiltri compatti per "uno fra questi" e "fra A e B".~8 min
  2. 4.2Gestire i NULL: IS NULL e COALESCERiconoscere e trattare i valori mancanti senza farsi sorprendere.~10 min
  3. 4.3Logica condizionale: CASE WHENTrasformare valori in categorie direttamente nella SELECT.~10 min
  4. 4.4Una query dentro un’altra: sottoqueryUsare il risultato di una SELECT dentro un’altra SELECT.~12 min

05 · JOIN avanzati

4 lezioni

JOIN multipli, self-join, OUTER, CROSS e operazioni insiemistiche: combinare dati come un professionista.

  1. 5.1JOIN su tre o più tabelleAttraversare una catena di relazioni: ordini → clienti → prodotti, in una sola query.~12 min
  2. 5.2Self-JOIN: una tabella con se stessaGerarchie e relazioni interne: leggere una tabella con due ruoli (figlio e padre).~10 min
  3. 5.3OUTER JOIN: trovare i "buchi"Usare LEFT/RIGHT/FULL OUTER JOIN per individuare righe senza corrispondenza.~10 min
  4. 5.4UNION, INTERSECT, EXCEPT (e CROSS JOIN)Combinare risultati come insiemi: unione, intersezione, differenza e prodotto cartesiano.~12 min

06 · Funzioni built-in

4 lezioni

Trasformare e manipolare i dati con le funzioni native di PostgreSQL: stringhe, date, numeri, conversioni di tipo.

  1. 6.1Funzioni sulle stringheLOWER, UPPER, LENGTH, concatenazione, SUBSTRING, TRIM, REPLACE, LIKE e ILIKE.~12 min
  2. 6.2Funzioni su date e timestampEXTRACT, DATE_TRUNC, intervalli e differenze fra date.~12 min
  3. 6.3Funzioni numericheROUND, CEIL, FLOOR, ABS, MOD e divisione intera vs decimale.~10 min
  4. 6.4CAST e conversioni di tipoConvertire fra tipi con `::tipo` e `CAST(... AS ...)`.~10 min

07 · Analitica avanzata

4 lezioni

Query in più passi (CTE), classifiche e running totals (window functions), gerarchie infinite (WITH RECURSIVE).

  1. 7.1CTE: query in più passi con WITHScomporre una query complessa in passi nominati per leggibilità e riuso.~12 min
  2. 7.2Window functions: classifiche e calcoli per gruppoROW_NUMBER, RANK, DENSE_RANK con OVER(PARTITION BY …) per classifiche interne ai gruppi.~14 min
  3. 7.3LAG, LEAD e running totalsConfrontare ogni riga con la precedente/successiva e calcolare somme cumulative.~12 min
  4. 7.4CTE ricorsive: gerarchie a profondità arbitrariaWITH RECURSIVE per percorrere gerarchie come quella delle categorie.~14 min

08 · Scrivere e modificare i dati

4 lezioni

INSERT, UPDATE, DELETE, CREATE TABLE con vincoli, transazioni: chiudere il cerchio con la scrittura.

  1. 8.1Inserire dati: INSERTINSERT singolo e multiplo, clausola RETURNING, scegliere esplicitamente le colonne.~10 min
  2. 8.2Aggiornare ed eliminare: UPDATE e DELETEModifiche selettive con WHERE, e perché un WHERE dimenticato è un disastro.~10 min
  3. 8.3Creare tabelle e vincoli: DDLCREATE TABLE con PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, CHECK e DEFAULT.~12 min
  4. 8.4Transazioni: tutto o nienteBEGIN, COMMIT, ROLLBACK: rendere atomico un gruppo di operazioni.~10 min

09 · Strutture Dati e DDL

4 lezioni

Creazione e alterazione di tabelle, vincoli avanzati, tipi complessi e viste.

  1. 9.1Tipi di dato avanzati ed ENUMTipi numerici, TEXT vs VARCHAR, BOOLEAN, UUID e tipi ENUM custom.~10 min
  2. 9.2Vincoli (Constraints) Multipli e TabellariVincoli composti UNIQUE e PRIMARY KEY, CHECK avanzati e chiavi esterne (ON DELETE CASCADE).~12 min
  3. 9.3Modificare la struttura: ALTER TABLEAggiungere, modificare e rimuovere colonne o vincoli da tabelle esistenti.~10 min
  4. 9.4Viste e astrazione dei datiCreare VIEW per semplificare query complesse e MATERIALIZED VIEW per le performance.~12 min

10 · Ottimizzazione e Indici

4 lezioni

L'arte di rendere le query veloci: indici, piani di esecuzione e ottimizzazione del database.

  1. 10.1Indici e B-TreesCrea indici per velocizzare vertiginosamente le query di ricerca sulle grandi tabelle.~15 min
  2. 10.2EXPLAIN e ANALYZEImpara a leggere i piani di esecuzione del database per diagnosticare colli di bottiglia.~15 min
  3. 10.3Indici Compositi e ParzialiUtilizza indici su più colonne contemporaneamente o solo su una specifica fetta di dati.~12 min
  4. 10.4Il problema N+1Il famigerato problema di performance ORM ed i metodi SQL nativi per superarlo in una sola query.~12 min

11 · Transazioni e Concorrenza

4 lezioni

Gestisci in sicurezza le modifiche concorrenti ai dati: transazioni ACID, lock ed isolation levels.

  1. 11.1Transazioni ACID (BEGIN/COMMIT)Mantieni la coerenza dei dati con BEGIN, COMMIT e ROLLBACK raggruppando query in un blocco unitario ed invisibile agli altri.~15 min
  2. 11.2Race ConditionsScenari estremi: cosa succede quando due dipendenti in database paralleli agiscono sul carrello dello stesso utente.~10 min
  3. 11.3Locking e SELECT FOR UPDATEBlocca le righe attivamente durante la lettura imponendo agli altri thread mutanti di attendere il proprio turno.~15 min
  4. 11.4Livelli di IsolamentoSpingiti ai limiti implementando il livello Serializable o scendendo a Read Committed per super performance non sicure.~12 min

12 · Funzioni e Trigger

4 lezioni

Automatizza la logica di business all'interno del database: scrivi funzioni riutilizzabili e reagisci agli eventi con i Trigger.

  1. 12.1UDF ed SQL BaseCrea le tue User Defined Functions per incapsulare calcoli complessi e riutilizzarli come macro in ogni query.~15 min
  2. 12.2Logica Avanzata con PL/pgSQLAggiungi i superpoteri alle funzioni: variabili, cicli if-else e iterazioni in puro stile procedurale nel database.~15 min
  3. 12.3Introduzione ai TriggerDefinisci funzioni speciali in grado di ispezionare istantaneamente il record IN USCITA (OLD) o IN ENTRATA (NEW).~15 min
  4. 12.4Trigger Pratici ed AuditAutomatizza la sicurezza: aggiorna automaticamente la data "updated_at" e storicizza magicamente per legge ciò che viene cancellato.~12 min

13 · Funzioni Finestra (Window Functions)

4 lezioni

Analisi dei dati avanzata senza collassare le righe: scopri OVER(), PARTITION BY e le funzioni analitiche.

  1. 13.1Introduzione e Clausola OVEREsegui calcoli di aggregazione (come SUM o AVG) mantenendo intatta la struttura delle singole righe originali.~15 min
  2. 13.2Raggruppamenti con PARTITION BYCrea raggruppamenti logici (finestre) all'interno dei dati su cui applicare le funzioni, senza usare GROUP BY.~15 min
  3. 13.3Classifiche: ROW_NUMBER, RANK e DENSE_RANKAssegna ranghi e numeri di riga sequenziali ai risultati, gestendo correttamente i parimerito.~15 min
  4. 13.4Spostamenti: LAG e LEADAccedi ai valori della riga precedente o successiva direttamente dalla riga corrente per calcolare delta e variazioni.~12 min

14 · CTE e Query Gerarchiche (WITH)

3 lezioni

Semplifica query immense tramite le Common Table Expressions e naviga alberi di dati infiniti con le CTE Ricorsive.

  1. 14.1Introduzione alle CTE (WITH)Sostituisci illeggibili subquery innestate con un formato procedurale pulito, dichiarando "tabelle virtuali" temporanee.~12 min
  2. 14.2CTE Multiple e ConcatenateAbbatti la complessità spezzando l'elaborazione in molteplici step sequenziali all'interno di un singolo comando WITH.~15 min
  3. 14.3CTE Ricorsive: Dati ad AlberoNaviga senza limiti gerarchie manageriali e categorie genitore-figlio richiamando la CTE da dentro se stessa.~18 min

15 · PostgreSQL JSON e NoSQL

2 lezioni

Sfrutta la potenza relazionale mista al supporto flessibile documentale di JSON e JSONB senza usare database esterni.

  1. 15.1Integrazione JSON e JSONBSalva documenti complessi internamente ad una colonna e interroga i loro campi con gli operatori freccia.~15 min
  2. 15.2Funzioni di Aggregazione JSONGenera al volo file JSON o array di oggetti nativamente in SQL usando json_build_object() e json_agg().~15 min