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.
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.
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.
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 |
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.
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.
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'
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:
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.