Dans cet article, nous allons parler du WHERE
clause et comment l'utiliser dans MySQL. Outre SELECT
, la portée de WHERE
la clause inclut le UPDATE
et DELETE
déclarations. Le WHERE
clause est indispensable pour un travail de qualité avec les bases de données MySQL. C'est pourquoi le présent article traitera de cette clause et explorera en profondeur ses caractéristiques distinctives.
Lorsque nous traitons avec MySQL, nous avons besoin de clauses conditionnelles pour les instructions SELECT dans la majorité absolue des cas. Ces clauses déterminent les critères de sélection, nous n'obtenons donc que les données dont nous avons besoin.
Le MySQL WHERE
La clause est le moyen le plus pratique de filtrer les résultats. Il est flexible, permettant aux utilisateurs de spécifier diverses conditions pour la sélection des données et de combiner plusieurs conditions dans une seule déclaration. Afin de rendre votre routine de travail quotidienne encore plus agréable, il est toujours préférable de recourir au profilage MySQL et à l'optimisation des requêtes.
Contenu
- Syntaxe MySQL WHERE
- Utiliser WHERE dans MySQL
- Exemple de condition unique de requête WHERE
- Plusieurs conditions WHERE
- Opérateur WHERE AND
- Opérateur WHERE OR
- Utiliser AND avec des conditions OR
- Opérateur WHERE BETWEEN
- Opérateur WHERE LIKE
- Exemple WHERE NOT LIKE
- Opérateur WHERE IN
- Exemple WHERE NOT IN
- Opérateur WHERE IS NULL
- Exemple de WHERE IS NOT NULL
- OÙ N'EXISTE PAS
- OÙ EXISTE
- Utilisation de la clause MySQL WHERE avec des opérateurs de comparaison
- Résumé
Syntaxe MySQL WHERE
Pour commencer, examinons de plus près l'utilisation de WHERE
dans le SELECT
déclaration. La syntaxe de base est la suivante :
SELECT column1, column2, ...
FROM table_name
WHERE condition;
SELECT … FROM
est la déclaration standard définissant quelles colonnes et quelle table nous ciblons. Le WHERE
mot-clé identifie les critères de sélection des données. Il peut y avoir une seule valeur, la plage entre les valeurs, la sous-requête et plusieurs conditions.
Automatisez votre travail avec des critères de requête. Visualisez-les et modifiez-les visuellement sur les onglets séparés de notre visuel Outil de requête MySQL où vous dessinez votre requête. Vous n'avez pas besoin de taper les noms des colonnes ou de vous souvenir de règles complexes. Sélectionnez simplement les données requises dans les listes et profitez des résultats.
Utiliser WHERE dans MySQL
MySQL fonctionne de la manière suivante lors de l'exécution du SELECT
instruction contenant le WHERE
clause :
- Évaluer le
FROM
clause pour identifier la table cible. - Allez à
WHERE
clause pour évaluer les critères de sélection des données. - Vérifiez le
SELECT
pour définir les colonnes à récupérer.
Remarque :Le SELECT
l'instruction inclut souvent le ORDER BY
clause qui place les résultats dans l'ordre croissant ou décroissant. Si c'est le cas, MySQL l'évaluera à la fin.
Le principe de travail de MySQL WHERE
est similaire au IF
condition dans les langages de programmation. Il compare les valeurs que nous fournissons avec celles de la table MySQL cible. Lorsque ces valeurs correspondent, le RDBMS récupère ces enregistrements pour les utilisateurs.
Lorsque la condition pour le WHERE
clause est une valeur de texte, nous mettons ce texte entre guillemets simples. Cependant, aucun guillemet n'est nécessaire pour les valeurs numériques.
SELECT first_name, last_name, city
FROM Readers
WHERE City = ‘Seattle’;
SELECT *
FROM Readers
WHERE CustomerID = 24;
Améliorez vos capacités de script avec le formateur MySQL avancé qui permet d'embellir votre code pour l'obtenir exactement comme vous l'aimez.
Passons maintenant en revue l'utilisation de WHERE
clause. Il s'agit de nombreux cas particuliers. La meilleure façon de les explorer est de se référer à un pratique MySQL WHERE
exemple pour chaque scénario.
Exemple de condition unique de requête WHERE
Le scénario le plus simple d'utilisation de cette clause est MySQL WHERE
ayant un seul critère pour la sélection des données. Supposons qu'une entreprise souhaite récupérer la liste de ses employés travaillant dans le service client en tant que responsables de support :
SELECT
last_name,
first_name,
job_title
FROM
employees
WHERE
jobtitle = 'Support';
La requête récupérera les données des employés table et filtrer les enregistrements en fonction de la valeur dans le job_title colonne. Il doit renvoyer la liste de tous les noms et prénoms de tous les employés qui travaillent en tant que responsables de support. La sortie est ci-dessous :
nom_de_famille | first_name | job_title |
Renard | Marie | Assistance |
Noir | Jean | Assistance |
Johnson | Steve | Assistance |
Hudson | Diane | Assistance |
Williams | Katie | Assistance |
Vert | Jake | Assistance |
Remarque :Codez moins et accomplissez plus avec le vérificateur de syntaxe MySQL. dbForge Studio for MySQL est un IDE riche en fonctionnalités conçu pour faciliter le développement, la maintenance et l'administration des bases de données MySQL et MariaDB.
Plusieurs conditions WHERE
L'exemple fourni ci-dessus prouve que MySQL WHERE
clause apporte des données qui correspondent à la condition. Dans ce cas, il a filtré tous les employés ayant le titre de poste spécifié. Cependant, nous devons souvent définir plusieurs critères pour récupérer les données. C'est faisable - nous devons appliquer le MySQL WHERE
avec les opérateurs spécifiques - le AND
opérateur et le OR
opérateur.
Opérateur OÙ ET
Rendons notre exemple précédent un peu plus compliqué. Nous voulons la liste des employés travaillant dans le département Support, embauchés l'année dernière.
Pour ce faire, nous allons définir deux conditions et les unir avec le AND
opérateur logique :
SELECT
last_name,
first_name,
job_title,
hire_year
FROM
employees
WHERE
jobtitle = 'Support' AND
hire_year = 2021;
La sortie :
nom_de_famille | first_name | job_title | embauche_année |
Renard | Marie | Assistance | 2021 |
Noir | Jean | Assistance | 2021 |
Johnson | Steve | Assistance | 2021 |
L'écriture de code elle-même prend la part du lion du temps total que vous consacrez au développement et à l'administration de la base de données. Doublez votre vitesse de codage avec l'éditeur de code raffiné et optimisé du serveur MySQL fourni avec dbForge Studio pour MySQL.
Opérateur WHERE OR
Utilisation du OR
l'opérateur logique est une autre méthode de travail avec plusieurs conditions dans MySQL WHERE
clause. Si nous soumettons cette requête, elle renverra des données correspondant aux critères que nous avons définis.
L'entreprise veut contrôler les clients réguliers venant de deux villes. Pour cela, nous allons spécifier ces villes et utiliser le OR
opérateur.
SELECT
lastName,
firstName,
city
FROM
customers
WHERE
city = 'Seattle' OR
city = 'Bellevue';
nom_de_famille | first_name | ville |
Anderson | Marie | Seattle |
Noir | Jean | Seattle |
Thompson | Steve | Bellevue |
Smith | Diane | Bellevue |
Williams | Katie | Seattle |
Pierre | Jake | Seattle |
Utiliser AND avec des conditions OR
MySQL permet de combiner MySQL WHERE AND OR
– les deux opérateurs logiques peuvent être présents dans une même instruction. Dans ce cas, MySQL vérifiera trois conditions à la fois.
Par exemple, la bibliothèque souhaite obtenir des informations sur ses lecteurs résidant à Bellevue, qui sont devenus des lecteurs réguliers de la bibliothèque en 2021 ou ont lu plus de 20 livres.
Dans ce cas, MySQL WHERE
chaîne devient plus complexe. Pour adapter et organiser AND
&OR
conditions, nous utilisons les parenthèses pour déterminer comment MySQL doit les évaluer.
Regardez l'exemple ci-dessous :
SELECT *
FROM readers
WHERE (city = 'Bellevue' AND reg_year = '2020')
OR (books_read > 20);
La sortie :
nom_de_famille | first_name | ville | reg_year | livres_read |
Anderson | Marie | Seattle | 2021 | 25 |
Jones | Chris | Bellevue | 2020 | 12 |
Thompson | Lora | Seattle | 2020 | 35 |
Farrell | Brian | Bellevue | 2021 | 48 |
Smith | Jeff | Bellevue | 2020 | 50 |
Pierre | Anna | Bellevue | 2020 | 10 |
Patterson | Jean | Bellevue | 2020 | 11 |
Cette sortie montre des résultats correspondant à l'état de la ville de résidence + année d'inscription. Il inclut également les résultats correspondant à la deuxième condition d'avoir lu plus de 20 livres.
Opérateur WHERE BETWEEN
L'opérateur BETWEEN permet de définir des limites plus larges. Supposons que la bibliothèque souhaite obtenir la liste de ses lecteurs qui se sont inscrits en 2019, 2020 et 2021. Au lieu de soumettre plusieurs requêtes ou d'utiliser le AND
opérateur, nous pouvons définir la plage pour le WHERE
condition en utilisant BETWEEN
opérateur.
Pour récupérer la liste des lecteurs inscrits entre 2019 et 2022, nous soumettons la requête suivante :
SELECT
last_Name,
first_Name,
reg_year
FROM
readers
WHERE
reg_year BETWEEN 2019 AND 2021
ORDER BY reg_year;
La sortie :
nom_de_famille | first_name | reg_year |
Anderson | Marie | 2019 |
Jones | Chris | 2019 |
Thompson | Lora | 2019 |
Farrell | Brian | 2019 |
Smith | Jeff | 2020 |
Pierre | Anna | 2020 |
Patterson | Jean | 2020 |
Williams | Marquer | 2021 |
Randonnées | André | 2021 |
Accorder | Valentina | 2021 |
Opérateur WHERE LIKE
L'application de l'opérateur LIKE vous permet d'utiliser la clause WHERE pour sélectionner certains enregistrements qui incluent un modèle spécifique. Pour définir ce modèle, nous utilisons le signe pourcentage (%) pour remplacer un caractère ou une chaîne de plusieurs caractères de n'importe quelle longueur.
Les modèles les plus courants pour MySQL SELECT WHERE LIKE
sont les suivants :
WHERE
valeur LIKE 'abc%
‘ – trouve et renvoie toutes les valeurs commençant par « abc »
WHERE
valeur LIKE '%abc'
– trouve et renvoie toutes les valeurs se terminant par « abc »
WHERE
valeur LIKE '%abc%'
– trouve et renvoie les valeurs ayant "abc" n'importe où entre le début et la fin
Jetons un coup d'œil au WHERE LIKE
Exemple. La société souhaite obtenir la liste de ses clients des États-Unis et du Royaume-Uni. La requête est la suivante :
SELECT ContactName, Country, City
FROM Customers
WHERE Country LIKE 'U%'
ORDER BY ContactName;
La sortie est :
NomContact | Pays | Ville |
Helen Bennett | Royaume-Uni | Cowes |
Simon Crowther | Royaume-Uni | Londres |
Hari Kumar | Royaume-Uni | Londres |
Howard Snyder | États-Unis | Eugène |
Yoshi Latimer | États-Unis | Elgin |
John Steel | États-Unis | Walla Walla |
Jaime Torres | États-Unis | San Francisco |
Fran Wilson | États-Unis | Portland |
exemple de WHERE NOT LIKE
Il existe un autre cas où vous devez exclure certaines données des résultats. Nous pouvons utiliser MySQL WHERE NOT LIKE
opérateur. Il trouve et renvoie les données qui n'ont pas de caractères spécifiques.
L'entreprise veut une liste de ses clients de tous les pays, à l'exception du Royaume-Uni et des États-Unis. La syntaxe de WHERE NOT LIKE
dans MySQL ressemblera à ceci :
SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT LIKE 'U%'
ORDER BY Country;
La sortie :
NomContact | Pays | Ville |
Roland Mendel | Autriche | Graz |
Georg Pipps | Autriche | Salzbourg |
Catherine Dewey | Belgique | Bruxelles |
Pascale Cartrain | Belgique | Charleroi |
Elizabeth Lincoln | Canada | Tsawassen |
Yoshi Tannamuri | Canada | Vancouver |
Jean Fresnière | Canada | Montréal |
Jytte Petersen | Danemark | København |
Palle Ibsen | Danemark | Århus |
Pirkko Koskitalo | Finlande | Oulu |
Matti Kartunen | Finlande | Helsinki |
Annette Roulet | France | Toulouse |
Marie Bertrand | France | Paris |
Maria Anders | Allemagne | Berlin |
Hanna Mooss | Allemagne | Mannheim |
Opérateur WHERE IN
Utilisation du IN
et NOT IN
keywords est une autre option pour filtrer les lignes et récupérer uniquement une partie des données qui correspondent à nos critères stricts. L'objectif principal est de réduire le nombre de OR
clauses dans un SELECT
déclaration.
MySQL WHERE IN
fait appel aux lignes contenant les valeurs que nous avons spécifiées pour le WHERE
état. Par exemple, nous voulons récupérer la liste des clients qui résident dans plusieurs pays européens. Le WHERE IN
la syntaxe est la suivante dans MySQL :
SELECT ContactName, Country, City
FROM Customers
WHERE Country IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;
Veuillez noter que nous plaçons nos valeurs qui spécifient la condition de recherche entre parenthèses. Dans le cas de travailler avec des valeurs textuelles, nous devons toutes les mettre entre guillemets simples. Cependant, si nos valeurs sont numériques, nous les énumérerons sans guillemets simples, par exemple (25, 35, 45).
La sortie de MySQL WHERE IN
ci-dessus clause dans le SELECT
déclaration est :
NomContact | Pays | Ville |
Catherine Dewey | Belgique | Bruxelles |
Pascale Cartrain | Belgique | Charleroi |
Frédérique Cîteaux | France | Strasbourg |
Laurence Lebihans | France | Marseille |
Janine Labrune | France | Nantes |
Martine Rancé | France | Lille |
Alexandre Feuer | Allemagne | Leipzig |
Henriette Pfalzheim | Allemagne | Cologne |
Horst Kloss | Allemagne | Cunewalde |
Karin Josephs | Allemagne | Münster |
Rita Müller | Allemagne | Stuttgart |
Thomas Hardy | Royaume-Uni | Londres |
Victoria Ashworth | Royaume-Uni | Londres |
Elizabeth Brown | Royaume-Uni | Manchester |
Ann Devon | Royaume-Uni | Londres |
WHERE NOT IN exemple
Le cas contraire est MySQL WHERE NOT IN
clause. Il est utilisé pour s'assurer que votre requête ignorera les lignes contenant les valeurs spécifiées pour la condition. Dans l'exemple ci-dessus, nous avons demandé des clients des 4 pays européens définis. MySQL WHERE NOT IN
SELECT
requête pour la même requête renverra tous les clients résidant dans d'autres pays à l'exception des 4 définis précédemment.
SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;
La sortie :
NomContact | Pays | Ville |
Patricio Simpson | Argentine | Buenos Aires |
Sergio Gutierrez | Argentine | Buenos Aires |
Brian Cîteaux | Canada | Montréal |
Laura Smith | Canada | Toronto |
Jane Green | Canada | Toronto |
Martine Rancé | Canada | Vancouver |
Alexandre Feuer | Canada | Århus |
Paolo Accorti | Italie | Rome |
Giovanni Rovelli | Italie | Turin |
Anna Moroni | Italie | Pavie |
Remarque :Nous vous recommandons d'utiliser [NOT] EXISTS
sur [NOT] IN
depuis le EXISTS
l'opérateur logique fonctionne plus vite que IN
, lors de la comparaison d'ensembles de données à l'aide d'une sous-requête. De plus, NOT EXISTS
évitera des résultats inattendus lorsque les données source contiennent NULL
valeurs.
Où EST l'opérateur NULL
Pour vérifier si une valeur est NULL
ou non, utilisez le IS NULL
opérateur. L'instruction suivante utilise le WHERE
clause avec le IS NULL
opérateur pour obtenir les lignes sans valeur dans le books_read
colonne :
SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NULL;
La sortie ressemblera à ceci :
nom_de_famille | first_name | reg_year | livres_read |
Jeannette | Overacker | 2020 | NULL |
Lidia | Swenson | 2017 | NULL |
Albert | Crépeau | 2018 | NULL |
Anastasia | Johnson | 2021 | NULL |
Va | Smith | 2017 | NULL |
WHERE IS NOT NULL example
Contrairement à la commande précédente, WHERE IS NOT NULL
, au contraire, affiche uniquement les lignes qui contiennent une sorte de valeur dans la colonne en question. Dans l'exemple suivant, nous allons sélectionner uniquement les lignes où le books_read la colonne n'est pas vide :
SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NOT NULL;
Dans la sortie, vous ne verrez que les lignes contenant une valeur dans books_read colonne :
nom_de_famille | first_name | reg_year | livres_read |
Cory | Baster | 2021 | 8 |
Madison | Winston | 2022 | 3 |
Isabella | Garsia | 2014 | 45 |
Jeremy | Koh | 2022 | 1 |
Aaron | Peterson | 2021 | 15 |
WHERE EXISTS
The EXISTS
operator checks if the subquery returns any value at all. Typically, this operator is used to indicate that at least one row in a table satisfies a certain condition.
In the example below,
SELECT last_name, first_name
FROM customers
WHERE EXISTS
(SELECT * FROM discounts WHERE customers.id = discounts.customer_id)
WHERE NOT EXISTS
However, the NOT EXISTS
operator is there for us in case we want to make sure whether there are rows in the table that do not satisfy a certain condition. For example, let’s find all products from the Products table for which there were no orders in the Orders table:
SELECT last_name, first_name
FROM customers
WHERE NOT EXISTS
(SELECT * FROM discounts WHERE customers.id = discounts.customer_id)
There is a separate article in our blog for those willing to learn more about the difference between EXISTS and NOT EXISTS in SQL.
Using MySQL WHERE clause with comparison operators
As we know, the WHERE
condition value can be any number, text, string, or subquery. Besides specifying the condition strictly, we can set a wider meaning for it by using the comparison operators. One example of a similar function is using the BETWEEN
opérateur. Now, let us review other options to set the condition range.
Operator | Description | Example |
= | Equal to the value. It is applicable for almost any data type. | SELECT * FROM VisitorsWHERE City =’London’; |
<> or != | Not equal to. It excludes the rows matching the value from the results. | SELECT * FROM CustomersWHERE Country=’Germany’ AND City !=’Berlin’; |
< | Less than. Mostly applies to numbers and date/time. | SELECT * FROM CustomersWHERE CustomerID <7; |
> | Greater than. Works in the same way, for numeric values and date/time. | SELECT * FROM CustomersWHERE CustomerID> 10; |
<= | Less than or equal to. The results set includes the rows with the same values or less than the condition value. | SELECT * FROM CustomersWHERE CustomerID <=5; |
>= | Greater than or equal to. The result set includes rows having the same values exceeding the condition values. | SELECT * FROM CustomersWHERE CustomerID>=55; |
In our example, we want to retrieve the list of customers with a customer ID lower than 90 who reside in the USA. The query is the following:
SELECT CustomerID, ContactName, City, Country
FROM Customers
WHERE CustomerID < 90 AND Country ='USA';
The output is:
CustomerID | ContactName | City | Country |
65 | Paula Wilson | Albuquerque | USA |
55 | Rene Phillips | Anchorage | USA |
78 | Liu Wong | Butte | USA |
36 | Yoshi Latimer | Elgin | USA |
32 | Howard Snyder | Eugene | USA |
82 | Helvetius Nagy | Kirkland | USA |
48 | Fran Wilson | Portland | USA |
77 | Liz Nixon | Portland | USA |
45 | Jaime Torres | San Francisco | USA |
89 | Karl Jablonski | Seattle | USA |
55 | Rene Phillips | Anchorage | USA |
Résumé
As you see, MySQL WHERE
is among the most helpful clauses for all MySQL users. The variety of different logical operators lets you focus on the specific portion of data only, filter it correctly, and receive the results you need. Besides, modern professional tools for MySQL databases allow you to perform all tasks faster and easier. They take the burden of manual routines off your shoulders and make the performance much more stable and reliable. To sum up, working with a WHERE
statement is not too complicated. However, it requires being familiar with the corresponding commands. The command-line tools are more oriented toward experienced tech-savvy users. On the contrary, dbForge Studio for MySQL can boast an intuitive graphical interface. The intelligent code completion feature will be of use while working with the WHERE
clause, navigating the code, obtaining quick object information, and instantly performing syntax checks. Moreover, dbForge Query Builder will be of use to easily build WHERE
clauses visually.
Useful Links
- Joins in MySQL
- MySQL update query