In diesem Artikel werden wir über das WHERE
sprechen -Klausel und wie man sie in MySQL verwendet. Neben SELECT
, der Geltungsbereich von WHERE
-Klausel enthält das UPDATE
und DELETE
Aussagen. Das WHERE
-Klausel ist für die Qualitätsarbeit mit MySQL-Datenbanken unverzichtbar. Deshalb wird sich der aktuelle Artikel mit dieser Klausel befassen und ihre Unterscheidungsmerkmale eingehend untersuchen.
Wenn wir uns mit MySQL befassen, brauchen wir in den allermeisten Fällen Bedingungsklauseln für die SELECT-Anweisungen. Solche Klauseln bestimmen die Auswahlkriterien, sodass wir nur die Daten erhalten, die wir benötigen.
Das MySQL-WHERE
-Klausel ist das praktischste Mittel zum Filtern von Ergebnissen. Es ist flexibel und ermöglicht es den Benutzern, verschiedene Bedingungen für die Datenauswahl anzugeben und mehrere Bedingungen in einer Anweisung zu kombinieren. Um Ihren Arbeitsalltag noch angenehmer zu gestalten, ist es immer besser, auf MySQL-Profiling und Abfrageoptimierung zurückzugreifen.
Inhalt
- MySQL WHERE-Syntax
- WHERE in MySQL verwenden
- Beispiel für eine WHERE-Abfrage mit einer einzelnen Bedingung
- Mehrere WHERE-Bedingungen
- WHERE AND-Operator
- WHERE OR-Operator
- Verwendung von UND mit ODER-Bedingungen
- WHERE BETWEEN-Operator
- WHERE LIKE-Operator
- WHERE NOT LIKE-Beispiel
- WHERE IN-Operator
- WHERE NOT IN Beispiel
- WHERE IS NULL-Operator
- WHERE IS NOT NULL-Beispiel
- WO NICHT VORHANDEN
- WO VORHANDEN
- MySQL WHERE-Klausel mit Vergleichsoperatoren verwenden
- Zusammenfassung
MySQL WHERE-Syntax
Lassen Sie uns zunächst einen genaueren Blick auf die Verwendung von WHERE
werfen im SELECT
Erklärung. Die grundlegende Syntax lautet wie folgt:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
SELECT … FROM
ist die Standardanweisung, die definiert, auf welche Spalten und welche Tabelle wir abzielen. Das WHERE
Schlüsselwort identifiziert die Datenauswahlkriterien. Es kann einen einzelnen Wert, den Bereich zwischen Werten, die Unterabfrage und mehr als eine Bedingung geben.
Automatisieren Sie Ihre Arbeit mit Abfragekriterien. Sehen und bearbeiten Sie sie visuell auf den separaten Registerkarten unseres Visuals MySQL-Abfragetool wo Sie Ihre Abfrage zeichnen. Sie müssen die Namen der Spalten nicht eingeben oder sich an komplexe Regeln erinnern. Wählen Sie einfach die gewünschten Daten aus den Listen aus und genießen Sie die Ergebnisse.
WHERE in MySQL verwenden
MySQL arbeitet beim Ausführen von SELECT
folgendermaßen Anweisung, die das WHERE
enthält Klausel:
- Werten Sie den
FROM
aus -Klausel zur Identifizierung der Zieltabelle. - Fahren Sie mit
WHERE
fort Klausel zur Bewertung der Kriterien für die Datenauswahl. - Prüfen Sie
SELECT
-Anweisung zum Definieren der abzurufenden Spalten.
Hinweis :Das SELECT
enthält oft den ORDER BY
Klausel, die die Ergebnisse in aufsteigender oder absteigender Reihenfolge anordnet. Wenn ja, wird MySQL es am Ende auswerten.
Das Arbeitsprinzip von MySQL WHERE
ähnelt dem IF
Bedingung in Programmiersprachen. Es vergleicht die von uns bereitgestellten Werte mit denen der MySQL-Zieltabelle. Wenn diese Werte übereinstimmen, ruft das RDBMS diese Datensätze für die Benutzer ab.
Wenn die Bedingung für WHERE
Klausel ein Textwert ist, setzen wir diesen Text in einfache Anführungszeichen. Für die numerischen Werte sind jedoch keine Anführungszeichen erforderlich.
SELECT first_name, last_name, city
FROM Readers
WHERE City = ‘Seattle’;
SELECT *
FROM Readers
WHERE CustomerID = 24;
Verbessern Sie Ihre Skriptfähigkeiten mit dem fortschrittlichen MySQL-Formatierer, mit dem Sie Ihren Code verschönern können, um ihn genau so zu erhalten, wie Sie ihn möchten.
Lassen Sie uns nun die Verwendung von WHERE
überprüfen Klausel. Es geht um viele Sonderfälle. Der beste Weg, sie zu erkunden, ist, sich auf ein praktisches MySQL WHERE
zu beziehen Beispiel für jedes Szenario.
WHERE-Abfragebeispiel für eine einzelne Bedingung
Das einfachste Szenario zur Verwendung dieser Klausel ist MySQL WHERE
ein einziges Kriterium für die Datenauswahl zu haben. Angenommen, ein Unternehmen möchte die Liste seiner Mitarbeiter abrufen, die in der Kundendienstabteilung als Support-Manager arbeiten:
SELECT
last_name,
first_name,
job_title
FROM
employees
WHERE
jobtitle = 'Support';
Die Abfrage ruft Daten von den Mitarbeitern ab Tabelle und filtern Sie die Datensätze nach dem Wert in job_title Säule. Es sollte die Liste aller Nach- und Vornamen aller Mitarbeiter zurückgeben, die als Support-Manager arbeiten. Die Ausgabe ist unten:
Nachname | Vorname | job_title |
Fuchs | Maria | Unterstützung |
Schwarz | Johannes | Unterstützung |
Johnson | Steve | Unterstützung |
Hudson | Diana | Unterstützung |
Williams | Kati | Unterstützung |
Grün | Jake | Unterstützung |
Hinweis :Weniger codieren und mehr erreichen mit dem MySQL-Syntaxprüfer. dbForge Studio for MySQL ist eine funktionsreiche IDE, die entwickelt wurde, um die Entwicklung, Wartung und Verwaltung von MySQL- und MariaDB-Datenbanken zu erleichtern.
Mehrere WHERE-Bedingungen
Das oben bereitgestellte Beispiel beweist, dass die MySQL WHERE
-Klausel liefert Daten, die der Bedingung entsprechen. In diesem Fall wurden alle Mitarbeiter mit der angegebenen Berufsbezeichnung gefiltert. Allerdings müssen wir oft mehrere Kriterien festlegen, um die Daten abzurufen. Es ist machbar – wir müssen den MySQL WHERE
anwenden mit den spezifischen Operatoren – dem AND
-Operator und das OR
Operator.
WHERE AND-Operator
Machen wir unser vorheriges Beispiel etwas komplizierter. Wir möchten die Liste der Mitarbeiter, die in der Support-Abteilung arbeiten und letztes Jahr eingestellt wurden.
Dazu setzen wir zwei Bedingungen und verbinden sie mit dem AND
Logischer Operator:
SELECT
last_name,
first_name,
job_title,
hire_year
FROM
employees
WHERE
jobtitle = 'Support' AND
hire_year = 2021;
Die Ausgabe:
Nachname | Vorname | job_title | Einstellungsjahr |
Fuchs | Maria | Unterstützung | 2021 |
Schwarz | Johannes | Unterstützung | 2021 |
Johnson | Steve | Unterstützung | 2021 |
Das Schreiben von Code selbst nimmt den Löwenanteil der Gesamtzeit ein, die Sie für die Entwicklung und Verwaltung von Datenbanken aufwenden. Verdoppeln Sie Ihre Programmiergeschwindigkeit mit dem verfeinerten und optimierten MySQL-Server-Code-Editor, der mit dbForge Studio für MySQL geliefert wird.
WHERE OR-Operator
Mit dem OR
Der logische Operator ist eine weitere Methode, um mit mehreren Bedingungen in MySQL WHERE
zu arbeiten Klausel. Wenn wir diese Abfrage senden, werden Daten zurückgegeben, die den von uns festgelegten Kriterien entsprechen.
Das Unternehmen will die Stammkunden prüfen, die aus zwei Städten kommen. Dafür geben wir diese Städte an und verwenden das OR
Betreiber.
SELECT
lastName,
firstName,
city
FROM
customers
WHERE
city = 'Seattle' OR
city = 'Bellevue';
Nachname | Vorname | Stadt |
Anderson | Maria | Seattle |
Schwarz | Johannes | Seattle |
Thompson | Steve | Bellevue |
Schmitt | Diana | Bellevue |
Williams | Kati | Seattle |
Peters | Jake | Seattle |
Verwendung von UND mit ODER-Bedingungen
MySQL ermöglicht die Kombination von MySQL WHERE AND OR
– beide logischen Operatoren können in einer einzigen Anweisung vorhanden sein. In diesem Fall überprüft MySQL drei Bedingungen gleichzeitig.
Beispielsweise möchte die Bibliothek Informationen über ihre im Bellevue wohnhaften Leserinnen und Leser erhalten, die 2021 zu Stammlesern der Bibliothek geworden sind oder mehr als 20 Bücher gelesen haben.
In diesem Fall das MySQL WHERE
Zeichenfolge wird komplexer. Zum Anpassen und Organisieren von AND
&OR
Bedingungen verwenden wir die Klammern, um festzulegen, wie MySQL sie auswerten muss.
Sehen Sie sich das folgende Beispiel an:
SELECT *
FROM readers
WHERE (city = 'Bellevue' AND reg_year = '2020')
OR (books_read > 20);
Die Ausgabe:
Nachname | Vorname | Stadt | reg_year | books_read |
Anderson | Maria | Seattle | 2021 | 25 |
Jones | Chris | Bellevue | 2020 | 12 |
Thompson | Lora | Seattle | 2020 | 35 |
Farrell | Brian | Bellevue | 2021 | 48 |
Schmitt | Jeff | Bellevue | 2020 | 50 |
Peters | Anna | Bellevue | 2020 | 10 |
Patterson | Johannes | Bellevue | 2020 | 11 |
Diese Ausgabe zeigt einige Ergebnisse, die der Bedingung des Wohnorts + Jahr der Registrierung entsprechen. Es enthält auch Ergebnisse, die der zweiten Bedingung entsprechen, mehr als 20 Bücher gelesen zu haben.
WHERE BETWEEN-Operator
Der BETWEEN-Operator ermöglicht das Festlegen breiterer Grenzen. Angenommen, die Bibliothek möchte die Liste ihrer Leser abrufen, die 2019, 2020 und 2021 beigetreten sind. Anstatt mehrere Abfragen zu senden oder das AND
zu verwenden -Operator können wir den Bereich für WHERE
festlegen Bedingung mit dem BETWEEN
Operator.
Um die Liste der Leser abzurufen, die zwischen 2019 und 2022 beigetreten sind, senden wir die folgende Abfrage:
SELECT
last_Name,
first_Name,
reg_year
FROM
readers
WHERE
reg_year BETWEEN 2019 AND 2021
ORDER BY reg_year;
Die Ausgabe:
Nachname | Vorname | reg_year |
Anderson | Maria | 2019 |
Jones | Chris | 2019 |
Thompson | Lora | 2019 |
Farrell | Brian | 2019 |
Schmitt | Jeff | 2020 |
Peters | Anna | 2020 |
Patterson | Johannes | 2020 |
Williams | Markieren | 2021 |
Hiks | Andreas | 2021 |
Erteilen | Valentina | 2021 |
WHERE LIKE-Operator
Durch Anwenden des LIKE-Operators können Sie die WHERE-Klausel verwenden, um bestimmte Datensätze auszuwählen, die ein bestimmtes Muster enthalten. Um dieses Muster zu definieren, verwenden wir das Prozentzeichen (%), um ein Zeichen oder eine Zeichenfolge aus mehreren Zeichen beliebiger Länge zu ersetzen.
Die häufigsten Muster für MySQL SELECT WHERE LIKE
sind die folgenden:
WHERE
Wert LIKE 'abc%
‘ – findet und gibt alle Werte zurück, die mit „abc“ beginnen
WHERE
Wert LIKE '%abc'
– findet und gibt alle Werte zurück, die mit „abc“ enden
WHERE
Wert LIKE '%abc%'
– findet Werte mit „abc“ irgendwo zwischen Anfang und Ende
Schauen wir uns den WHERE LIKE
an Beispiel. Das Unternehmen möchte die Liste seiner Kunden aus den USA und Großbritannien erhalten. Die Abfrage lautet wie folgt:
SELECT ContactName, Country, City
FROM Customers
WHERE Country LIKE 'U%'
ORDER BY ContactName;
Die Ausgabe ist:
Kontaktname | Land | Stadt |
Helen Bennett | Großbritannien | Cowes |
Simon Crowther | Großbritannien | London |
Hari Kumar | Großbritannien | London |
Howard Snyder | USA | Eugen |
Yoshi Latimer | USA | Elgin |
John Steel | USA | Walla Walla |
Jaime Torres | USA | San Francisco |
Fran Wilson | USA | Portland |
WHERE NOT LIKE-Beispiel
Es gibt einen anderen Fall, in dem Sie einige Daten aus den Ergebnissen ausschließen müssen. Wir können den MySQL WHERE NOT LIKE
verwenden Operator. Es findet und gibt die Daten zurück, die keine bestimmten Zeichen enthalten.
Das Unternehmen möchte eine Liste seiner Kunden aus allen Ländern außer Großbritannien und den USA. Die Syntax von WHERE NOT LIKE
in MySQL sieht wie folgt aus:
SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT LIKE 'U%'
ORDER BY Country;
Die Ausgabe:
Kontaktname | Land | Stadt |
Roland Mendel | Österreich | Graz |
Georg Pipps | Österreich | Salzburg |
Catherine Dewey | Belgien | Brüssel |
Pascale Cartrain | Belgien | Charleroi |
Elizabeth Lincoln | Kanada | Tsawassen |
Yoshi Tannamuri | Kanada | Vancouver |
Jean Fresnière | Kanada | Montréal |
Jytte Petersen | Dänemark | København |
Palle Ibsen | Dänemark | Århus |
Pirkko Koskitalo | Finnland | Oulu |
Matti Karttunen | Finnland | Helsinki |
Annette Roulet | Frankreich | Toulouse |
Marie Bertrand | Frankreich | Paris |
Maria Anders | Deutschland | Berlin |
Hanna Mooss | Deutschland | Mannheim |
WHERE IN-Operator
Mit dem IN
und NOT IN
Keywords ist eine weitere Option, um die Zeilen zu filtern und nur einen Teil der Daten abzurufen, der unseren strengen Kriterien entspricht. Der Hauptzweck besteht darin, die Anzahl von OR
zu reduzieren Klauseln in einem SELECT
Erklärung.
MySQL WHERE IN
spricht die Zeilen an, die die Werte enthalten, die wir für WHERE
angegeben haben Zustand. Beispielsweise möchten wir die Liste der Kunden abrufen, die in mehreren europäischen Ländern ansässig sind. Der WHERE IN
Syntax ist in MySQL wie folgt:
SELECT ContactName, Country, City
FROM Customers
WHERE Country IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;
Bitte beachten Sie, dass wir unsere Werte, die die Suchbedingung angeben, in Klammern setzen. Wenn Sie mit Textwerten arbeiten, müssen wir sie alle in einfache Anführungszeichen setzen. Wenn unsere Werte jedoch numerisch sind, listen wir sie ohne einfache Anführungszeichen auf, z. B. (25, 35, 45).
Die Ausgabe des obigen MySQL WHERE IN
-Klausel in SELECT
Anweisung ist:
Kontaktname | Land | Stadt |
Catherine Dewey | Belgien | Brüssel |
Pascale Cartrain | Belgien | Charleroi |
Frédérique Citeaux | Frankreich | Straßburg |
Laurence Lebihans | Frankreich | Marseille |
Janine Labrune | Frankreich | Nantes |
Martine Rancé | Frankreich | Lille |
Alexander Feuer | Deutschland | Leipzig |
Henriette Pfalzheim | Deutschland | Köln |
Horst Kloss | Deutschland | Cunewalde |
Karin Josephs | Deutschland | Münster |
Rita Müller | Deutschland | Stuttgart |
Thomas Hardy | Großbritannien | London |
Victoria Ashworth | Großbritannien | London |
Elizabeth Brown | Großbritannien | Manchester |
Ann Devon | Großbritannien | London |
WHERE NOT IN-Beispiel
Der umgekehrte Fall ist MySQL WHERE NOT IN
Klausel. Es wird verwendet, um sicherzustellen, dass Ihre Abfrage die Zeilen ignoriert, die die für die Bedingung angegebenen Werte enthalten. Im obigen Beispiel haben wir Kunden aus den 4 bestimmten europäischen Ländern angefragt. Der MySQL WHERE NOT IN
SELECT
Die Abfrage für dieselbe Anfrage gibt alle Kunden zurück, die in anderen Ländern ansässig sind, mit Ausnahme der 4 zuvor definierten.
SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;
Die Ausgabe:
Kontaktname | Land | Stadt |
Patricio Simpson | Argentinien | Buenos Aires |
Sergio Gutierrez | Argentinien | Buenos Aires |
Brian Citeaux | Kanada | Montréal |
Laura Smith | Kanada | Toronto |
Jane Green | Kanada | Toronto |
Martine Rancé | Kanada | Vancouver |
Alexander Feuer | Kanada | Århus |
Paolo Accorti | Italien | Rom |
Giovanni Rovelli | Italien | Turin |
Anna Moroni | Italien | Pavia |
Hinweis :Wir empfehlen die Verwendung von [NOT] EXISTS
über [NOT] IN
seit EXISTS
logischer Operator arbeitet schneller als IN
, wenn Datensätze mit einer Unterabfrage verglichen werden. Außerdem NOT EXISTS
vermeidet unerwartete Ergebnisse, wenn die Quelldaten NULL
enthalten Werte.
WHERE IS NULL-Operator
Um zu prüfen, ob ein Wert NULL
ist oder nicht, verwenden Sie IS NULL
Operator. Die folgende Anweisung verwendet das WHERE
-Klausel mit IS NULL
-Operator, um die Zeilen ohne Wert in books_read
zu erhalten Spalte:
SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NULL;
Die Ausgabe sieht folgendermaßen aus:
Nachname | Vorname | reg_year | books_read |
Janett | Overacker | 2020 | NULL |
Lidia | Schwenson | 2017 | NULL |
Albert | Crepeau | 2018 | NULL |
Anastasia | Johnson | 2021 | NULL |
Wird | Schmitt | 2017 | NULL |
WHERE IS NOT NULL-Beispiel
Im Gegensatz zum vorherigen Befehl WHERE IS NOT NULL
, im Gegensatz dazu, zeigt nur die Zeilen an, die irgendeinen Wert in der fraglichen Spalte enthalten. Im folgenden Beispiel werden wir nur die Zeilen auswählen, in denen books_read Spalte ist nicht leer:
SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NOT NULL;
In der Ausgabe sehen Sie nur die Zeilen, die einen Wert in books_read enthalten Spalte:
Nachname | Vorname | 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
Der 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
Operator. 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 |
Summary
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