Database e web: Python, SQLite3 e sicurezza

✓Capire il flusso request→Python→DBMS→response in un’applicazione web con backend Python
✓Usare il modulo sqlite3 di Python per connettersi, leggere e scrivere dati in un database
✓Comprendere cos’è la SQL Injection, come funziona un attacco e come prevenirlo con i prepared statement
✓Costruire con Flask una mini-applicazione web con lettura/scrittura su DB e visualizzazione dinamica

I database non relazionali

✓Comprendere i limiti del modello relazionale nel contesto Big Data e i motivi dell’emergere dei database NoSQL
✓Distinguere le proprietà ACID (RDBMS) dalle proprietà BASE (NoSQL) e capirne il trade-off
✓Riconoscere le quattro categorie NoSQL (Document, Key-Value, Column-family, Graph) con esempi e casi d’uso
✓Scegliere consapevolmente tra SQL e NoSQL in base ai requisiti di un’applicazione reale

SELECT multiple: JOIN, subquery e operatori insiemistici

✓Combinare dati di più tabelle con INNER JOIN, LEFT JOIN, RIGHT JOIN e SELF JOIN
✓Scrivere subquery scalari, con IN / EXISTS e subquery correlate
✓Unire result set con UNION / UNION ALL e conoscere i limiti di INTERSECT / EXCEPT
✓Scegliere tra JOIN e subquery in base alla leggibilità e alle esigenze della query

Funzioni di raggruppamento

✓Usare le funzioni aggregate COUNT, SUM, AVG, MIN, MAX su insiemi di righe
✓Raggruppare i risultati con GROUP BY per produrre statistiche per categoria
✓Filtrare i gruppi con HAVING e distinguere il suo ruolo rispetto a WHERE
✓Applicare correttamente l’ordine logico di esecuzione: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY