<< lezione precedente
INDICE
lezione successiva >>

Breve corso di SQL - Il comando SELECT

Il comando SELECT serve per estrarre dati da una tabella; in pratica vengono estratte tutte e solo le righe da una tabella che soddisfano una certa condizione.

Sintassi

La sintassi qui data è ovviamente incompleta e semplificata:

SELECT {Campo1, Campo2, ...}
FROM {Tabella 1}
WHERE {Condizione1 AND|OR Condizione2 AND|OR ...}

Es: Sia la tabella Anagrafica

Cognome Età
Verdi 15
Rossi 25
Bianchi 85


La query:

SELECT Cognome FROM Anagrafica WHERE Età=25

dà come risultato:

Cognome
Rossi

Qualche approfondimento

La sintassi vista finora del comando SELECT permette interrogazioni molto semplici, spesso si cercano dati in maniera molto più complessa, come quando sono presenti relazioni fra tabelle (delle relazioni tra tabelle parleremo più avanti su queste pagine).

Vediamo ora qualche clausola WHERE un po' più complessa:
nella parte che segue il WHERE del comando SELECT può essere inserita una qualsiasi espressione booleana (cioè una qualsiasi espressione che, risolta, dia come risultato uno dei due valori booleani (Vero, Falso)) che sia calcolabile, ovviamente nel risultato della query verranno inserite tutte e sole le righe della tabella che rendono vera l'espressione che segue la clausola WHERE (Where Condition).

Es: Sia la tabella Dipendenti:

Cognome Nome Età Data_assunzione
Rossi Mario 40 10/5/1995
Verdi Giorgina 20 1/3/1999
Bianchi Paolo 50 1/6/1975
Gialli Loredana 35 24/9/1989
Rossi Giorgio 46 15/7/1979


La query

SELECT * FROM Dipendenti WHERE True

ritorna tutta la tabella, mentre la query

SELECT * FROM Dipendenti WHERE False

non ritorna nulla.

La query

SELECT Cognome FROM Dipendenti WHERE Età>35 AND (Cognome='Rossi' OR Nome Like 'Paolo') AND Età<>46

ritorna solamente le seguenti righe:

Cognome Nome Età Data_assunzione
Rossi Mario 40 10/5/1995
Bianchi Paolo 50 1/6/1975


Dopo la where condition possono essere presenti ancora alcuni comandi:

GROUP BY
HAVING
ORDER BY {Campo1, Campo2, ...} [ASC | DESC]

Il più semplice è ovviamente ORDER BY, che serve per ordinare una tabella rispetto ad uno o più campi, le parole chiave opzionali in fondo significano il tipo di ordinamento: ASC ( o niente) sta per ascendente, DESC sta per discendente.
Vediamo subito con un esempio come funziona. Con la tabella dell'esempio precedente, la query

SELECT * FROM Dipendenti WHERE Età<=40 ORDER BY Cognome DESC

ritorna

Cognome Nome Età Data_assunzione
Verdi Giorgina 20 1/3/1999
Rossi Mario 40 10/5/1995
Gialli Loredana 35 24/9/1989


Se invece non avessimo messo alcunché in fondo o avessimo messo ASC la tabella sarebbe stata ordinata in ordine crescente rispetto al Cognome.

Si può ordinare anche rispetto a più campi; i campi che vengono dopo il primo sono usati per l'ordinamento nel caso in cui i valori del primo siano uguali:

SELECT * FROM Dipendenti ORDER BY Cognome, Età

Cognome Nome Età Data_assunzione
Bianchi Paolo 50 1/6/1975
Gialli Loredana 35 24/9/1989
Rossi Mario 40 10/5/1995
Rossi Giorgio 46 15/7/1979
Verdi Giorgina 20 1/3/1999

<< lezione precedente lezione successiva >>