Mysql
 sql >> Base de données >  >> RDS >> Mysql

Condition WHERE dans MySQL avec 16 exemples de requêtes différents

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 :

  1. Évaluer le FROM clause pour identifier la table cible.
  2. Allez à WHERE clause pour évaluer les critères de sélection des données.
  3. 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