MySQL - Operatore IS NOT NULL

Ciao a tutti, appassionati di database in erba! Oggi ci immergeremo nel meraviglioso mondo di MySQL e esploreremo un piccolo operatore molto utile chiamato IS NOT NULL. Non preoccupatevi se siete nuovi alla programmazione; vi guiderò in questo viaggio passo per passo, proprio come ho fatto per centinaia di studenti negli anni della mia insegnanza. Allora, prendete una tazza della vostra bevanda preferita e iniziamo!

MySQL - IS NOT NULL Operator

Operatore IS NOT NULL in MySQL

Immaginate di organizzare una festa di compleanno e di stilare una lista di ospiti. Alcuni ospiti hanno confermato la loro presenza, altri hanno detto che non potranno venire, e altri ancora non hanno risposto. Nel mondo dei database, potremmo rappresentare questa situazione con tre valori: 'Sì', 'No' e NULL (per coloro che non hanno risposto). L'operatore IS NOT NULL ci aiuta a trovare tutti gli ospiti che ci hanno dato una risposta, sia essa 'Sì' o 'No'.

In MySQL, NULL rappresenta un valore mancante o sconosciuto. Non è lo stesso di una stringa vuota o di zero; è l'assenza di qualsiasi valore. L'operatore IS NOT NULL ci permette di trovare le righe in cui una colonna specifica ha un valore (qualsiasi valore) piuttosto che essere NULL.

Ecco un esempio semplice:

SELECT * FROM guests WHERE response IS NOT NULL;

Questa query restituirebbe tutti gli ospiti che hanno dato una risposta, indipendentemente dal fatto che stiano venendo alla festa o no.

Ora, creiamo una tabella e vediamo questo in azione:

CREATE TABLE guests (
id INT PRIMARY KEY,
name VARCHAR(50),
response VARCHAR(3)
);

INSERT INTO guests VALUES
(1, 'Alice', 'Yes'),
(2, 'Bob', 'No'),
(3, 'Charlie', NULL),
(4, 'David', 'Yes'),
(5, 'Eve', NULL);

SELECT * FROM guests WHERE response IS NOT NULL;

Questa query restituirà:

id name response
1 Alice Yes
2 Bob No
4 David Yes

Come potete vedere, Charlie ed Eve, che non hanno risposto (NULL), non sono inclusi nel risultato.

IS NOT NULL con la funzione COUNT()

Ora, immaginiamo che vogliamo sapere quanti ospiti hanno effettivamente risposto. Possiamo usare la funzione COUNT() insieme a IS NOT NULL per ottenere queste informazioni:

SELECT COUNT(*) AS responded_guests
FROM guests
WHERE response IS NOT NULL;

Questa query restituirà:

responded_guests
3

Questo ci dice che 3 ospiti hanno risposto all'invito. Molto utile, vero?

IS NOT NULL con l'istruzione UPDATE

A volte, potremmo voler aggiornare il nostro database in base a se un valore è NULL o no. Ad esempio, diciamo che vogliamo cambiare tutte le risposte NULL in 'Maybe':

UPDATE guests
SET response = 'Maybe'
WHERE response IS NULL;

SELECT * FROM guests;

Dopo questo aggiornamento, la nostra tabella guests apparirà così:

id name response
1 Alice Yes
2 Bob No
3 Charlie Maybe
4 David Yes
5 Eve Maybe

IS NOT NULL con l'istruzione DELETE

In alcuni casi, potremmo voler rimuovere le righe con valori NULL. Ad esempio, se decidiamo di conservare solo gli ospiti che hanno dato una risposta definitiva:

DELETE FROM guests
WHERE response IS NULL;

SELECT * FROM guests;

Se eseguiamo questo prima della nostra precedente istruzione UPDATE, rimuoverebbe Charlie ed Eve dalla nostra lista degli ospiti:

id name response
1 Alice Yes
2 Bob No
4 David Yes

Operatore IS NOT NULL utilizzando un programma client

Ora, parliamo di come potresti usare l'operatore IS NOT NULL in una situazione reale utilizzando un programma client. Immagina di scrivere uno script Python per gestire la tua lista degli ospiti:

import mysql.connector

# Connettiti al database
db = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="party_planner"
)

cursor = db.cursor()

# Ottieni tutti gli ospiti che hanno risposto
cursor.execute("SELECT * FROM guests WHERE response IS NOT NULL")
responded_guests = cursor.fetchall()

print("Ospiti che hanno risposto:")
for guest in responded_guests:
print(f"- {guest[1]}: {guest[2]}")

# Conta gli ospiti che non hanno risposto
cursor.execute("SELECT COUNT(*) FROM guests WHERE response IS NULL")
no_response_count = cursor.fetchone()[0]

print(f"\nNumero di ospiti che non hanno risposto: {no_response_count}")

# Chiudi la connessione
db.close()

Questo script si connette al tuo database, recupera tutti gli ospiti che hanno risposto, stampa i loro nomi e risposte, e poi conta quanti ospiti non hanno risposto ancora.

Eccoci! Abbiamo esplorato l'operatore IS NOT NULL da diverse angolazioni. Ricorda, nel mondo dei database, sapere cosa non si sa (valori NULL) può essere altrettanto importante che sapere cosa si sa. L'operatore IS NOT NULL è il tuo fedele compagno nella navigazione di questo territorio.

Mentre chiudiamo, mi viene in mente una studentessa che mi ha detto che comprendere i valori NULL è come vedere l'inchiostro invisibile nei database. Spero che questo tutorial ti abbia aiutato a sviluppare la tua propre 'visione NULL'! Continua a esercitarti, rimani curioso e buon codice!

Credits: Image by storyset