Das Strukturierte Abfragesprache (SQL) bietet Datenbankbenutzern die Möglichkeit, benutzerdefinierte Abfragen zu erstellen, um Informationen aus Datenbanken zu extrahieren. In einem früheren Artikel haben wir das Extrahieren von Informationen aus einer Datenbank untersucht mit SQL SELECT-Abfragen. Lassen Sie uns diese Diskussion erweitern und untersuchen, wie Sie fortgeschrittene Leistungen erbringen können Anfragen um Daten abzurufen, die entspricht bestimmten Bedingungen.
Betrachten wir ein Beispiel basierend auf dem allgemein verwendeten Nordwind Datenbank, die häufig als Tutorial mit Datenbankprodukten geliefert wird.
Hier ist ein Auszug aus der Produkttabelle der Datenbank:
Produkt ID | Produktname | Lieferanten ID | Menge pro Einheit | Stückpreis | EinheitenAuf Lager |
---|---|---|---|---|---|
1 | Chai | 1 | 10 Kartons x 20 Beutel | 18.00 | 39 |
2 | Ändern | 1 | 24 - 12 oz Flaschen | 19.00 | 17 |
3 | Anissirup | 1 | 12 - 550 ml Flaschen | 10.00 | 13 |
4 | Cajun-Gewürz von Chefkoch Anton | 2 | 48 - 6-Unzen-Gläser | 22.00 | 53 |
5 | Gumbo-Mix von Chefkoch Anton | 2 | 36 Kisten | 21.35 | 0 |
6 | Omas Boysenberry Aufstrich | 3 | 12 - 8-Unzen-Gläser | 25.00 | 120 |
7 | Onkel Bobs getrocknete Bio-Birnen | 3 | 12 - 1 Pfund Packungen. | 30.00 | 15 |
Einfache Randbedingungen
Die ersten Einschränkungen, die wir unserer Abfrage auferlegen werden, beinhalten einfache Randbedingungen. Wir können diese in der WHERE-Klausel der SELECT-Abfrage angeben, indem wir einfache Bedingungsanweisungen verwenden, die mit Standardoperatoren wie , >= und <= konstruiert wurden.
Versuchen wir zunächst eine einfache Abfrage, die es uns ermöglicht, eine Liste aller Produkte in der Datenbank zu extrahieren, die einen Einheitspreis von mehr als 20,00 haben:
SELECT Produktname, Einheitspreis
VON Produkten
WO Stückpreis >20.00
Dies erzeugt eine Liste von vier Produkten, wie unten gezeigt:
Produktname EinheitPreis
Chef Anton's Gumbo Mix 21.35
Cajun-Gewürz von Chefkoch Anton 22.00
Omas Boysenberry Aufstrich 25.00
Onkel Bobs getrocknete Bio-Birnen 30.00
Wir können die WHERE-Klausel auch mit Zeichenfolgenwerten verwenden. Dies entspricht im Grunde Zeichen Zahlen, wobei A den Wert 1 und Z den Wert 26 darstellt. Beispielsweise könnten wir mit der folgenden Abfrage alle Produkte anzeigen, deren Namen mit U, V, W, X, Y oder Z beginnen:
Produktname auswählen
VON Produkten
WO Produktname >= 'T'
Was ergibt das Ergebnis:
Produktname
Onkel Bobs getrocknete Bio-Birnen
Ausdrücken von Bereichen mithilfe von Grenzen
Die WHERE-Klausel ermöglicht es uns auch, eine Bereichsbedingung für einen Wert zu implementieren, indem mehrere Bedingungen verwendet werden. Wenn wir beispielsweise unsere obige Abfrage verwenden und die Ergebnisse auf Produkte mit Preisen zwischen 15,00 und 20,00 beschränken möchten, könnten wir die folgende Abfrage verwenden:
SELECT Produktname, Einheitspreis
VON Produkten
WO Stückpreis > 15,00 UND Stückpreis < 20,00
Dies führt zu dem unten gezeigten Ergebnis:
Produktname EinheitPreis
18.00 Uhr
Wechsel 19.00
Bereiche mit BETWEEN. ausdrücken
SQL bietet auch eine Abkürzung BETWEEN-Syntax, die die Anzahl der einzuschließenden Bedingungen reduziert und die Abfrage lesbarer macht. Anstatt die beiden obigen WHERE-Bedingungen zu verwenden, könnten wir beispielsweise dieselbe Abfrage wie folgt ausdrücken:
SELECT Produktname, Einheitspreis
VON Produkten
WO Einheitspreis ZWISCHEN 15.00 UND 20.00
Wie bei unseren anderen Bedingungsklauseln funktioniert BETWEEN auch mit Zeichenfolgenwerten. Wenn wir eine Liste aller Länder erstellen möchten, die mit V, W oder X beginnen, könnten wir die Abfrage verwenden:
Produktname auswählen
VON Produkten
WO Produktname ZWISCHEN "A" und "D"
Was ergibt das Ergebnis:
Produktname
Anissirup
Chai
Ändern
Gumbo-Mix von Chefkoch Anton
Cajun-Gewürz von Chefkoch Anton
Die WHERE-Klausel ist ein leistungsstarker Teil der SQL-Sprache, mit dem Sie Ergebnisse auf Werte beschränken können, die in bestimmte Bereiche fallen. Es wird sehr häufig verwendet, um Geschäftslogik auszudrücken und sollte ein Teil des Toolkits jedes Datenbankprofis sein. Es ist oft hilfreich, allgemeine Klauseln in eine gespeicherte Prozedur zu integrieren, um sie für Personen ohne SQL-Kenntnisse zugänglich zu machen.