MySQL - Opérateur NOT LIKE

Bonjour, futurs passionnés de bases de données ! Aujourd'hui, nous allons plonger dans le merveilleux monde de MySQL et explorer un outil puissant de notre boîte à outils SQL : l'opérateur NOT LIKE. En tant que votre enseignant bienveillant en informatique, je suis excité de vous guider dans ce voyage, même si vous n'avez jamais écrit une ligne de code auparavant. Alors, bouclez-vous et c'est parti !

MySQL - NOT LIKE Operator

Opérateur NOT LIKE de MySQL

L'opérateur NOT LIKE est comme le frère rebelle de l'opérateur LIKE. Alors que LIKE nous aide à trouver des motifs correspondants, NOT LIKE fait l'inverse - il nous aide à trouver tout ce qui ne correspond pas à un motif spécifique. C'est comme dire à votre ordinateur : "Montre-moi tout sauf cela !"

Commençons par un exemple simple. Imaginons que nous avons une table appelée books avec une colonne title. Si nous voulons trouver tous les livres qui ne commencent pas par la lettre 'A', nous pourrions utiliser :

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

Voici ce que fait ce code :

  • SELECT * : Cela dit à MySQL de sélectionner toutes les colonnes.
  • FROM books : Nous regardons dans la table books.
  • WHERE title NOT LIKE 'A%' : Voici la magie. Cela dit : "Donne-moi tous les titres qui ne commencent pas par 'A'."

Le % est un joker qui signifie "n'importe quoi peut suivre". Ainsi, 'A%' signifie "A suivi par n'importe quoi."

Utilisation de l'Opérateur NOT LIKE avec des Jokers

Maintenant, améliorons les choses avec des jokers ! MySQL fournit deux jokers principaux :

  • % : Représente zéro, un ou plusieurs caractères
  • _ : Représente un seul caractère

Voici un tableau des utilisations courantes des jokers :

Joker Description Exemple
% N'importe quel nombre de caractères '%adventure%'
_ Un seul caractère '_at'
[charlist] N'importe quel caractère dans charlist '[abc]%'
[^charlist] ou [!charlist] N'importe quel caractère en dehors de charlist '[^abc]%'

Disons que nous voulons trouver tous les titres de livres qui ne se terminent pas par "ing" :

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

Ou peut-être que nous voulons des livres qui n'ont pas exactement trois caractères :

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

Chaque tiret bas représente un caractère, donc '___' signifie "exactement trois caractères."

Utilisation de l'Opérateur NOT LIKE avec AND/OR

Parfois, nous devons combiner plusieurs conditions. C'est là que AND et OR deviennent pratiques. Trouvons des livres qui ne commencent pas par 'T' et ne se terminent pas par 'ing' :

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

Ou peut-être que nous voulons des livres qui ni commencent par 'A' ni se terminent par 'z' :

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

Souvenez-vous, AND signifie que les deux conditions doivent être vraies, tandis que OR signifie qu'au moins une condition doit être vraie.

Opérateur NOT LIKE sur des Chaînes

L'opérateur NOT LIKE est particulièrement utile lors de la manipulation de chaînes. Imaginons que nous avons une table customers et que nous voulons trouver tous les clients dont les noms ne contiennent pas 'son' :

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

Cette requête renverra tous les noms qui ne contiennent pas 'son'. Ainsi, 'Johnson' et 'Sonny' seraient exclus, mais 'Smith' et 'Brown' serait inclus.

Voici un twist amusant : et si nous voulons trouver des noms où la deuxième lettre n'est pas 'a' ?

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

Cette requête dit : "Montre-moi tous les noms où la deuxième lettre n'est pas 'a'."

Opérateur NOT LIKE Utilisé avec un Programme Client

Maintenant, mettons toutes ces connaissances en pratique en utilisant un programme client MySQL. J'utiliserai le client en ligne de commande MySQL pour cet exemple, mais les principes s'appliquent à n'importe quel client MySQL.

Premièrement, créons une table employees simple :

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');

Maintenant, trouvons tous les employés dont les postes ne commencent pas par 'D' :

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

Cela devrait renvoyer John Doe (Manager) et Alice Brown (Tester).

Essayons quelque chose de plus complexe. Nous voulons trouver des employés dont les noms ne commencent pas par 'J' et dont les postes ne se terminent pas par 'er' :

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

Cela devrait renvoyer Alice Brown (Tester).

Et voilà ! Vous venez de maîtriser l'opérateur NOT LIKE dans MySQL. Souvenez-vous, la pratique rend parfait, donc n'ayez pas peur d'expérimenter avec vos propres requêtes. Qui sait ? Vous pourriez découvrir des motifs intéressants dans vos données que vous n'avez jamais remarqués auparavant !

Pour conclure, je veux partager un petit secret de mes années d'enseignement : la meilleure façon d'apprendre SQL est de le traiter comme un jeu de puzzle. Chaque requête est un mystère en attente d'être résolu. Alors, mettez votre chapeau de détective et commencez à explorer vos données. Bonne recherche, futurs magiciens des bases de données !

Credits: Image by storyset