MySQL WHERE-Klausel: AND, OR, IN, NOT IN Abfragebeispiel

Was ist die WHERE-Klausel? MySQL?

WHERE-Klausel in MySQL ist ein Schlüsselwort, mit dem die genauen Kriterien der Daten oder Zeilen angegeben werden, die von der angegebenen SQL-Anweisung betroffen sind. Die WHERE-Klausel kann mit SQL-Anweisungen wie INSERT, UPDATE, SELECT und DELETE verwendet werden, um Datensätze zu filtern und verschiedene Operationen an den Daten durchzuführen.

Wir haben uns angeschaut, wie man Daten von a abfragt Datenbank Verwenden der SELECT-Anweisung im vorherigen Tutorial. Die SELECT-Anweisung gab alle Ergebnisse aus der abgefragten Datenbanktabelle zurück.

Dies sind jedoch Zeiten, in denen wir die Abfrageergebnisse auf eine bestimmte Bedingung beschränken möchten. In solchen Situationen ist die WHERE-Klausel in SQL hilfreich.

WHERE-Klausel in MySQL
WHERE-Klausel in MySQL

Syntax der WHERE-Klausel

Die grundlegende Syntax für die WHERE-Klausel bei Verwendung in a MySQL Die SELECT WHERE-Anweisung lautet wie folgt.

SELECT * FROM tableName WHERE condition;

HIER

  • „SELECT * FROM tableName“ ist der Standard SELECT-Anweisung
  • "WO" ist das Schlüsselwort, das unsere ausgewählte Abfrageergebnismenge einschränkt und "Zustand" ist der Filter, der auf die Ergebnisse angewendet werden soll. Der Filter kann ein Bereich, ein Einzelwert oder eine Unterabfrage sein.

Schauen wir uns nun a an Praxisbeispiel.

Angenommen, wir möchten die persönlichen Daten eines Mitglieds aus der Mitgliedertabelle mit der angegebenen Mitgliedsnummer 1 abrufen. In diesem Fall würden wir das folgende Skript verwenden.

SELECT * FROM `members` WHERE `membership_number` = 1;

Ausführen des obigen Skripts in MySQL Werkbank auf „myflixdb“ würde die folgenden Ergebnisse liefern.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm

WHERE-Klausel kombiniert mit – UND LOGISCH OperaDo.

Die WHERE-Bedingung in MySQL wird in Verbindung mit dem logischen Operator „UND“ nur ausgeführt, wenn ALLE angegebenen Filterkriterien erfüllt sind.

Schauen wir uns nun ein praktisches Beispiel an: Angenommen, wir möchten eine Liste aller Filme in Kategorie 2 erhalten, die im Jahr 2008 veröffentlicht wurden. Um dies zu erreichen, verwenden wir das unten gezeigte Skript.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Ausführen des obigen Skripts in MySQL Workbench gegen „myflixdb“ erzeugt folgende Ergebnisse.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

WHERE-Klausel kombiniert mit – OR LOGISCH OperaDo.

Die WHERE-Klausel wird in Verbindung mit dem OR-Operator nur ausgeführt, wenn einige oder alle angegebenen Filterkriterien erfüllt sind.
Das folgende Skript ruft alle Filme der Kategorie 1 oder 2 ab.
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Ausführen des obigen Skripts in MySQL Workbench gegen „myflixdb“ erzeugt folgende Ergebnisse.
movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

WHERE-Klausel kombiniert mit – IN Stichwort (Keyword)

Das WO in MySQL Wenn die Klausel zusammen mit dem Schlüsselwort IN verwendet wird, wirkt sie sich nur auf die Zeilen aus, deren Werte mit der im Schlüsselwort IN bereitgestellten Werteliste übereinstimmen. Der MySQL Die IN-Anweisung trägt dazu bei, die Anzahl der OR-Klauseln zu reduzieren, die Sie möglicherweise verwenden müssen.
Folgende MySQL Die WHERE IN-Abfrage liefert Zeilen, in denen member_number entweder 1, 2 oder 3 ist
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Ausführen des obigen Skripts in MySQL Workbench gegen „myflixdb“ erzeugt folgende Ergebnisse.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com

WHERE-Klausel kombiniert mit – NICHT IN Stichwort (Keyword)

Wenn die WHERE-Klausel zusammen mit dem Schlüsselwort NOT IN verwendet wird, wirkt sie sich NICHT auf die Zeilen aus, deren Werte mit der im Schlüsselwort NOT IN bereitgestellten Werteliste übereinstimmen.
Die folgende Abfrage gibt Zeilen aus, bei denen die Mitgliedschaftsnummer NICHT 1, 2 oder 3 ist
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Ausführen des obigen Skripts in MySQL Workbench gegen „myflixdb“ erzeugt folgende Ergebnisse.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

WHERE-Klausel kombiniert mit – VERGLEICH Operatoren

Die Vergleichsoperatoren kleiner als (), gleich (=), ungleich () können mit der WHERE-Klausel verwendet werden

= Gleich

Das folgende Skript ruft alle weiblichen Mitglieder aus der Mitgliedertabelle unter Verwendung des Vergleichsoperators „Gleich“ ab.
SELECT * FROM `members` WHERE `gender` = 'Female';

Ausführen des obigen Skripts in MySQL Workbench gegen „myflixdb“ erzeugt folgende Ergebnisse.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> Größer als

Das folgende Skript ruft alle Zahlungen über 2,000 aus der Zahlungstabelle ab.
SELECT * FROM `zahlungen` WHERE `amount_paid` > 2000;
Ausführen des obigen Skripts in MySQL Workbench gegen „myflixdb“ erzeugt folgende Ergebnisse.
payment_id membership_number payment_date description amount_paid external_reference_number
1 1 23-07-2012 Movie rental payment 2500 11
3 3 30-07-2012 Movie rental payment 6000 NULL

< > Nicht gleich

Das folgende Skript ruft alle Filme ab, deren Kategorie-ID ungleich 1 ist.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Ausführen des obigen Skripts in MySQL Workbench gegen „myflixdb“ erzeugt folgende Ergebnisse.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8

Zusammenfassung

  • Die SQL WHERE-Klausel wird verwendet, um die Anzahl der Zeilen zu beschränken, die von einem SELECT, UPDATE oder betroffen sind DELETE-Abfrage.
  • Die WHERE-Bedingung in SQL kann in Verbindung mit logischen Operatoren wie AND und OR, Vergleichsoperatoren wie ,= usw. verwendet werden.
  • Bei Verwendung mit AND logischer OperatorEs müssen alle Kriterien erfüllt sein.
  • Bei Verwendung mit dem logischen „ODER“-Operator muss eines der Kriterien erfüllt sein.
  • Das Schlüsselwort IN wird verwendet, um Zeilen auszuwählen, die einer Werteliste entsprechen.

Rätsel

Nehmen wir an, wir möchten eine Liste der ausgeliehenen Filme erhalten, die am 25 nicht fristgerecht zurückgegeben wurden. Um dies zu erreichen, können wir die SQL WHERE-Anweisungsklausel zusammen mit dem Kleiner-als-Vergleichsoperator und dem logischen AND-Operator verwenden.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

Ausführen des obigen Skripts in MySQL Workbench liefert die folgenden Ergebnisse.

reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0