Was ist die WHERE-Klausel in MySQL?
Die WHERE-Klausel in MySQL ist ein Schlüsselwort, mit dem die genauen Kriterien für 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 auszuführen.
Wir haben uns angesehen, wie Daten aus einer Datenbank mithilfe der SELECT-Anweisung im vorherigen Lernprogramm abgefragt werden. Die SELECT-Anweisung hat alle Ergebnisse aus der abgefragten Datenbanktabelle zurückgegeben.
Dies sind jedoch Zeiten, in denen wir die Abfrageergebnisse auf eine bestimmte Bedingung beschränken möchten. Die WHERE-Klausel in SQL ist in solchen Situationen nützlich.

WHERE-Klausel Syntax
Die grundlegende Syntax für die WHERE-Klausel bei Verwendung in einer MySQL SELECT WHERE-Anweisung lautet wie folgt.
SELECT * FROM tableName WHERE condition;
HIER
- "SELECT * FROM tableName" ist die Standard-SELECT-Anweisung
- "WHERE" ist das Schlüsselwort, das unsere Ergebnismenge für ausgewählte Abfragen einschränkt, und "condition" 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 ein praktisches Beispiel an .
Angenommen, wir möchten die persönlichen Daten eines Mitglieds aus der Mitgliedertabelle mit der Mitgliedsnummer 1 abrufen, würden wir das folgende Skript verwenden, um dies zu erreichen.
SELECT * FROM `members` WHERE `membership_number` = 1;
Das Ausführen des obigen Skripts in der MySQL-Workbench auf der "myflixdb" würde die folgenden Ergebnisse liefern.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
WHERE-Klausel kombiniert mit - AND LOGICAL Operator
Die WHERE-Bedingung in MySQL wird in Verbindung mit dem logischen Operator AND 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 2008 veröffentlicht wurden. Wir würden das unten gezeigte Skript verwenden, um dies zu erreichen.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Das Ausführen des obigen Skripts in der MySQL-Workbench gegen die "myflixdb" führt zu den folgenden Ergebnissen.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE-Klausel kombiniert mit - OR LOGICAL Operator
Die WHERE-Klausel wird in Verbindung mit dem Operator OR nur ausgeführt, wenn eines oder alle angegebenen Filterkriterien erfüllt sind. Das folgende Skript ruft alle Filme in Kategorie 1 oder Kategorie 2 abSELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Das Ausführen des obigen Skripts in der MySQL-Workbench gegen die "myflixdb" führt zu den folgenden Ergebnissen.
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- Schlüsselwort
Die WHERE in MySQL-Klausel wirkt sich zusammen mit dem IN-Schlüsselwort nur auf die Zeilen aus, deren Werte mit der Liste der im IN-Schlüsselwort angegebenen Werte übereinstimmen. Die MySQL IN-Anweisung hilft dabei, die Anzahl der OR-Klauseln zu reduzieren, die Sie möglicherweise verwenden müssen. Die folgende MySQL WHERE IN-Abfrage gibt Zeilen an, in denen Membership_Number entweder 1, 2 oder 3 istSELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Das Ausführen des obigen Skripts in der MySQL-Workbench gegen die "myflixdb" führt zu den folgenden Ergebnissen.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
WHERE-Klausel kombiniert mit - NOT IN- Schlüsselwort
Die WHERE-Klausel wirkt sich in Verbindung mit dem Schlüsselwort NOT IN NICHT auf die Zeilen aus, deren Werte mit der Liste der Werte im Schlüsselwort NOT IN übereinstimmen. Die folgende Abfrage gibt Zeilen an, in denen die Mitgliedsnummer NICHT 1, 2 oder 3 istSELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Das Ausführen des obigen Skripts in der MySQL-Workbench gegen die "myflixdb" führt zu den folgenden Ergebnissen.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
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 mit dem Vergleichsoperator gleich ab.SELECT * FROM `members` WHERE `gender` = 'Female';
Das Ausführen des obigen Skripts in der MySQL-Workbench gegen die "myflixdb" führt zu den folgenden Ergebnissen.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> Größer als
Das folgende Skript ruft alle Zahlungen ab, die größer als 2.000 sind, aus der Zahlungstabelle. SELECT * FROM `Zahlungen` WHERE` Betrag_bezahlt`> 2000; Das Ausführen des obigen Skripts in der MySQL-Workbench gegen die "myflixdb" führt zu den folgenden Ergebnissen.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 nicht 1 ist.SELECT * FROM `movies` WHERE `category_id`<> 1;Das Ausführen des obigen Skripts in der MySQL-Workbench gegen die "myflixdb" führt zu den folgenden Ergebnissen.
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 einer SELECT-, UPDATE- oder DELETE-Abfrage betroffen sind.
- Die WHERE-Bedingung in SQL kann in Verbindung mit logischen Operatoren wie AND und OR, Vergleichsoperatoren wie, = usw. verwendet werden.
- Bei Verwendung mit dem logischen Operator AND müssen alle Kriterien erfüllt sein.
- Bei Verwendung mit dem logischen Operator OR muss eines der Kriterien erfüllt sein.
- Das Schlüsselwort IN wird verwendet, um Zeilen auszuwählen, die einer Werteliste entsprechen.
Brain Teaser Nehmen wir an, wir möchten eine Liste der ausgeliehenen Filme erhalten, die nicht rechtzeitig am 25.06.2012 zurückgegeben wurden. Wir können die SQL WHERE-Anweisungsklausel zusammen mit dem Operator kleiner als der Vergleich und dem logischen Operator AND verwenden, um dies zu erreichen.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Das Ausführen des obigen Skripts in der MySQL-Workbench führt zu den folgenden Ergebnissen.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |