Concetti Chiave
- Le condizioni WHERE e HAVING supportano operatori logici come AND, OR, e NOT, con un ordine specifico di applicazione: NOT precede AND, che a sua volta precede OR.
- BETWEEN è utilizzato per verificare se un valore rientra in un determinato intervallo, e può essere invertito usando NOT.
- IN verifica se un valore è presente in una lista specificata e può essere invertito con NOT per la condizione opposta.
- LIKE consente di confrontare stringhe con modelli, utilizzando caratteri jolly come _ per un singolo carattere e % per zero o più caratteri.
- IS NULL è usato per identificare campi con valore Null, distinguendo dalla presenza di stringhe vuote.
Condizioni di ricerca
Le condizioni di ricerca utilizzate nelle clausole WHERE e HAVING:➔ =,,,=
➔ AND, OR, NOT ; l’ordine di applicazione di prevede che NOT sia applicato prima di AND e AND prima di OR
➔ BETWEEN verifica i valori compresi in un intervallo di valori; se si pone NOT prima di BETWEEN si verifica la condizione apposta.
Es.: SELECT Cognome, Nome, Residenza
FROM Impiegati
WHERE Stipendio BETWEEN 30000 AND 45000;
n.b.: il codice WHERE Stipendio BETWEEN 30000 AND 45000 è equivalente a: WHERE Stipendio>=30000 AND Stipendio45000;
➔ IN: verifica se un valore appartiene a uno dei valori di una lista che viene precisata dopo la parola IN all'interno della condizione; l’IN può essere preceduto da NOT per indicare il valore contrario.
Es.: tutti i dati dei dipendenti che risiedono a Torino, Venezia e Palermo
SELECT *
FROM Impiegati
WHERE Residenza IN (‘Torino’, ‘Venezia’, ‘Palermo’);
n.b.: il codice WHERE Residenza IN (‘Torino’, ‘Venezia’, ‘Palermo’) è equivalente a:
Residenza =‘Torino’ OR Residenza =‘Venezia’ OR Residenza =‘Palermo’;
➔ LIKE: confronta il valore di un attributo di tipo carattere con un modello di stringa, che può contenere caratteri jolly; si può usare il comando NOT prima del LIKE. I caratteri jolly sono:
_ : per indicare uno ed un solo carattere qualsiasi in quella posizione della stringa (equivalente al simbolo ? in Access)
%: per indicare la presenza di zero o più caratteri in quella posizione della stringa (equivalente al simbolo * in Access)
cercare stringhe che iniziano con i caratteri ‘alb’:LIKE ‘alb%’
cercare stringhe che terminano con i caratteri ‘rto’: LIKE ‘%rto’
cercare stringhe di 6 o più caratteri che contengono i caratteri ‘castig’: LIKE ‘%castig%’
cercare stringhe di 4 caratteri che terminano con ‘lia’: LIKE ‘_lia’
Es.: elencare nome e cognome dei dipendenti, il cui cognome inizi per R:
SELECT Cognome, Nome
FROM Impiegati
WHERE Cognome LIKE ’R%’;
➔ IS NULL: è anche possibile identificare in un campo la presenza di campi con valore Null
SELECT ID AS Matricola, Cognome, Nome
FROM Impiegati
WHERE Dipartimento IS NULL;
n.b.:Cosa diversa dal verificare che in Dipartimento ci sia una stringa di caratteri vuota “ ”:
SELECT ID AS Matricola, Cognome, Nome
FROM Impiegati, Dipartimenti
WHERE Dipartimento=’ ‘ ;
Domande da interrogazione
- Qual è l'ordine di applicazione degli operatori logici nelle clausole WHERE e HAVING?
- Come si utilizza l'operatore BETWEEN nelle condizioni di ricerca?
- Qual è la differenza tra IS NULL e una stringa di caratteri vuota nelle condizioni di ricerca?
L'ordine di applicazione prevede che NOT sia applicato prima di AND e AND prima di OR.
BETWEEN verifica se un valore è compreso in un intervallo specificato; può essere preceduto da NOT per verificare la condizione opposta.
IS NULL identifica campi con valore Null, mentre una stringa di caratteri vuota è verificata con Dipartimento=' '.