sql >> Database >  >> RDS >> Mysql

WHERE-voorwaarde in MySQL met 16 verschillende queryvoorbeelden

In dit artikel gaan we het hebben over de WHERE clausule en hoe deze te gebruiken in MySQL. Naast SELECT , de reikwijdte van de WHERE clausule bevat de UPDATE en DELETE verklaringen. De WHERE clausule is onmisbaar voor kwaliteitswerk met MySQL-databases. Daarom zal het huidige artikel deze clausule behandelen en de onderscheidende kenmerken ervan diepgaand onderzoeken.

Wanneer we omgaan met MySQL, hebben we in de absolute meerderheid van de gevallen voorwaardelijke clausules nodig voor de SELECT-instructies. Dergelijke clausules bepalen de selectiecriteria, dus we krijgen alleen de gegevens die we nodig hebben.

De MySQL WHERE clausule is de handigste manier om resultaten te filteren. Het is flexibel, waardoor de gebruikers verschillende voorwaarden voor de gegevensselectie kunnen specificeren en verschillende voorwaarden in één verklaring kunnen combineren. Om uw dagelijkse werkroutine nog aangenamer te maken, is het altijd beter om gebruik te maken van MySQL-profilering en query-optimalisatie.

Inhoud

  • MySQL WHERE-syntaxis
  • WHERE gebruiken in MySQL
  • WHERE voorbeeld van een enkele voorwaarde
  • Meerdere WHERE-voorwaarden
  • WAAR EN operator
  • WHERE OR-operator
  • And gebruiken met OR-voorwaarden
  • WAAR TUSSEN operator
  • WHERE LIKE-operator
  • WHERE NOT LIKE voorbeeld
  • WHERE IN-operator
  • WHERE NOT IN voorbeeld
  • WHERE IS NULL-operator
  • WHERE IS NOT NULL voorbeeld
  • WAAR NIET BESTAAT
  • WAAR BESTAAT
  • MySQL WHERE-clausule gebruiken met vergelijkingsoperatoren
  • Samenvatting

MySQL WHERE-syntaxis

Laten we om te beginnen eens nader kijken naar het gebruik van WHERE in de SELECT uitspraak. De basissyntaxis is als volgt:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

SELECT … FROM is de standaardverklaring die bepaalt op welke kolommen en welke tabel we ons richten. De WHERE trefwoord identificeert de gegevensselectiecriteria. Er kan een enkele waarde zijn, het bereik tussen waarden, de subquery en meer dan één voorwaarde.

Automatiseer uw werk met zoekcriteria. Bekijk en bewerk ze visueel op de afzonderlijke tabbladen van onze visual MySQL-querytool waar u uw zoekopdracht tekent. U hoeft de namen van de kolommen niet te typen of complexe regels te onthouden. Selecteer gewoon de benodigde gegevens uit de lijsten en geniet van de resultaten.

WHERE gebruiken in MySQL

MySQL werkt op de volgende manier bij het uitvoeren van de SELECT statement met de WHERE clausule:

  1. Evalueer de FROM clausule om de doeltabel te identificeren.
  2. Ga verder naar de WHERE clausule om de criteria voor gegevensselectie te evalueren.
  3. Controleer de SELECT statement om de kolommen te definiëren die moeten worden opgehaald.

Opmerking :De SELECT statement bevat vaak de ORDER BY clausule die de resultaten in oplopende of aflopende volgorde plaatst. Als dat zo is, zal MySQL het uiteindelijk evalueren.

Het principe van het werk van MySQL WHERE is vergelijkbaar met de IF voorwaarde in programmeertalen. Het vergelijkt de waarden die we leveren met die van de MySQL-doeltabel. Wanneer deze waarden overeenkomen, haalt het RDBMS die records op naar de gebruikers.

Wanneer de voorwaarde voor de WHERE clausule een tekstwaarde is, plaatsen we die tekst tussen enkele aanhalingstekens. Er zijn echter geen aanhalingstekens nodig voor de numerieke waarden.

SELECT first_name, last_name, city 
FROM Readers
WHERE City = ‘Seattle’;

SELECT * 
FROM Readers
WHERE CustomerID = 24;

Verbeter uw scriptvaardigheden met de geavanceerde MySQL-formatter waarmee u uw code kunt verfraaien om deze precies zo te krijgen als u wilt.

Laten we nu eens kijken naar het gebruik van de WHERE clausule. Het gaat om tal van specifieke gevallen. De beste manier om ze te verkennen is door te verwijzen naar een praktische MySQL WHERE voorbeeld voor elk scenario.

WHERE query enkele voorwaarde voorbeeld

Het eenvoudigste scenario om deze clausule te gebruiken is MySQL WHERE met één enkel criterium voor de gegevensselectie. Stel dat een bedrijf de lijst wil ophalen van zijn werknemers die als supportmanagers op de afdeling Customer Care werken:

SELECT 
    last_name, 
    first_name, 
    job_title
FROM
    employees
WHERE
    jobtitle = 'Support';

De zoekopdracht haalt gegevens op van de werknemers tabel en filter de records volgens de waarde in de job_title kolom. Het zou de lijst met alle achternaam en voornamen moeten retourneren van alle werknemers die als ondersteuningsmanagers werken. De uitvoer is hieronder:

achternaam first_name job_title
Fox Maria Ondersteuning
Zwart John Ondersteuning
Johnson Steve Ondersteuning
Hudson Diana Ondersteuning
Williams Katie Ondersteuning
Groen Jake Ondersteuning

Opmerking :werk minder en bereik meer met MySQL-syntaxiscontrole. dbForge Studio voor MySQL is een functierijke IDE die is ontworpen om de ontwikkeling, het onderhoud en het beheer van MySQL- en MariaDB-databases te vergemakkelijken.

Meerdere WHERE-voorwaarden

Het bovenstaande voorbeeld bewijst dat de MySQL WHERE clausule brengt gegevens die overeenkomen met de voorwaarde. In dit geval filterde het al die werknemers met de opgegeven functietitel. Vaak moeten we echter meerdere criteria instellen om de gegevens op te halen. Het is mogelijk - we moeten de MySQL WHERE . toepassen met de specifieke operators – de AND operator en de OR exploitant.

WHERE AND operator

Laten we ons vorige voorbeeld een beetje ingewikkelder maken. We willen de lijst met medewerkers van de afdeling Support, die vorig jaar zijn aangenomen.

Om dat te bereiken, stellen we twee voorwaarden en verenigen ze met de AND logische operator:

SELECT 
    last_name, 
    first_name, 
    job_title,
    hire_year
FROM
    employees
WHERE
    jobtitle = 'Support' AND 
    hire_year = 2021;

De uitvoer:

achternaam first_name job_title hire_year
Fox Maria Ondersteuning 2021
Zwart John Ondersteuning 2021
Johnson Steve Ondersteuning 2021

Het schrijven van code zelf neemt het leeuwendeel van de totale tijd in beslag die u besteedt aan databaseontwikkeling en -beheer. Verdubbel uw codeersnelheid met de verfijnde en geoptimaliseerde MySQL Server-code-editor die wordt geleverd met dbForge Studio voor MySQL.

WHERE OR-operator

De OR . gebruiken logische operator is een andere methode om te werken met verschillende voorwaarden in de MySQL WHERE clausule. Als we deze zoekopdracht indienen, worden gegevens geretourneerd die voldoen aan de criteria die we hebben ingesteld.

Het bedrijf wil de vaste klanten uit twee steden controleren. Daarvoor specificeren we die steden en gebruiken we de OR telefoniste.

SELECT 
    lastName, 
    firstName, 
    city 
FROM
    customers
WHERE
    city = 'Seattle' OR 
    city = 'Bellevue';
achternaam first_name stad
Anderson Maria Seattle
Zwart John Seattle
Thompson Steve Bellevue
Smith Diana Bellevue
Williams Katie Seattle
Peters Jake Seattle

EN gebruiken met OR-voorwaarden

MySQL zorgt voor het combineren van de MySQL WHERE AND OR – beide logische operatoren kunnen in een enkele instructie aanwezig zijn. In dit geval controleert MySQL drie voorwaarden tegelijk.

Zo wil de bibliotheek informatie krijgen over haar lezers die in Bellevue wonen, die in 2021 vaste lezers van de bibliotheek werden of meer dan 20 boeken hebben gelezen.

In dit geval is de MySQL WHERE string wordt complexer. AND passend maken en organiseren &OR voorwaarden, gebruiken we de haakjes om te bepalen hoe MySQL ze moet evalueren.

Bekijk het onderstaande voorbeeld:

SELECT *
FROM readers
WHERE (city = 'Bellevue' AND reg_year = '2020')
OR (books_read > 20);

De uitvoer:

achternaam first_name stad reg_year books_read
Anderson Maria Seattle 2021 25
Jones Chris Bellevue 2020 12
Thompson Lora Seattle 2020 35
Farrell Brian Bellevue 2021 48
Smith Jeff Bellevue 2020 50
Peters Anna Bellevue 2020 10
Patterson John Bellevue 2020 11

Deze output toont enkele resultaten die overeenkomen met de staat van de woonplaats + jaar van inschrijving. Het bevat ook resultaten die voldoen aan de tweede voorwaarde om meer dan 20 boeken te hebben gelezen.

WAAR TUSSEN operator

Met de BETWEEN-operator kunnen bredere limieten worden ingesteld. Stel dat de bibliotheek de lijst wil krijgen van haar lezers die lid zijn geworden in 2019, 2020 en 2021. In plaats van meerdere zoekopdrachten in te dienen of de AND te gebruiken operator, kunnen we het bereik instellen voor de WHERE voorwaarde met behulp van de BETWEEN exploitant.

Om de lijst van lezers op te halen die tussen 2019 en 2022 zijn toegetreden, stellen we de volgende vraag:

SELECT 
    last_Name, 
    first_Name, 
    reg_year
FROM
    readers
WHERE
    reg_year BETWEEN 2019 AND 2021
ORDER BY reg_year;

De uitvoer:

achternaam first_name reg_year
Anderson Maria 2019
Jones Chris 2019
Thompson Lora 2019
Farrell Brian 2019
Smith Jeff 2020
Peters Anna 2020
Patterson John 2020
Williams Markeren 2021
Hiks Andrew 2021
Grant Valentina 2021

WHERE LIKE-operator

Door de LIKE-operator toe te passen, kunt u de WHERE-component gebruiken om bepaalde records te selecteren die een specifiek patroon bevatten. Om dat patroon te definiëren, gebruiken we het procentteken (%) om een ​​teken of een reeks van meerdere tekens van elke lengte te vervangen.

De meest voorkomende patronen voor MySQL SELECT WHERE LIKE zijn de volgende:

WHERE waarde LIKE 'abc% ‘ – vindt en retourneert alle waarden die beginnen met “abc”

WHERE waarde LIKE '%abc' – vindt en retourneert alle waarden die eindigen op “abc”

WHERE waarde LIKE '%abc%' - vindt en retourneert waarden met "abc" ergens tussen het begin en het einde

Laten we eens kijken naar de WHERE LIKE voorbeeld. Het bedrijf wil de lijst van zijn klanten uit de VS en het VK krijgen. De vraag is als volgt:

SELECT ContactName, Country, City
FROM Customers
WHERE Country LIKE 'U%'
ORDER BY ContactName;

De uitvoer is:

ContactNaam Land Stad
Helen Bennett VK Koeien
Simon Crowther VK Londen
Hari Kumar VK Londen
Howard Snyder VS Eugene
Yoshi Latimer VS Elgin
John Steel VS Walla Walla
Jaime Torres VS San Francisco
Fran Wilson VS Portland

WHERE NOT LIKE voorbeeld

Er is nog een geval waarin u bepaalde gegevens van de resultaten moet uitsluiten. We kunnen de MySQL gebruiken WHERE NOT LIKE exploitant. Het vindt en retourneert de gegevens die geen specifieke tekens hebben.

Het bedrijf wil een lijst van zijn klanten uit alle landen behalve het VK en de VS. De syntaxis van WHERE NOT LIKE in MySQL ziet er als volgt uit:

SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT LIKE 'U%'
ORDER BY Country;

De uitvoer:

ContactNaam Land Stad
Roland Mendel Oostenrijk Graz
Georg Pipps Oostenrijk Salzburg
Catherine Dewey België Brussel
Pascale Cartrain België Charleroi
Elizabeth Lincoln Canada Tsawassen
Yoshi Tannamuri Canada Vancouver
Jean Fresnière Canada Montréal
Jytte Petersen Denemarken København
Palle Ibsen Denemarken Århus
Pirkko Koskitalo Finland Oulu
Matti Karttunen Finland Helsinki
Annette Roulet Frankrijk Toulouse
Marie Bertrand Frankrijk Parijs
Maria Anders Duitsland Berlijn
Hanna Mooss Duitsland Mannheim

WHERE IN-operator

De IN . gebruiken en NOT IN trefwoorden is een andere optie om de rijen te filteren en slechts een deel van de gegevens op te halen dat aan onze strikte criteria voldoet. Het primaire doel is om het aantal OR . te verminderen clausules in één SELECT uitspraak.

