TOP

SQL-Lektion 4. Datenfilterung (WHERE)

In den meisten Fällen ist es notwendig, nicht alle Datensätze zu erhalten, sondern nur diejenigen, die bestimmte Kriterien erfüllen. Aus diesem Grund gibt es in SQL einen speziellen Operator WHERE für die Sampling-Filterung.


1. Einfache Filterung durch den Operator WHERE.

Wählen wir aus unserer Tabelle beispielsweise Datensätze aus, die sich nur auf ein bestimmtes Produkt beziehen. Dazu geben wir einen zusätzlichen Auswahlparameter an, der die Werte nach der Spalte Produkt filtert.

Ein Beispiel für eine Abfrage zur Auswahl von Textwerten:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes'

Wie Sie sehen, wird die Auswahlbedingung in einfache Anführungszeichen gesetzt, was beim Filtern von Textwerten obligatorisch ist. Beim Filtern numerischer Werte sind keine Anführungszeichen erforderlich.

Ein Beispiel für eine Abfrage zur Auswahl numerischer Werte:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 
ORDER BY Amount

In diesem Beispiel haben wir Datensätze ausgewählt, in denen der Umsatz mehr als 40.000 US-Dollar betrug, und zusätzlich alle Datensätze in aufsteigender Reihenfolge nach dem Feld „Betrag“ sortiert.

In der folgenden Tabelle sind die von SQL unterstützten bedingten Anweisungen aufgeführt:

Betriebszeichen Wert
= Ist gleich
<> Nicht gleichzusetzen mit
< Weniger
<= Gleich oder kleiner als
> Mehr
>= Größer als oder gleich wie
BETWEEN Zwischen zwei Werten
IS NULL Es gibt keine Aufzeichnung

2. Filterung nach Wertebereich (BETWEEN)

Der Operator BETWEEN wird verwendet, um Daten auszuwählen, die in einem bestimmten Bereich liegen. In der nächsten Abfrage werden alle Werte ausgewählt, die im Feld Betrag zwischen 1.000 und 2.000 US-Dollar (einschließlich) liegen.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount BETWEEN 1000 AND 2000

Die Sortierreihenfolge hängt von der Reihenfolge der Felder in der Abfrage ab. Das heißt, in unserem Fall werden die Daten zuerst nach der Spalte „Betrag“ und dann nach „City“ sortiert.

3. Auswahl leerer Datensätze (IS NULL)

In SQL gibt es einen speziellen Operator zum Auswählen leerer Datensätze (genannt NULL). Ein leerer Eintrag ist jede Zelle in der Tabelle, in die kein Zeichen eingegeben wird. Wenn in der Zelle eine 0 oder ein Leerzeichen eingegeben wird, wird davon ausgegangen, dass das Feld ausgefüllt ist.

SELECT * 
FROM Sumproduct 
WHERE Amount IS NULL

Im obigen Beispiel haben wir absichtlich zwei Werte im Feld „Betrag“ entfernt, um den Operator NULL zu demonstrieren.

4. Erweiterte Filterung (AND, OR)

Die SQL-Sprache ist nicht auf das Filtern nach einer Bedingung beschränkt. Für Ihre eigenen Zwecke können Sie recht komplexe Konstruktionen verwenden, um Daten gleichzeitig nach vielen Kriterien auszuwählen. Dafür verfügt SQL über zusätzliche Operatoren, die die Möglichkeiten des WHERE-Operators erweitern. Solche Operatoren sind: AND, OR, IN, NOT. Wir werden einige Beispiele für die Funktionsweise dieser Operatoren geben.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT * 
FROM Sumproduct 
WHERE Month = 'April' OR Month = 'March'

Kombinieren wir die Operatoren AND und OR. Dazu werden wir eine Auswahl an Fahrrädern (Bikes) und Rollschuhen (Skates) treffen, die im März verkauft wurden.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'

Wir sehen, dass in unserer Stichprobe viele Werte enthalten waren (neben März auch Januar, Februar und April). Was ist der Grund? Und die Tatsache, dass SQL Befehlsausführungsprioritäten hat. Das heißt, der AND-Operator hat eine höhere Priorität als der OR-Operator, daher wurden zuerst Datensätze mit im März verkauften Schlittschuhen ausgewählt, gefolgt von allen Datensätzen, die sich auf Fahrräder beziehen.

Um die richtige Stichprobe zu erhalten, müssen wir also die Prioritäten der Befehlsausführung ändern. Dazu verwenden wir wie in der Mathematik Klammern. Dann werden zuerst die Operatoren in Klammern verarbeitet und dann der Rest.

Run SQLSELECT * 
FROM Sumproduct 
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'

5. Erweiterte Filterung (IN-Operator)

Run SQLSELECT * 
FROM Sumproduct 
WHERE ID IN (4, 12, 58, 67)

Der IN-Operator führt die gleiche Funktion wie OR aus, bietet jedoch mehrere Vorteile:

  • Beim Arbeiten mit langen Listen sind Sätze mit IN leichter zu lesen;
  • Es werden weniger Operatoren verwendet, was die Bearbeitung der Anfrage beschleunigt;
  • Der wichtigste Vorteil von IN besteht darin, dass Sie bei seiner Konstruktion die zusätzliche Konstruktion SELECT verwenden können, die
  • відкриває великі можливості для створення складних підзапитів.

    6. Erweiterte Filterung (NOT-Operator)

    Run SQLSELECT * 
    FROM Sumproduct 
    WHERE NOT City IN ('Toronto', 'Montreal')
    

    Mit dem Schlüsselwort NOT können Sie unnötige Werte aus der Stichprobe entfernen. Seine Besonderheit besteht außerdem darin, dass es vor dem Namen der an der Filterung beteiligten Spalte platziert wird und nicht danach.