SQL - Operatore NOT
Ciao a tutti, appassionati di SQL in erba! Sono entusiasta di guidarvi attraverso il mondo affascinante degli operatori SQL, in particolare l'operatore NOT. Come qualcuno che ha insegnato SQL per anni, posso assicurarvi che padroneggiare questo operatore migliorerà significativamente le vostre abilità di interrogazione del database. Allora, entriamo nel dettaglio!
L'Operatore SQL NOT
L'operatore NOT è come quel amico che sempre contraddice tutto ciò che dici. Viene utilizzato per negare una condizione in SQL, invertendo essentially il risultato di un'espressione booleana. Quando usate NOT, state dicendo: "Dammi tutto ciò che non corrisponde a questa condizione."
Iniziamo con un esempio semplice. Immaginate di avere una tabella chiamata students
con le colonne id
, name
, e age
.
SELECT * FROM students WHERE NOT age = 20;
Questa query restituirà tutti gli studenti che non hanno 20 anni. È come dire: "Mostrami tutti gli studenti, ma escludi i ventenni."
Ecco un altro esempio:
SELECT * FROM students WHERE NOT name = 'John';
Questo ci darà tutti gli studenti il cui nome non è John. Povero John, sempre escluso!
Operatore NOT SQL con LIKE
Ora, aggiungiamo un po' di pepe combinando NOT con l'operatore LIKE. LIKE viene utilizzato per il confronto di modelli e, quando combinato con NOT, diventa uno strumento potente per l'esclusione basata su modelli.
SELECT * FROM students WHERE name NOT LIKE 'A%';
Questa query restituirà tutti gli studenti i cui nomi non iniziano con 'A'. È come organizzare una festa e dire: "Tutti sono invitati, tranne chi ha un nome che inizia con A!" (Mi dispiace, Anna e Alex!)
Ecco un altro esempio divertente:
SELECT * FROM students WHERE email NOT LIKE '%@gmail.com';
Questo ci darà tutti gli studenti che non usano Gmail. Forse sono hipster che preferiscono provider di posta elettronica meno conosciuti!
Operatore NOT SQL con IN
L'operatore IN viene utilizzato per specificare più valori in una clausola WHERE. Quando combinato con NOT, permette di escludere un elenco di valori.
SELECT * FROM students WHERE age NOT IN (18, 19, 20);
Questa query restituirà tutti gli studenti che non hanno 18, 19 o 20 anni. È come dire: "Mostrami tutti, tranne i teenagers e i giovani adulti!"
Ecco un altro esempio:
SELECT * FROM courses WHERE department NOT IN ('Math', 'Physics', 'Chemistry');
Questo ci darà tutti i corsi che non sono nei dipartimenti di Matematica, Fisica o Chimica. Perfetto per chi vuole evitare le scienze dure!
Operatore NOT SQL con IS NULL
I valori NULL in SQL rappresentano informazioni mancanti o sconosciute. L'operatore IS NULL viene utilizzato per testare i valori NULL e, quando combinato con NOT, ci aiuta a trovare valori non NULL.
SELECT * FROM students WHERE phone_number IS NOT NULL;
Questa query restituirà tutti gli studenti che hanno fornito un numero di telefono. È come dire: "Mostrami tutti gli studenti a cui posso effettivamente telefonare!"
Ecco un altro esempio pratico:
SELECT * FROM assignments WHERE submission_date IS NOT NULL;
Questo ci darà tutti i compiti che sono stati presentati. Nessun procrastinatore in questo set di risultati!
Operatore NOT SQL con BETWEEN
L'operatore BETWEEN seleziona valori all'interno di un intervallo dato. Quando utilizzato con NOT, seleziona valori al di fuori di tale intervallo.
SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;
Questa query restituirà tutti i prodotti che costano meno di 10 o più di 20. È perfetto per chi fa shopping con un budget limitato e per chi cerca lussi!
Un altro esempio:
SELECT * FROM events WHERE event_date NOT BETWEEN '2023-01-01' AND '2023-12-31';
Questo ci darà tutti gli eventi che non si svolgeranno nell'anno 2023. Attenzione, viaggiatori nel tempo!
Operatore NOT SQL con EXISTS
L'operatore EXISTS viene utilizzato per testare l'esistenza di qualsiasi record in una subquery. Quando combinato con NOT, verifica l'assenza di qualsiasi record che soddisfa la subquery.
SELECT * FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
Questa query complessa in realtà fa qualcosa di semplice: restituisce tutti i clienti che non hanno effettuato alcun ordine. È come trovare tutti i visitatori del negozio nel tuo database!
Ecco un altro esempio:
SELECT * FROM employees e
WHERE NOT EXISTS (SELECT 1 FROM managers m WHERE m.employee_id = e.id);
Questo ci darà tutti i dipendenti che non sono manager. È un ottimo modo per trovare le api nel tuo organizzazione!
Per riassumere tutti i metodi dell'operatore NOT che abbiamo discusso, ecco una tabella utile:
Metodo | Descrizione | Esempio |
---|---|---|
NOT con confronto di base | Negazione di una semplice condizione | WHERE NOT age = 20 |
NOT con LIKE | Esclusione di modelli | WHERE name NOT LIKE 'A%' |
NOT con IN | Esclusione di un elenco di valori | WHERE age NOT IN (18, 19, 20) |
NOT con IS NULL | Trova valori non NULL | WHERE phone_number IS NOT NULL |
NOT con BETWEEN | Esclusione di un intervallo | WHERE price NOT BETWEEN 10 AND 20 |
NOT con EXISTS | Verifica l'assenza in una subquery | WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id) |
Ecco fatto, gente! Abbiamo esplorato l'operatore NOT in tutta la sua gloria. Ricorda, in SQL così come nella vita, a volte è altrettanto importante sapere ciò che non vuoi rispetto a ciò che vuoi. Buone interrogazioni e che i vostri risultati siano sempre NOT NULL!
Credits: Image by storyset