MySQL Clause WHERE : AND, OR, IN, NOT IN Exemple de requête

Qu'est-ce que la clause WHERE dans MySQL?

clause WHERE in MySQL est un mot clé utilisé pour spécifier les critères exacts des données ou des lignes qui seront affectées par l'instruction SQL spécifiée. La clause WHERE peut être utilisée avec des instructions SQL telles que INSERT, UPDATE, SELECT et DELETE pour filtrer les enregistrements et effectuer diverses opérations sur les données.

Nous avons examiné comment interroger les données d'un base de données en utilisant l'instruction SELECT du didacticiel précédent. L'instruction SELECT a renvoyé tous les résultats de la table de base de données interrogée.

Il arrive cependant que nous souhaitions restreindre les résultats de la requête à une condition spécifiée. La clause WHERE dans SQL est utile dans de telles situations.

clause WHERE dans MySQL
clause WHERE dans MySQL

Syntaxe de la clause WHERE

La syntaxe de base de la clause WHERE lorsqu'elle est utilisée dans un MySQL L'instruction SELECT WHERE est la suivante.

SELECT * FROM tableName WHERE condition;

ICI

  • « SELECT * FROM nom_table » est la norme Instruction SELECT
  • "OÙ" est le mot-clé qui restreint notre ensemble de résultats de requête de sélection et "condition" est le filtre à appliquer sur les résultats. Le filtre peut être une plage, une valeur unique ou une sous-requête.

Regardons maintenant un exemple pratique.

Supposons que nous souhaitions obtenir les informations personnelles d'un membre à partir de la table des membres en fonction du numéro de membre 1, nous utiliserions le script suivant pour y parvenir.

SELECT * FROM `members` WHERE `membership_number` = 1;

Exécuter le script ci-dessus dans MySQL établi sur « myflixdb » produirait les résultats suivants.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm

Clause WHERE combinée avec – ET LOGIQUE Operator

La condition OÙ dans MySQL lorsqu'il est utilisé avec l'opérateur logique AND, il n'est exécuté que si TOUS les critères de filtre spécifiés sont remplis.

Regardons maintenant un exemple pratique – Supposons que nous souhaitions obtenir une liste de tous les films de catégorie 2 sortis en 2008, nous utiliserions le script ci-dessous pour y parvenir.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Exécuter le script ci-dessus dans MySQL L'établi contre « myflixdb » produit les résultats suivants.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Clause WHERE combinée avec – OR LOGIQUE Operator

La clause WHERE, lorsqu'elle est utilisée avec l'opérateur OR, n'est exécutée que si l'un ou l'ensemble des critères de filtre spécifiés est rempli.
Le script suivant récupère tous les films de la catégorie 1 ou de la catégorie 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Exécuter le script ci-dessus dans MySQL L'établi contre « myflixdb » produit les résultats suivants.
movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Clause WHERE combinée avec – IN Mots-clés

Le OÙ dans MySQL La clause, lorsqu'elle est utilisée avec le mot clé IN, n'affecte que les lignes dont les valeurs correspondent à la liste de valeurs fournie dans le mot clé IN. Le MySQL L'instruction IN permet de réduire le nombre de clauses OR que vous pourriez devoir utiliser.
MySQL La requête WHERE IN donne des lignes où member_number est soit 1 , 2 ou 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Exécuter le script ci-dessus dans MySQL L'établi contre « myflixdb » produit les résultats suivants.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com

Clause WHERE combinée avec – PAS DANS Mots-clés

La clause WHERE, lorsqu'elle est utilisée avec le mot clé NOT IN, n'affecte PAS les lignes dont les valeurs correspondent à la liste de valeurs fournie dans le mot clé NOT IN.
La requête suivante donne des lignes où member_number n'est PAS 1 , 2 ou 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Exécuter le script ci-dessus dans MySQL L'établi contre « myflixdb » produit les résultats suivants.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

Clause WHERE combinée avec – COMPARAISON Operajeudi

Les opérateurs de comparaison inférieur à (), égal à (=), différent de () peuvent être utilisés avec la clause WHERE

= Égal à

Le script suivant récupère toutes les membres féminines de la table des membres en utilisant l'opérateur de comparaison égal à.
SELECT * FROM `members` WHERE `gender` = 'Female';

Exécuter le script ci-dessus dans MySQL L'établi contre « myflixdb » produit les résultats suivants.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> Supérieure à

Le script suivant extrait tous les paiements supérieurs à 2,000  du tableau des paiements.
SELECT * FROM `paiements` WHERE `amount_paid` > 2000 ;
Exécuter le script ci-dessus dans MySQL L'établi contre « myflixdb » produit les résultats suivants.
payment_id membership_number payment_date description amount_paid external_reference_number
1 1 23-07-2012 Movie rental payment 2500 11
3 3 30-07-2012 Movie rental payment 6000 NULL

< > Différent de

Le script suivant récupère tous les films dont l'identifiant de catégorie n'est pas 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Exécuter le script ci-dessus dans MySQL L'établi contre « myflixdb » produit les résultats suivants.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8

Résumé

  • La clause SQL WHERE est utilisée pour limiter le nombre de lignes affectées par un SELECT, UPDATE ou requête SUPPRIMER.
  • La condition WHERE dans SQL peut être utilisée conjointement avec des opérateurs logiques tels que AND et OR, des opérateurs de comparaison tels que ,= etc.
  • Lorsqu'il est utilisé avec le ET opérateur logique, tous les critères doivent être remplis.
  • Lorsqu'il est utilisé avec l'opérateur logique OU, tous les critères doivent être remplis.
  • Le mot clé IN est utilisé pour sélectionner les lignes correspondant à une liste de valeurs.

Casse-tête

Supposons que nous souhaitions obtenir une liste des films loués qui n'ont pas été restitués à temps le 25/06/2012. Nous pouvons utiliser la clause d'instruction SQL WHERE avec l'opérateur de comparaison inférieur à et l'opérateur logique AND pour y parvenir.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

Exécuter le script ci-dessus dans MySQL L'établi donne les résultats suivants.

reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0