MySQL WHERE IN doet een beroep op de rijen die de waarden bevatten die we hebben opgegeven voor de WHERE voorwaarde. We willen bijvoorbeeld de lijst van klanten opvragen die in meerdere Europese landen wonen. De WHERE IN syntaxis is als volgt in MySQL:

SELECT ContactName, Country, City
FROM Customers
WHERE Country IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;

Houd er rekening mee dat we onze waarden die de zoekvoorwaarde specificeren tussen haakjes plaatsen. Als we met tekstwaarden werken, moeten we ze allemaal tussen enkele aanhalingstekens plaatsen. Als onze waarden en numeriek zijn, zullen we ze echter zonder enkele aanhalingstekens vermelden, bijvoorbeeld (25, 35, 45).

De uitvoer van de bovenstaande MySQL WHERE IN clausule in de SELECT verklaring is:

ContactNaam Land Stad
Catherine Dewey België Brussel
Pascale Cartrain België Charleroi
Frédérique Citeaux Frankrijk Straatsburg
Laurence Lebihans Frankrijk Marseille
Janine Labrune Frankrijk Nantes
Martine Rancé Frankrijk Lille
Alexander Feuer Duitsland Leipzig
Henriette Pfalzheim Duitsland Köln
Horst Kloss Duitsland Cunewalde
Karin Josephs Duitsland Münster
Rita Müller Duitsland Stuttgart
Thomas Hardy VK Londen
Victoria Ashworth VK Londen
Elizabeth Brown VK Manchester
Ann Devon VK Londen

WHERE NOT IN voorbeeld

Het tegenovergestelde geval is MySQL WHERE NOT IN clausule. Het wordt gebruikt om ervoor te zorgen dat uw query de rijen negeert die de waarden bevatten die voor de voorwaarde zijn opgegeven. In bovenstaand voorbeeld vroegen we klanten uit de 4 definitieve Europese landen. De MySQL WHERE NOT IN SELECT zoekopdracht voor hetzelfde verzoek retourneert alle klanten die in andere landen wonen, behalve de 4 die eerder zijn gedefinieerd.

SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;

De uitvoer:

ContactNaam Land Stad
Patricio Simpson Argentinië Buenos Aires
Sergio Gutiérrez Argentinië Buenos Aires
Brian Citeaux Canada Montréal
Laura Smith Canada Toronto
Jane Groen Canada Toronto
Martine Rancé Canada Vancouver
Alexander Feuer Canada Århus
Paolo Accorti Italië Rome
Giovanni Rovelli Italië Turijn
Anna Moroni Italië Pavia

Opmerking :We raden aan om [NOT] EXISTS te gebruiken over [NOT] IN sinds de EXISTS logische operator werkt sneller dan IN , bij het vergelijken van gegevenssets met behulp van een subquery. Bovendien bestaat NOT EXISTS voorkomt onverwachte resultaten wanneer de brongegevens NULL bevatten waarden.

WHERE IS NULL-operator

Om te controleren of een waarde NULL is of niet, gebruik de IS NULL exploitant. De volgende instructie gebruikt de WHERE clausule met de IS NULL operator om de rijen zonder waarde in de books_read . te krijgen kolom:

SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NULL;

De uitvoer ziet er als volgt uit:

achternaam first_name reg_year books_read
Janett Overacker 2020 NULL
Lidia Swenson 2017 NULL
Albert Crepeau 2018 NULL
Anastasia Johnson 2021 NULL
Zal Smith 2017 NULL

WHERE IS NOT NULL voorbeeld

In tegenstelling tot het vorige commando, WHERE IS NOT NULL , integendeel, toont alleen die rijen die een soort waarde in de betreffende kolom bevatten. In het volgende voorbeeld gaan we alleen die rijen selecteren waar de books_read kolom is niet leeg:

SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NOT NULL;

In de uitvoer ziet u alleen die rijen die een waarde bevatten in de books_read kolom:

achternaam first_name reg_year books_read
Cory Baster 2021 8
Maddison 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 exploitant. 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

Samenvatting

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

  1. MySQL relationele databases gebruiken op Fedora 12

  2. Hoe maak ik een nieuwe database aan na de eerste installatie van Oracle database 11g Express Edition?

  3. SQL-querykolom bestaat niet fout

  4. Verbroken UTF-8-codering repareren