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

Comandi QL: la SELECT di base

✓Scrivere query SELECT complete con clausole WHERE, ORDER BY e LIMIT
✓Usare operatori di confronto, BETWEEN, IN, LIKE, IS NULL per filtrare le righe
✓Applicare alias di colonna e tabella e rimuovere i duplicati con DISTINCT
✓Implementare la paginazione con LIMIT e OFFSET su dataset reali

Algebra relazionale

✓Comprendere l’algebra relazionale come fondamento teorico del linguaggio SQL
✓Applicare le operazioni unarie (proiezione π e selezione σ) su insiemi di tuple
✓Applicare le operazioni binarie: prodotto cartesiano, join naturale, theta-join, equi-join
✓Tradurre espressioni di algebra relazionale in query SQL e viceversa

Comandi DML: manipolare i dati

✓Inserire record con INSERT INTO, sia in forma completa che abbreviata, anche con valori multipli
✓Aggiornare dati con UPDATE … SET … WHERE e comprendere il rischio di omettere la clausola WHERE
✓Eliminare righe con DELETE FROM … WHERE gestendo correttamente le Foreign Key
✓Utilizzare le transazioni (BEGIN, COMMIT, ROLLBACK) per garantire l’atomicità delle operazioni