I tuoi preferiti

Esporta

Importa

Il linguaggio SQL

Il linguaggio SQL viene utilizzato per gestire i database in modo da inserire, modificare ed accedere ai dati delle tabelle al loro interno.

I dati su cui lavora questo linguaggio di programmazione possono essere di qualsiasi tipo: possono riguardare gli utenti registrati in un sito, i prodotti di un e-commerce oppure una lista di film. Quando si filtrano i risultati di ricerca di qualcosa si sta utilizzando SQL.

I dati sono contenuti in tabelle che funzionano come un foglio Excel. Ogni riga rappresenta uno strumento o un elemento mentre le colonne rappresentano le varie caratteristiche di quell’elemento. Ad esempio, se abbiamo una tabella contenente gli utenti iscritti in un sito web, in ciascuna riga viene inserito il singolo utente dove il suo nome, il suo cognome e il suo indirizzo mail sono inserite in colonne diverse.

Selezionare i dati desiderati

Possiamo utilizzare il linguaggio SQL per selezionare e filtrare i dati che desideriamo da un database. Per farlo si usa la parola chiave SELECT indicando la colonna e la tabella in cui sono contenuti i dati.

Immaginiamo di avere questa tabella che chiameremo Utenti:

idUtentenomeemail
1Jimjim@mail
2Giannigianni@mail
3Mariomario@mail

Se vogliamo conoscere i nomi di tutti gli utenti registrati scriveremo:

SELECT nome
FROM Utenti;

A quel punto il programma che usiamo ci mostrerà soltanto la colonna nome.

Se abbiamo una tabella con la lista dei film che sono stati prodotti contenenti anche l’anno di pubblicazione e il paese, possiamo stabilire quale colonna vogliamo vedere.

Possiamo anche scegliere di visualizzare soltanto i nomi dei film che sono stati prodotti in un determinato paese. Ad esempio, scrivendo il seguente codice possiamo visualizzare una colonna con il nome di tutti i film che sono stati prodotti in Italia:

SELECT nome
FROM Film
WHERE paese = 'Italia';

Possiamo indicare più paesi scrivendoli all’interno di una parentesi e sostituendo il simbolo = con IN:

SELECT nome
FROM Film
WHERE paese IN ('Italia', 'Francia');

Possiamo, inoltre, selezionare più colonne indicandole all’inizio del codice, per esempio scrivendo:

SELECT nome, email
FROM Utenti;

Scrivendo SELECT * stiamo selezionando tutti gli elementi di una tabella.

Ordinare e filtrare i dati in SQL

Possiamo ordinare i dati che desideriamo con la parola chiave ORDER BY e poi indicando il nome della tabella. Come impostazione predefinita, in una colonna dove ci sono parole gli elementi vengono impostati in ordine alfabetico.

Riprendendo l’esempio della tabella sopra, possiamo ordinare i nomi degli utenti registrati su un sito in questo modo:

SELECT *
FROM Utenti
ORDER BY nome;

Oppure:

SELECT nome
FROM Utenti
ORDER BY nome;

Come anche:

SELECT nome, email
FROM Utenti
ORDER BY nome;

Qual è la differenza tra i tre esempi? Nel primo caso verrà visualizzata l’intera tabella con i nomi disposti in ordine alfabetico, nel secondo caso verrà visualizzata soltanto la colonna nome mentre nell’ultimo esempio vogliamo vedere sia la colonna nome che quella email.

Se vogliamo ordinare una colonna dove ci sono numeri, il procedimento è lo stesso con l’aggiusta delle parole chiave ASC e DESC se vogliamo ordinarli dal numero più grande a quello più piccolo o viceversa. Nel caso delle parole si aggiunge DESC se vogliamo l’ordine alfabetico al contrario.

Possiamo selezionare gli elementi in base a qualsiasi condizione vogliamo. Abbiamo visto sopra come selezionare un film in base al paese ma possiamo anche stabilire un limite minimo e massimo di anno di produzione.

SELECT nome
FROM Film
WHERE anno BETWEEN 2000 AND 2010;

Infine, possiamo combinare più condizioni con la parola chiave AND. Nell’esempio sotto cerchiamo i film prodotti in Italia e in Francia tra il 1990 e il 2000:

SELECT nome
FROM Film
WHERE paese IN ('Italia', 'Francia') 
AND anno BETWEEN 2000 AND 2010;
Immagine di una persona che sta guardando un foglio di calcolo. Per selezionare facilmente alcuni elementi della tabella è utile il linguaggio SQL.

Gli operatori di disuguaglianza e di confronto

Quando abbiamo bisogno di trovare gli elementi che hanno proprietà con valori diversi da uno specifico, possiamo usare gli operatori di disuguaglianza e di confronto, in modo simile ai simboli maggiore e minore usati in matematica.

Poniamo il caso che vogliamo conoscere i nomi di tutti i film che non sono stati prodotti in Italia. Possiamo scrivere il seguente codice che è uguale a quello per filtrare i dati soltanto che invece del simbolo = useremo dei simboli che indicano il contrario.

SELECT nome
FROM Film
WHERE paese <> 'Italia';

Possiamo anche usare i simboli <, >, <= e >= in maniera distinta, ad esempio per selezionare i film prodotti prima o dopo un preciso anno. I numeri si scrivono senza virgola

SELECT nome
FROM Film
WHERE anno > 2000;

Le funzioni nel linguaggio SQL

Anche il linguaggio SQL permette di utilizzare delle funzioni. Queste sono utili per semplificare la gestione dei database. Tramite loro possiamo rinominare le colonne oppure combinarle in una nuova tabella.

Per rinominare una colonna, si usa la parola AS dopo averla selezionata. In genere, potrebbe non essere necessario farlo ma è utile anche sapere come procedere.

Immaginiamo di volere rinominare la colonna nome degli utenti registrati sul sito in utente. Scriveremo così:

SELECT nome AS utente
FROM Utenti;

Possiamo aggiungere altre colonne come mostrato sopra con la possibilità di rinominarle o lasciarle in quel modo. Scrivendo il codice sotto, non stiamo rinominando la colonna email.

SELECT nome AS utente, email
FROM Utenti;

Possiamo comunque rinominare la seconda colonna in questo modo:

SELECT nome AS utente, 
email AS contatto
FROM Utenti;

E’ utile rinominare una colonna quando filtriamo il punteggio più alto ottenuto tra varie squadre o giocatori di qualche torneo.

Ritorniamo all’esempio dei film. Possiamo selezionare tutti i film prodotti nell’ultimo anno usando il prefisso MAX o quelli prodotti per primi con la parola MIN. Se vogliamo trovare la media aritmetica tra i valori di una colonna, usiamo la query, parola chiave per fare una richiesta in informatica, AVG. oppure possiamo sommare i valori di una colonna con la parola SUM.

SELECT MAX(anno)
FROM Film

Contare le righe e le colonne di una tabella

Se vogliamo sapere quanti elementi sono contenuti in una tabella con l’SQL ci basterà contare le righe. In parole semplici, ci basterà usare la parola chiave COUNT:

SELECT COUNT(*) AS utente
FROM Utenti;

Il conteggio delle colonne serve semplicemente per conoscere quanti elementi soddisfano una proprietà. Infatti, proprio come in foglio di calcolo, alcune celle possono restare vuote indicando che un elemento non ha una determinata caratteristica o che non conosciamo alcuni valori.

Unire colonne di tabelle diverse

Per unire colonne di tabelle diverse dobbiamo selezionarne una di partenza e poi unirla con un’altra. Affinché possano unirsi, le due tabelle devono avere una colonna in comune. Lo scopo è quello di riunire due tabelle in una sola.

Sotto viene mostrato un esempio generico:

SELECT *
FROM tabella1
JOIN tabella 2
ON tabella1.colonna1 = tabella2.colonna2

Per unire due tabelle al posto di JOIN si possono usare le query INNER JOIN e LEFT JOIN. La differenza tra le due parole chiave sta nel fatto che la prima cancella tutti gli elementi che non sono in comune ad entrambe le colonne selezionate mentre la seconda query riporta tutto.

Usare LEFT JOIN vuol dire selezionare l’intera prima tabella a cui viene aggiunta tutta la seconda collegando le colonne che abbiamo stabilito.

Cosa sono le subquery

Possiamo inserire dei comandi all’interno di altri comandi nel linguaggio SQL. In altre parole possiamo selezionare degli elementi e usarli come condizione per selezionare altri elementi.

SELECT nome, cognome
FROM compratori
WHERE compratori.id IN
(
  SELECT id
  FROM ordini
)

Nell’esempio sopra, stiamo chiedendo il nome e cognome di tutti coloro che hanno acquistato un nostro prodotto, combinando le tabelle dei consumatori con quello degli ordini e collegando le colonne con i loro identificativi.