MySQL - Operatore NOT LIKE

Ciao, appassionati di database in erba! Oggi, andremo a immergerci nel meraviglioso mondo di MySQL e esploreremo uno strumento potente del nostro toolkit SQL: l'operatore NOT LIKE. Come il tuo amico insegnante di informatica del quartiere, sono entusiasta di guidarti in questo viaggio, anche se non hai mai scritto una riga di codice prima. Allora, metti la cintura di sicurezza e iniziamo!

MySQL - NOT LIKE Operator

Operatore NOT LIKE di MySQL

L'operatore NOT LIKE è come il fratello ribelle dell'operatore LIKE. Mentre LIKE ci aiuta a trovare modelli corrispondenti, NOT LIKE fa l'opposto - ci aiuta a trovare tutto ciò che non corrisponde a uno specifico modello. È come dire al tuo computer: "Mostrami tutto tranne questo!"

Iniziamo con un esempio semplice. Immagina di avere una tabella chiamata books con una colonna title. Se vogliamo trovare tutti i libri che non iniziano con la lettera 'A', potremmo usare:

SELECT * FROM books WHERE title NOT LIKE 'A%';

Ecco cosa fa questo codice:

  • SELECT *: Questo dice a MySQL di selezionare tutte le colonne.
  • FROM books: Stiamo cercando nella tabella books.
  • WHERE title NOT LIKE 'A%': Questa è la parte magica. Dice, "Dammi tutti i titoli che non iniziano con 'A'."

Il % è un carattere jolly che significa "può seguire qualsiasi cosa". Quindi 'A%' significa "A seguita da qualsiasi cosa."

Utilizzo dell'Operatore NOT LIKE con Caratteri Jolly

Ora, aggiungiamo un po' di pepe con i caratteri jolly! MySQL fornisce due caratteri jolly principali:

  • %: Rappresenta zero, uno o più caratteri
  • _: Rappresenta un singolo carattere

Ecco una tabella degli usi comuni dei caratteri jolly:

Carattere Jolly Descrizione Esempio
% Qualsiasi numero di caratteri '%adventure%'
_ Singolo carattere '_at'
[charlist] Qualsiasi singolo carattere in charlist '[abc]%'
[^charlist] o [!charlist] Qualsiasi singolo carattere non in charlist '[^abc]%'

Supponiamo di voler trovare tutti i titoli dei libri che non finiscono con "ing":

SELECT * FROM books WHERE title NOT LIKE '%ing';

O forse vogliamo libri che non hanno esattamente tre caratteri:

SELECT * FROM books WHERE title NOT LIKE '___';

Ogni sottolineatura rappresenta un carattere, quindi '___' significa "esattamente tre caratteri."

Utilizzo dell'Operatore NOT LIKE con gli Operatori AND/OR

A volte, dobbiamo combinare più condizioni. Ecco dove AND e OR diventano utili. Troviamo libri che non iniziano con 'T' e non finiscono con 'ing':

SELECT * FROM books
WHERE title NOT LIKE 'T%'
AND title NOT LIKE '%ing';

O forse vogliamo libri che né iniziano con 'A' né finiscono con 'z':

SELECT * FROM books
WHERE title NOT LIKE 'A%'
OR title NOT LIKE '%z';

Ricorda, AND significa che entrambe le condizioni devono essere vere, mentre OR significa che almeno una delle condizioni deve essere vera.

Operatore NOT LIKE su Stringhe

L'operatore NOT LIKE è particolarmente utile quando si lavora con stringhe. Supponiamo di avere una tabella customers e vogliamo trovare tutti i clienti i cui nomi non contengono 'son':

SELECT * FROM customers
WHERE name NOT LIKE '%son%';

Questa query restituirà tutti i nomi che non hanno 'son' da nessuna parte. Quindi 'Johnson' e 'Sonny' sarebbero esclusi, ma 'Smith' e 'Brown' sarebbero inclusi.

Ecco un twist divertente: cosa succederebbe se volessimo trovare nomi in cui la seconda lettera non è 'a'?

SELECT * FROM customers
WHERE name NOT LIKE '_a%';

Questa query dice, "Mostrami tutti i nomi in cui la seconda lettera non è 'a'."

Operatore NOT LIKE Utilizzando un Programma Client

Ora, mettiamo tutte queste conoscenze in pratica utilizzando un programma client MySQL. Userò il client della riga di comando MySQL per questo esempio, ma i principi si applicano a qualsiasi client MySQL.

Prima di tutto, creiamo una semplice tabella employees:

CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
position VARCHAR(50)
);

INSERT INTO employees (name, position) VALUES
('John Doe', 'Manager'),
('Jane Smith', 'Developer'),
('Bob Johnson', 'Designer'),
('Alice Brown', 'Tester');

Ora, troviamo tutti i dipendenti le cui posizioni non iniziano con 'D':

SELECT * FROM employees
WHERE position NOT LIKE 'D%';

Questo dovrebbe restituire John Doe (Manager) e Alice Brown (Tester).

Proviamo qualcosa di più complesso. Vogliamo trovare dipendenti i cui nomi non iniziano con 'J' e le cui posizioni non finiscono con 'er':

SELECT * FROM employees
WHERE name NOT LIKE 'J%'
AND position NOT LIKE '%er';

Questo dovrebbe restituire Alice Brown (Tester).

Eccoci! Ora hai padroneggiato l'operatore NOT LIKE in MySQL. Ricorda, la pratica rende perfetti, quindi non aver paura di sperimentare con le tue query. Chi lo sa? Potresti scoprire interessanti modelli nei tuoi dati che non avevi mai notato prima!

Mentre chiudiamo, voglio condividere un piccolo segreto dai miei anni di insegnamento: il miglior modo per imparare SQL è trattarlo come un gioco enigmistico. Ogni query è un enigma in attesa di essere risolto. Quindi, indossa il tuo cappello da detective e inizia a esplorare i tuoi dati. Buona caccia al tesoro, futuri maghi del database!

Credits: Image by storyset