Zusammenfassung :In diesem Tutorial lernen Sie, wie Sie SQLite WHERE verwenden -Klausel, um die Suchbedingung für die von der Abfrage zurückgegebenen Zeilen anzugeben.
Einführung in SQLite WHERE Klausel
Das WHERE -Klausel ist eine optionale Klausel von SELECT Erklärung. Es erscheint nach dem FROM -Klausel wie die folgende Anweisung:
SELECT
column_list
FROM
table
WHERE
search_condition;Code language: SQL (Structured Query Language) (sql)
In diesem Beispiel fügen Sie ein WHERE hinzu -Klausel zu SELECT -Anweisung, um die von der Abfrage zurückgegebenen Zeilen zu filtern. Beim Auswerten eines SELECT Anweisung mit einem WHERE -Klausel verwendet SQLite die folgenden Schritte:
- Überprüfen Sie zuerst die Tabelle im
FROMKlausel. - Als Zweites werten Sie die Bedingungen in
WHEREaus -Klausel, um die Zeilen abzurufen, die diese Bedingungen erfüllen. - Erstellen Sie drittens die endgültige Ergebnismenge basierend auf den Zeilen im vorherigen Schritt mit Spalten in
SELECTKlausel.
Die Suchbedingung im WHERE hat folgende Form:
left_expression COMPARISON_OPERATOR right_expressionCode language: SQL (Structured Query Language) (sql) Beispielsweise können Sie eine Suchbedingung wie folgt formulieren:
WHERE column_1 = 100;
WHERE column_2 IN (1,2,3);
WHERE column_3 LIKE 'An%';
WHERE column_4 BETWEEN 10 AND 20;Code language: SQL (Structured Query Language) (sql)
Neben dem SELECT -Anweisung können Sie die WHERE-Anweisung verwenden -Klausel im UPDATE und DELETE Aussagen.
SQLite-Vergleichsoperatoren
Ein Vergleichsoperator testet, ob zwei Ausdrücke gleich sind. Die folgende Tabelle veranschaulicht die Vergleichsoperatoren, die Sie zum Erstellen von Ausdrücken verwenden können:
| Operator | Bedeutung |
|---|---|
| = | Gleich |
| <> oder != | Ungleich |
| < | Kleiner als |
| > | Größer als |
| <= | Kleiner als oder gleich |
| >= | Größer als oder gleich |
Logische SQLite-Operatoren
Mit logischen Operatoren können Sie die Wahrheit einiger Ausdrücke testen. Ein logischer Operator gibt 1, 0 oder einen NULL-Wert zurück.
Beachten Sie, dass SQLite keinen booleschen Datentyp bereitstellt, daher bedeutet 1 WAHR und 0 bedeutet FALSCH.
Die folgende Tabelle veranschaulicht die logischen SQLite-Operatoren:
| Operator | Bedeutung |
|---|---|
| ALLE | gibt 1 zurück, wenn alle Ausdrücke 1 sind. |
| UND | gibt 1 zurück, wenn beide Ausdrücke 1 sind, und 0, wenn einer der Ausdrücke 0 ist. |
| JEDER | gibt 1 zurück, wenn einer der Vergleichssätze 1 ist. |
| ZWISCHEN | gibt 1 zurück, wenn ein Wert innerhalb eines Bereichs liegt. |
| EXISTIERT | gibt 1 zurück, wenn eine Unterabfrage Zeilen enthält. |
| EIN | gibt 1 zurück, wenn sich ein Wert in einer Werteliste befindet. |
| WIE | gibt 1 zurück, wenn ein Wert mit einem Muster übereinstimmt |
| NICHT | kehrt den Wert anderer Operatoren wie NOT EXISTS, NOT IN, NOT BETWEEN usw. um |
| ODER | gibt wahr zurück, wenn einer der Ausdrücke 1 ist |
SQLite WHERE Klauselbeispiele
Wir werden die tracks verwenden Tabelle in der Beispieldatenbank, um die Verwendung von WHERE zu veranschaulichen Klausel.
Der Gleichheitsoperator (= ) ist der am häufigsten verwendete Operator. Die folgende Abfrage verwendet beispielsweise WHERE Klausel den Gleichheitsoperator, um alle Titel in der Album-ID 1 zu finden:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1;Code language: SQL (Structured Query Language) (sql) Probieren Sie es aus
SQLite vergleicht die in AlbumId gespeicherten Werte Spalte mit einem Literalwert 1 um zu testen, ob sie gleich sind. Nur die Zeilen, die die Bedingung erfüllen, werden zurückgegeben.
Wenn Sie zwei Werte vergleichen, müssen Sie sicherstellen, dass sie vom gleichen Datentyp sind. Man sollte Zahlen mit Zahlen vergleichen, Zeichenkette mit Zeichenkette usw.
Falls Sie Werte in verschiedenen Datentypen vergleichen, z. B. einen String mit einer Zahl, muss SQLite implizite Datentypkonvertierungen durchführen, aber im Allgemeinen sollten Sie dies vermeiden.
Sie verwenden den logischen Operator, um Ausdrücke zu kombinieren. Um beispielsweise Titel des Albums 1 zu erhalten, die länger als 200.000 Millisekunden sind, verwenden Sie die folgende Anweisung:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1
AND milliseconds > 250000;Code language: SQL (Structured Query Language) (sql) Probieren Sie es aus
Die Anweisung verwendete zwei Ausdrücke albumid = 1 und milliseconds > 250000 . Es verwendet das AND logischer Operator, um diese Ausdrücke zu kombinieren.
SQLite WHERE Klausel mit LIKE Operatorbeispiel
Manchmal erinnern Sie sich vielleicht nicht genau an die Daten, die Sie durchsuchen möchten. In diesem Fall führen Sie eine ungenaue Suche mit dem LIKE durch Betreiber.
Um beispielsweise herauszufinden, welche Tracks von Smith komponiert wurden, verwenden Sie den LIKE Operator wie folgt:
SELECT
name,
albumid,
composer
FROM
tracks
WHERE
composer LIKE '%Smith%'
ORDER BY
albumid;Code language: SQL (Structured Query Language) (sql) Probieren Sie es aus
Du bekommst Tracks komponiert von R.A. Smith-Diesel, Adrian Smith usw.
SQLite WHERE -Klausel mit dem IN Operatorbeispiel
Der IN Mit dem Operator können Sie überprüfen, ob sich ein Wert in einer Liste einer durch Kommas getrennten Liste von Werten befindet. Um beispielsweise Titel zu finden, deren Medientyp-ID 2 oder 3 ist, verwenden Sie den IN Operator wie in der folgenden Anweisung gezeigt:
SELECT
name,
albumid,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (2, 3);Code language: SQL (Structured Query Language) (sql) Probieren Sie es aus
In diesem Tutorial haben Sie gelernt, wie Sie SQLite WHERE verwenden -Klausel zum Filtern von Zeilen in der endgültigen Ergebnismenge mithilfe von Vergleichs- und logischen Operatoren.