Nella lezione precedente abbiamo visto la sintassi base di SQL, imparando come sono strutturate le istruzioni, come vengono utilizzate le parole chiave e come formattare correttamente una query.
Ora possiamo iniziare a utilizzare SQL per uno degli scopi più comuni: selezionare i dati presenti in un database. Con SQL possiamo infatti scegliere quali informazioni ottenere da una tabella e decidere come visualizzarle nel risultato.
L'istruzione SELECT permette di selezionare i dati nelle tabelle.
L'istruzione più utilizzata in SQL ha la seguente sintassi: SELECT colonna FROM tabella;.
In particolare:
SELECT indica quali dati vogliamo ottenere da un database.FROM specifica da quale tabella devono essere recuperati i dati.Utilizzando come esempio una tabella utenti, possiamo recuperare i nomi di tutti gli utenti con la seguente istruzione SQL:
SELECT nome FROM utenti;Il risultato della query contiene solo i valori della colonna nome per tutti gli utenti presenti.
Puoi specificare se mostrare tutte le colonne o solo alcune specifiche nel risultato della query modificando l'istruzione SELECT.
Per selezionare tutte le colonne, puoi usare SELECT *:
SELECT * FROM utenti;Per selezionare singole colonne, indica il nome e dividile con la virgola:
SELECT nome, cognome FROM utenti;L'ordine delle colonne specificate in SELECT determina anche l'ordine con cui vengono mostrate nel risultato della query. In questo caso, ad esempio, viene mostrato prima il cognome:
SELECT cognome, nome FROM utenti;Quando esegui una query, puoi rinominare le colonne mostrate nel risultato utilizzando la parola chiave AS. Questo può essere utile per rendere i nomi delle colonne più chiari o comprensibili.
Per esempio, supponiamo di avere una tabella utenti con una colonna chiamata nome. Possiamo rinominarla nel risultato della query in questo modo:
SELECT nome AS nome_utente FROM utenti;In questo caso, nome è la colonna originale, mentre nome_utente è il nuovo nome che verrà mostrato nel risultato.
Nota: AS non modifica il nome della colonna nella tabella. Il nome specificato dopo AS viene utilizzato solamente per il risultato della query.
Puoi utilizzare AS anche con più colonne:
SELECT nome AS nome_utente, email AS indirizzo_email
FROM utenti;In questo caso, entrambe le colonne avranno un nome diverso nel risultato, mentre la struttura originale della tabella rimarrà invariata.
L'istruzione SELECT non consente soltanto di recuperare valori all'interno delle tabelle. Può anche essere usata per eseguire delle semplici operazioni matematiche sui dati.
Con SQL puoi utilizzare tutti i principali operatori aritmetici:
| Operatore | Descrizione |
+ | Addizione |
- | Sottrazione |
* | Moltiplicazione |
/ | Divisione |
% | Resto della divisione |
Per esempio, se abbiamo una tabella prodotti con una colonna prezzo, possiamo calcolare il doppio del prezzo direttamente nella query:
SELECT prezzo * 2 FROM prodotti;Per ogni prodotto, SQL eseguirà la moltiplicazione utilizzando il valore presente nella colonna prezzo.
Possiamo anche utilizzare AS per assegnare un nome al risultato dell'operazione:
SELECT prezzo * 2 AS prezzo_doppio FROM prodotti;In questo caso, il risultato della moltiplicazione verrà mostrato con il nome prezzo_doppio.
Gli operatori possono essere utilizzati anche con più colonne. Supponiamo, ad esempio, che la tabella prodotti abbia una colonna prezzo e una colonna iva. Possiamo sommare i due valori in questo modo:
SELECT prezzo + iva AS totale FROM prodotti;La query calcolerà prezzo + iva per ogni riga e mostrerà il risultato nella colonna totale.
Possiamo inoltre selezionare contemporaneamente i valori originali e il risultato del calcolo:
SELECT prezzo, iva, prezzo + iva AS totale FROM prodotti;In questo modo possiamo calcolare nuovi valori direttamente nella query, senza modificare i dati originali presenti nella tabella.
Quando selezioni delle righe di una tabella del database con SELECT, è possibile che alcune righe del risultato siano uguali. Ad esempio, nel caso in cui alcuni utenti di un sito vivano nella stessa città:
SELECT citta FROM utenti;La query dell'esempio potrebbe restituire più volte la stessa città se più utenti vivono nella stessa città.
Per evitare ripetizioni nel risultato, puoi usare la parola chiave DISTINCT:
SELECT DISTINCT citta FROM utenti;Usando DISTINCT, ogni valore viene restituito una sola volta.
Nota: quando usi DISTINCT con più colonne, il confronto avviene sulla combinazione di tutte le colonne selezionate. Una riga viene eliminata solo se tutti i valori in quella riga sono identici a quelli di un'altra riga.