sei sul sito di Giovanni Fraterno
Le condizioni di
ricerca sono utilizzate insieme alla clausola WHERE
per determinare i criteri
di selezione delle righe.
Nella
scrittura delle condizioni si usano i segni di confronto: uguale, minore, maggiore, diverso, maggiore uguale e minore
uguale, ovvero:
=, <, >, <>, >=, <=
Una condizione
di ricerca è costruita anche mettendo
insieme più condizioni
legate tra loro grazie agli operatori AND e OR, eventualmente precedute dall’operatore NOT.
L’ordine di applicazione
degli operatori è il
seguente: NOT viene applicato prima di AND, e AND prima di OR.
Le condizioni di
ricerca possono utilizzare anche altre parole
del linguaggio SQL che indicano operatori o predicati, con i quali è possibile
rendere ancora più raffinate le interrogazioni della base di dati.
L’operatore BETWEEN ad esempio controlla se un valore è compreso all’interno di un intervallo di valori, inclusi gli
estremi.
E’ possibile
specificare, anteponendolo a BETWEEN, anche l’operatore logico NOT per valutare la condizione
opposta, cioè
per controllare se il valore non
rientra nell’intervallo
specificato.
Per ottenere ad
esempio l’elenco degli studenti con cognome, nome e matricola nati tra la data 01/01/85
e la data 31/12/89, si può usare la parola BETWEEN,
ovvero scrivere:
SELECT Cognome,
Nome, Matricola
FROM Studenti
WHERE Nascita
BETWEEN 01/01/85 AND 31/12/89
L’operatore IN controlla invece se un valore appartiene ad un insieme specificato di valori.
E’ possibile cioè richiedere le righe che hanno i valori di un attributo compresi in una lista di valori indicati dopo la parola IN all’interno della condizione scritta dopo WHERE.
Per ottenere ad esempio tutti i dati degli studenti che risiedono nelle
province di Milano, Mantova, Brescia e Como, useremo il seguente costrutto:
SELECT *
FROM Studenti
WHERE Prov IN (‘MI’, ‘MN’ ,
‘BS’, ‘CO’)
Anche IN può essere preceduto da NOT per indicare la condizione opposta, cioè la non appartenenza del valore all’insieme dei valori.
L’operatore LIKE confronta infine il valore di un
attributo di tipo carattere con un modello di
stringa che può contenere un carattere
jolly.
I caratteri jolly sono:
- l’underscore per indicare un singolo carattere qualsiasi in quella posizione della stringa
-
il percento per indicare una sequenza qualsiasi di caratteri in quella posizione della stringa.
Con il percento in coda a xyz, ad esempio, vengono
ricercate tutte le stringhe che iniziano con
i caratteri xyz.
Con il percento prima di xyz, ad esempio, vengono
ricercate tutte le stringhe che finiscono con
i caratteri xyz.
Con il percento prima e dopo xyz, ad esempio, vengono ricercate tutte le
stringhe che contengono al
loro interno i caratteri xyz.
Escludendo percento
da xyz avremo le stringhe corrispondenti esattamente a xyz.
Usando infine l’underscore tra x e
z avremo tutte le stringhe
lunghe 3 caratteri con la prima e la terza lettera che corrispondano rispettivamente
a x e z.
Nel successivo
esempio vengono estratti tutti gli studenti il cui cognome inizia con Ros:
SELECT Cognome, Filiale
FROM Studenti
WHERE Cognome LIKE ‘Ros%’
Anche in questo caso si può usare l’operatore NOT prima di LIKE per indicare criteri di ricerca opposti.
Vediamo infine
il predicato IS NULL.
Quest’ultimo confronta
il valore presente in una colonna con il valore nullo.
L’uso di IS
NULL è il solo modo per
controllare la presenza dei valori nulli in una colonna.
E’ possibile
inserire l’operatore di negazione NOT per
valutare la condizione opposta, in altre parole per controllare se un attributo
non ha valore nulli.
L’elenco con cognome
e nome degli studenti per i quali non è
nullo il valore provincia, è ottenibile usando IS NOT NULL, ovvero scrivendo:
SELECT Cognome,
FROM Studenti
WHERE Prov IS NOT NULL