SQL Lott


Le Fondamenta di SQL – Iniziare il Viaggio nei Dati

# 🧱 Le Fondamenta di SQL – Iniziare il Viaggio nei Dati

*A cura del Comitato di Esperti Virtuali*

> _Benvenuto nel mondo di SQL! Questo percorso è stato pensato dal nostro Comitato di Esperti Virtuali per guidarti, passo dopo passo, nell'arte di interrogare e comprendere i dati. Partiremo dalle basi, con un occhio di riguardo alla logica (ispirati dal Prof. MIT) e all'eleganza della semplicità (nello spirito di Jony Ive)._

## Introduzione

### Perché SQL?
SQL (Structured Query Language) è il linguaggio standard per interagire con i database relazionali. Che tu voglia analizzare dati, costruire applicazioni software, o semplicemente capire come le informazioni sono organizzate e gestite, SQL è una competenza fondamentale.
* **Analisi Dati:** Estrai, filtra, aggrega e trasforma dati per scoprire insight.
* **Sviluppo Web e Software:** Molte applicazioni memorizzano i loro dati in database SQL.
* **Business Intelligence:** Crea report e dashboard per supportare decisioni aziendali.
* **Scienza dei Dati:** Prepara e manipola dataset per modelli di machine learning.

_Come direbbe Steve Jobs, "it just works" per accedere e manipolare grandi quantità di dati strutturati in modo efficiente._

### Cosa imparerai in questa sezione:
* I concetti base dei database relazionali.
* Come scrivere le tue prime query per estrarre dati con `SELECT`.
* Come filtrare i dati in base a condizioni specifiche usando `WHERE`.
* Come cercare pattern testuali con `LIKE`.

---

## Sezione 1: Il Tuo Primo Database – Concetti Chiave

_Una solida comprensione dei fondamentali è cruciale, come sottolineerebbe il Prof. MIT. Renzo Piano apprezzerebbe la chiarezza di queste strutture fondamentali._

### Cos'è un Database Relazionale?
Un database relazionale organizza i dati in **tabelle**. Pensa a una tabella come a un foglio di calcolo (es. Excel), ma con regole più strutturate.

* **Tabelle (Tables):** Collezioni di dati correlati, organizzate in righe e colonne (es. una tabella `Studenti`, una tabella `Corsi`).
* **Righe (Rows / Records):** Ogni riga rappresenta una singola entità o un record all'interno della tabella (es. un singolo studente, un singolo corso).
* **Colonne (Columns / Fields / Attributes):** Ogni colonna rappresenta un attributo specifico dell'entità (es. `Nome`, `Cognome`, `DataNascita` per la tabella `Studenti`). Ogni colonna ha un tipo di dato specifico (es. testo, numero, data).

**Concetti Importanti (accenno):**
* **Chiave Primaria (Primary Key):** Una colonna (o un insieme di colonne) che identifica univocamente ogni riga in una tabella. Non può contenere valori `NULL` (mancanti) e deve essere unica.
* **Chiave Esterna (Foreign Key):** Una colonna (o un insieme di colonne) in una tabella che fa riferimento alla Chiave Primaria di un'altra tabella. Serve a creare relazioni tra tabelle.

### L'Ambiente di Lavoro
Per esercitarti con SQL, avrai bisogno di un ambiente dove poter eseguire le query. Alcune opzioni:
* **Software DBMS Locale:** Installa un sistema di gestione di database (DBMS) come MySQL, PostgreSQL, SQLite sul tuo computer.
* **Servizi Cloud:** Piattaforme come AWS RDS, Google Cloud SQL, Azure SQL Database.
* **Piattaforme Online Interattive:** Siti come [SQL Fiddle](<http://sqlfiddle.com/>), [DB Fiddle](<https://www.db-fiddle.com/>), o quelli specifici dei tutorial che seguirai (es. SQLZoo).

_L'Hacker suggerisce di familiarizzare rapidamente con l'ambiente scelto per massimizzare l'efficienza nell'apprendimento pratico. Vedi la sezione [Risorse > Starting SQL](#) per guide specifiche._

---

## Sezione 2: `SELECT` Basics – Le Tue Prime Query

_Iniziamo a interrogare! L'Esperto Python ti ricorda: pensa alla chiarezza della tua richiesta, come faresti con una funzione ben definita._

### Tutorial 0: `SELECT` basics
L'istruzione `SELECT` è usata per recuperare dati da un database. Puoi specificare quali colonne vuoi visualizzare.

**Sintassi:**
```sql
SELECT colonna1, colonna2, ...
FROM nome_tabella;

Esempio Pratico: Ipotizziamo una tabella Studenti con le colonne: ID_Studente, Nome, Cognome, CorsoLaurea. Per selezionare solo il nome e il cognome di tutti gli studenti:

SELECT Nome, Cognome
FROM Studenti;

Estrarre Tutte le Colonne

Per selezionare tutte le colonne di una tabella, puoi usare l'asterisco (*).

Sintassi:

SELECT *
FROM nome_tabella;

Esempio:

SELECT *
FROM Studenti;

Il Programmatore Meta consiglia cautela: SELECT * è comodo per esplorare, ma in produzione o con tabelle grandi è meglio specificare solo le colonne necessarie per migliorare le prestazioni e la chiarezza.

Alias per le Colonne

Puoi rinominare le colonne nell'output della tua query usando la parola chiave AS. Questo è utile per rendere i risultati più leggibili o per evitare ambiguità quando si lavora con più tabelle (vedi JOIN più avanti).