sei sul sito di Giovanni Fraterno
Per porre interrogazioni al database, con il fine di ritrovare le
informazioni che interessano, occorre digitare il comando SELECT.
Il risultato è
la generazione di una nuova
tabella, filtrata attraverso
un criterio di ricerca insito nell’interrogazione formulata.
La struttura
generale del comando SELECT è composta dalla stessa istruzione accompagnata
dalle clausole FROM e WHERE, ovvero:
SELECT …….
FROM ……..
WHERE …….
Dopo SELECT vengono indicati i nomi delle colonne, nel caso fosse necessario elencarle tutte, basta digitare
solo il carattere asterisco, ovvero: *.
Dopo FROM vengono indicati i nomi delle tabelle su cui deve operare il comando SELECT.
La clausola WHERE infine specifica la condizione che deve essere soddisfatta dai campi, si badi che possono comparire anche più
condizioni combinate utilizzando gli operatori logici AND, OR e NOT.
AND combina una coppia o più criteri che
devono essere rispettati tutti contemporaneamente.
OR combina ugualmente una coppia o più
criteri con uno almeno che deve essere soddisfatto.
NOT invece specifica semplicemente un criterio
che esclude delle istanze dai risultati.
Grazie ad
esempio al successivo costrutto SQL vengono
selezionati gli studenti della
provincia di Milano nati dopo il 25/09/1986:
SELECT Cognome,
Nome, CodFisc, Matricola
FROM Studenti
WHERE (Prov
=’Milano’) AND (Nascita > ’25/09/1986’)
Il comando SELECT possiede il predicato DISTINCT.
Se viene specificato il predicato DISTINCT le righe
duplicate nella tabella
risultante vengono ridotte
a una.
Per esempio, se
si desidera ottenere l’elenco di tutte le Città di provenienza degli studenti, specificando una sola volta il nome della
Città anche quando è riferita a più studenti, si deve usare la clausola DISTINCT prima dell’indicazione dell’attributo, ovvero digitare:
SELECT DISTINCT
Citta
FROM Studenti
Il comando SELECT senza DISTINCT produrrebbe l’elenco di tutte le città
ripetendole tante volte per quanti sono gli studenti con la stessa residenza.
Con il comando SELECT si può anche richiedere il calcolo di espressioni
sugli attributi presenti nella tabella.
La tabella
risultante contiene una colonna aggiuntiva con i risultati del calcolo per ogni
riga.
Questa nuova
colonna viene intestata con una descrizione opportuna
utilizzando la parola chiave AS.
L’esempio successivo
produce un elenco degli studenti, con nome, cognome, il voto attuale e quali
sarebbero i voti aumentati di un punto, senza modifica dei voti stessi nelle
righe della tabella:
SELECT Cognome,
Nome, Voto AS Attuale,Voto +1 AS Nuovo
FROM Studenti
All’interno del
comando SELECT possono essere usate funzioni predefinite che agiscono sui valori contenuti in
insiemi di righe della tabella, funzioni che per questo motivo si chiamano funzioni di aggregazione.
La funzione ad
esempio COUNT conta il numero di righe presenti in una tabella.
La sintassi del
linguaggio SQL richiede di specificare come argomento della funzione il nome di
un attributo oppure il carattere asterisco.
Nel primo caso non vengono
conteggiate le righe che
hanno valore nullo nella colonna dell’attributo specificato.
Nel secondo
caso, indicando l’asterisco, la funzione COUNT, con tra parentesi asterisco, calcola il numero delle righe
della tabella, incluse
quelle con campi di tipo nullo.
In sostanza la
funzione COUNT asterisco serve per ottenere la cardinalità di una relazione.
La funzione
calcola solo il numero delle righe, indipendentemente dai valori in esse memorizzati.
La sintassi con l’asterisco è:
SELECT COUNT (*)
FROM Studenti
WHERE Prov = ‘MI’
Nel comando SELECT si può inserire la clausola ORDER BY
per ottenere i risultati di un’interrogazione ordinati secondo i valori
contenuti in una o più colonne, tra quelle elencate accanto a SELECT.
L’ordinamento
può essere crescente oppure decrescente.
I due tipi di ordinamento sono specificati usando rispettivamente le
parole chiave ASC per crescente e DESC per decrescente.
L’ordinamento è crescente per default.
I due successivi
esempi producono in output due elenchi alfabetici dei dipendenti, con cognome, nome, codice fiscale e data di nascita:
SELECT Cognome,
Nome, CodFisc, Nascita
FROM Dipendenti
ORDER BY
Cognome, Nome
SELECT Cognome,
Nome, CodFisc, Nascita
FROM Dipendenti
ORDER BY Cognome DESC, Nome