SQL - Clause WHERE

Bienvenue, futurs magiciens des bases de données ! Aujourd'hui, nous plongeons dans l'un des outils les plus puissants de votre boîte à outils SQL : la clause WHERE. En tant que votre enseignant bienveillant en informatique, je suis là pour vous guider dans cette aventure passionnante. Alors, prenez vos baguettes virtuelles (claviers) et c'est parti pour un peu de magie SQL !

SQL - Where Clause

La Clause WHERE en SQL

Imaginez que vous êtes dans une méga-bibliothèque avec des millions de livres. Vous cherchez un livre spécifique sur les dragons. Vous seriez-vous penché sur chaque livre ? Bien sûr que non ! Vous demanderiez à la bibliothécaire de vous aider à trouver des livres sur les dragons. En SQL, la clause WHERE est votre bibliothécaire bienveillante.

La clause WHERE nous permet de filtrer les données en fonction de conditions spécifiques. C'est comme dire à la base de données : "Hé, je ne veux voir que cette information particulière qui correspond à ces critères."

Voici la syntaxe de base :

SELECT column1, column2, ...
FROM table_name
WHERE condition;

Ne vous inquiétez pas si cela semble un peu intimidant. Nous allons le décomposer morceau par morceau, et bientôt vous filtrerez les données comme un pro !

Clause WHERE avec une Instruction SELECT

Commençons par un exemple simple. Imaginez que nous avons une table appelée students avec les colonnes id, name, et age. Nous voulons trouver tous les étudiants qui ont 18 ans.

SELECT *
FROM students
WHERE age = 18;

Dans cette requête :

  • SELECT * signifie que nous voulons voir toutes les colonnes.
  • FROM students spécifie la table que nous interrogeons.
  • WHERE age = 18 est notre condition. C'est comme dire : "Montre-moi uniquement les lignes où l'âge est exactement 18."

Disons que nous voulons uniquement voir les noms de ces étudiants de 18 ans :

SELECT name
FROM students
WHERE age = 18;

Voyez comment nous avons changé * en name ? Maintenant, nous ne verrons que les noms, pas toutes les colonnes.

Clause WHERE avec une Instruction UPDATE

La clause WHERE n'est pas seulement pour les instructions SELECT. Elle est également extrêmement utile pour mettre à jour les données. Disons que nous voulons mettre à jour l'âge de tous les étudiants nommés "Alice" pour qu'ils aient 19 ans.

UPDATE students
SET age = 19
WHERE name = 'Alice';

Cette requête changera l'âge en 19, mais seulement pour les étudiants nommés Alice. Sans la clause WHERE, nous changerions accidentellement l'âge de tout le monde !

Clause WHERE avec l'Opérateur IN

Que se passe-t-il si nous voulons trouver des étudiants qui ont 18, 19 ou 20 ans ? Nous pourrions utiliser plusieurs conditions OR, mais il y a une manière plus élégante : l'opérateur IN.

SELECT *
FROM students
WHERE age IN (18, 19, 20);

Cette requête nous retournera tous les étudiants dont l'âge est 18, 19 ou 20. C'est comme dire : "Est-ce que l'âge est dans cette liste de valeurs ? Si oui, incluez-le !"

Clause WHERE avec l'Opérateur NOT IN

Maintenant, que se passe-t-il si nous voulons trouver tous les étudiants qui NE sont PAS âgés de 18, 19 ou 20 ans ? Très simple ! Nous ajoutons NOT devant IN :

SELECT *
FROM students
WHERE age NOT IN (18, 19, 20);

Cela nous donnera tous les étudiants dont l'âge est autre chose que 18, 19 ou 20.

Clause WHERE avec l'Opérateur LIKE

Parfois, nous avons besoin de chercher des motifs dans des données textuelles. C'est là que l'opérateur LIKE entre en jeu. Disons que nous voulons trouver tous les étudiants dont les noms commencent par 'A' :

SELECT *
FROM students
WHERE name LIKE 'A%';

Dans cette requête, '%' est un joker qui correspond à n'importe quelle séquence de caractères. Donc 'A%' signifie "commence par A, suivi de n'importe quoi."

Nous pouvons également chercher des noms qui se terminent par 'n' :

SELECT *
FROM students
WHERE name LIKE '%n';

Ou des noms qui contiennent 'li' n'importe où :

SELECT *
FROM students
WHERE name LIKE '%li%';

Clause WHERE avec les Opérateurs AND, OR

Souvent, nous avons besoin de combiner plusieurs conditions. C'est là que les opérateurs AND et OR entrent en jeu.

Trouvons tous les étudiants qui ont 18 ans ET dont les noms commencent par 'A' :

SELECT *
FROM students
WHERE age = 18 AND name LIKE 'A%';

Ou peut-être que nous voulons des étudiants qui ont soit 18 ans OU dont les noms commencent par 'A' :

SELECT *
FROM students
WHERE age = 18 OR name LIKE 'A%';

Vous pouvez combiner ces opérateurs pour créer des conditions complexes :

SELECT *
FROM students
WHERE (age = 18 OR age = 19) AND (name LIKE 'A%' OR name LIKE 'B%');

Cette requête trouvera les étudiants qui ont soit 18 ou 19 ans, ET dont les noms commencent par 'A' ou 'B'.

Voici un tableau récapitulatif des opérateurs que nous avons appris :

Opérateur Description Exemple
= Égal WHERE age = 18
<> ou != Non égal WHERE age <> 18
> Supérieur à WHERE age > 18
< Inférieur à WHERE age < 18
>= Supérieur ou égal WHERE age >= 18
<= Inférieur ou égal WHERE age <= 18
IN Correspond à une valeur dans une liste WHERE age IN (18, 19, 20)
NOT IN Ne correspond pas à une valeur dans une liste WHERE age NOT IN (18, 19, 20)
LIKE Correspondance de motif WHERE name LIKE 'A%'
AND Les deux conditions doivent être vraies WHERE age = 18 AND name LIKE 'A%'
OR L'une ou l'autre condition peut être vraie WHERE age = 18 OR name LIKE 'A%'

Et voilà, les amis ! Vous avez maintenant appris les ficelles de la clause WHERE. Souvenez-vous, la pratique rend parfait. Essayez d'écrire vos propres requêtes, expérimentez avec différentes conditions, et bientôt vous filtrerez les données comme un administrateur de base de données chevronné.

Bonne requête, et puissent vos clauses WHERE toujours trouver ce que vous cherchez !

Credits: Image by storyset