Mysql
 sql >> Datenbank >  >> RDS >> Mysql

WHERE-Bedingung in MySQL mit 16 verschiedenen Abfragebeispielen

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:

  1. Werten Sie den FROM aus -Klausel zur Identifizierung der Zieltabelle.
  2. Fahren Sie mit WHERE fort Klausel zur Bewertung der Kriterien für die Datenauswahl.
  3. 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

und gibt sie zurück

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