Allora, abbiamo già iniziato a capire SELECT, il comando SQL che serve per tirare fuori dati da una tabella o da più tabelle nel database. Possiamo dire che è come il tasto F5 del browser per il database: "fammi vedere cosa hai". La struttura base di una query è così:
SELECT colonna1, colonna2, … colonnaN
FROM tabella
Dove:
SELECT— è la parola chiave con cui parte la query.colonna1, colonna2, ...— è la lista delle colonne da cui vuoi prendere i dati.FROM tabella— indica la tabella da cui vengono estratti i dati.
Dai, spacchettiamo subito tutto con degli esempi!
Struttura principale del comando SELECT
Selezionare tutte le colonne. Se vuoi vedere tutti i dati di una tabella, puoi usare l’asterisco *. Per esempio, abbiamo la tabella students:
| id | name | age | grade |
|---|---|---|---|
| 1 | Alex | 17 | A |
| 2 | Maria | 19 | B |
| 3 | Otto | 21 | C |
Per tirare fuori tutti i dati da questa tabella, usa questa query:
SELECT * FROM students
E il risultato sarà questo set di colonne e righe:
| id | name | age | grade |
|---|---|---|---|
| 1 | Alex | 17 | A |
| 2 | Maria | 19 | B |
| 3 | Otto | 21 | C |
Cioè — tutta la tabella, proprio come volevi.
Selezionare colonne specifiche
Ovviamente, di solito vuoi prendere solo le colonne che ti servono, così non ti porti dietro dati inutili. Per esempio vuoi sapere i nomi e l’età degli studenti. Allora devi scrivere una query così:
SELECT name, age FROM students
Il risultato della query sarà questo:
| name | age |
|---|---|
| Alex | 17 |
| Maria | 19 |
| Otto | 21 |
Hai visto la differenza? Quando scegli solo le colonne che ti servono, la query va più veloce ed è più pulita.
Ordine di esecuzione della query
Le query SQL sono un po’ subdole: anche se scriviamo SELECT all’inizio, in realtà prima viene processata la parte FROM, e solo dopo viene restituito il risultato. Ecco come funziona dietro le quinte:
- Viene processata la tabella in
FROM: il server trova la tabella indicata. - Si applicano le condizioni alle righe (se ci sono): vengono prese solo le righe che rispettano le condizioni.
- Si selezionano le colonne indicate: dai record rimasti vengono estratti i dati che ti servono.
Quindi in una query come questa:
SELECT name FROM students
Prima il server trova la tabella students, poi legge la colonna name, e solo dopo ti restituisce il risultato.
Esempi pratici
Esempio n°1: Lista degli studenti.
Immagina di essere l’amministratore dell’università e ti servono i nomi di tutti gli studenti. Query:
SELECT name
FROM students;
Risultato:
| name |
|---|
| Alex |
| Maria |
| Otto |
Esempio n°2: Aggiungiamo età e id.
Ora ti servono id, nomi ed età. Basta aggiungere altre colonne:
SELECT name, age, id
FROM students;
Risultato:
| name | age | id |
|---|---|---|
| Alex | 17 | 1 |
| Maria | 19 | 2 |
| Otto | 21 | 3 |
Esempio n°3: Aggiungiamo espressioni.
Supponiamo che vuoi sapere quanti anni mancano ai tuoi studenti per diventare maggiorenni.
Allora invece di age scrivi 21-age. Qui per semplicità supponiamo che la maggiore età sia a 21:
SELECT name, 21-age
FROM students;
E il risultato sarà questo:
| name | 21-age |
|---|---|
| Alex | 4 |
| Maria | 2 |
| Otto | 0 |
Scoprirai di più sulle espressioni nelle prossime lezioni. Ora vediamo un po’ di errori con cui sicuramente qualcuno di voi si è già scontrato.
Errori tipici quando usi SELECT
Errori di battitura nei nomi di tabelle e colonne.
Uno degli errori più comuni è quando il nome della tabella o della colonna è scritto male.
Se nel database non c’è la tabella studentsz, ti becchi un errore:
SELECT name
FROM studentsz; -- Errore: tabella non esiste!
Oppure se la colonna si chiama name, ma tu scrivi student_name, di nuovo errore:
SELECT student_name -- Errore: colonna non esiste!
FROM students;
La soluzione è semplice: controlla sempre i nomi di tabelle e colonne.
Errori di sintassi nella query.
Un altro errore classico — ti sei dimenticato la virgola tra le colonne:
SELECT name age id -- Errore: manca la virgola!
FROM students;
Ma non ti preoccupare. La query SELECT serve solo a leggere i dati. Qualsiasi errore in una query del genere non può rovinare i dati nel tuo database. Ma quando arriveremo alle query che modificano i dati — lì sì che gli errori possono costare caro.
Usare * invece di colonne specifiche.
Quando usi *, tiri fuori TUTTI i dati, anche quelli che non ti servono. Questo rallenta tutto e può essere un problema con tabelle grosse. Scegli sempre solo le colonne che ti servono davvero.
GO TO FULL VERSION