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:
- Evalueer de
FROM
clausule om de doeltabel te identificeren. - Ga verder naar de
WHERE
clausule om de criteria voor gegevensselectie te evalueren. - 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