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

Table des matières:

Anonim

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

La clause WHERE dans MySQL est un mot-clé utilisé pour spécifier les critères exacts des données ou des lignes qui seront affectés 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 des données à partir d'une base de données à l'aide de l'instruction SELECT dans le didacticiel précédent. L'instruction SELECT a renvoyé tous les résultats de la table de base de données interrogée.

Cependant, ce sont des moments où nous voulons limiter 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

Syntaxe de la clause WHERE

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

SELECT * FROM tableName WHERE condition;

ICI

  • "SELECT * FROM tableName" est l'instruction SELECT standard
  • "WHERE" est le mot clé qui restreint notre jeu 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 voulions obtenir les détails personnels 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;

L'exécution du script ci-dessus dans MySQL workbench sur le "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 This email address is being protected from spambots. You need JavaScript enabled to view it.

Clause WHERE combinée avec - AND LOGICAL Operator

La condition WHERE dans MySQL lorsqu'elle est utilisée avec l'opérateur logique AND, n'est exécutée que si TOUS les critères de filtre spécifiés sont satisfaits. Regardons maintenant un exemple pratique - Supposons que nous voulions obtenir une liste de tous les films de la 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;

L'exécution du script ci-dessus dans MySQL workbench sur "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 - Opérateur OR LOGICAL

La clause WHERE, lorsqu'elle est utilisée avec l'opérateur OR, n'est exécutée que si l'un ou la totalité des critères de filtre spécifiés est satisfait. 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;

L'exécution du script ci-dessus dans MySQL workbench sur "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 le mot-clé - IN

La clause WHERE dans MySQL, lorsqu'elle est utilisée avec le mot clé IN affecte uniquement les lignes dont les valeurs correspondent à la liste de valeurs fournie dans le mot clé IN. L'instruction MySQL IN permet de réduire le nombre de clauses OR que vous devrez peut-être utiliser. La requête MySQL WHERE IN suivante donne des lignes où numéro_appartenance est 1, 2 ou 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

L'exécution du script ci-dessus dans MySQL workbench sur "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 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 This email address is being protected from spambots. You need JavaScript enabled to view it.

Clause WHERE combinée avec le mot clé - NOT IN

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ù numéro_appartenance n'est PAS 1, 2 ou 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

L'exécution du script ci-dessus dans MySQL workbench sur "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 - Opérateurs COMPARAISON

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

= Égal à

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

L'exécution du script ci-dessus dans MySQL workbench sur "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 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> Supérieur à

Le script suivant récupère tous les paiements supérieurs à 2 000 de la table des paiements. SELECT * FROM `payments` WHERE` amount_paid`> 2000; L'exécution du script ci-dessus dans MySQL workbench sur "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

<> Pas égal à

Le script suivant récupère tous les films dont l'ID de catégorie n'est pas 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
L'exécution du script ci-dessus dans MySQL workbench sur "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 une requête SELECT, UPDATE ou DELETE.
  • La condition WHERE en SQL peut être utilisée en conjonction avec des opérateurs logiques tels que AND et OR, des opérateurs de comparaison tels que, = etc.
  • Lorsqu'il est utilisé avec l'opérateur logique AND, tous les critères doivent être remplis.
  • Lorsqu'il est utilisé avec l'opérateur logique OR, l'un des critères doit être satisfait.
  • Le mot clé IN permet de sélectionner des lignes correspondant à une liste de valeurs.

Brain Teaser Supposons que nous souhaitons obtenir une liste des films loués qui n'ont pas été rendus à 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;
L'exécution du script ci-dessus dans MySQL workbench 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