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.
![](https://cdn.css-code.org/1477817/mysql_where_clause_and-_or-_in-_not_in_query_example.png.webp)
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 | |
---|---|---|---|---|---|---|---|
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 2SELECT * 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 3SELECT * 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 | |
---|---|---|---|---|---|---|---|
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 3SELECT * 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 | |
---|---|---|---|---|---|---|---|
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 | |
---|---|---|---|---|---|---|---|
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 |