Det Structured Query Language (SQL) giver databasebrugerne mulighed for at oprette tilpassede forespørgsler for at udtrække information fra databaser. I en tidligere artikel undersøgte vi at udtrække information fra en database ved hjælp af SQL SELECT-forespørgsler. Lad os udvide denne diskussion og undersøge, hvordan du kan udføre avanceret forespørgsler for at hente data, der matcher specifikke betingelser.
Lad os overveje et eksempel baseret på det almindeligt anvendte Nordvind database, der ofte sendes med databaseprodukter som en tutorial.
Her er et uddrag fra databasens produkttabel:
ProduktID | Produktnavn | Leverandør-ID | QuantityPerUnit | Pris per stk | Enheder på lager |
---|---|---|---|---|---|
1 | Chai | 1 | 10 kasser x 20 poser | 18.00 | 39 |
2 | Chang | 1 | 24 - 12 oz flasker | 19.00 | 17 |
3 | Anis sirup | 1 | 12 - 550 ml flasker | 10.00 | 13 |
4 | Kokk Anton's Cajun-krydderier | 2 | 48 - 6 oz krukker | 22.00 | 53 |
5 | Kokken Anton's Gumbo Mix | 2 | 36 kasser | 21.35 | 0 |
6 | Bedstemors Boysenbær-spredning | 3 | 12 - 8 oz krukker | 25.00 | 120 |
7 | Onkel Bobs organiske tørrede pærer | 3 | 12 - 1 lb pkgs. | 30.00 | 15 |
Enkle grænseforhold
De første begrænsninger, vi lægger på vores forespørgsel, involverer enkle randbetingelser. Vi kan specificere disse i WHERE-klausulen i SELECT-forespørgslen ved hjælp af enkle betingelser, der er konstrueret med standardoperatorer, såsom ,> = og <=.
Lad os først prøve en simpel forespørgsel, der giver os mulighed for at udtrække en liste over alle produkter i databasen, der har en enhedspris på mere end 20.00:
VÆLG Produktnavn, UnitPrice
FRA produkter
HVOR UnitPrice> 20.00
Dette giver en liste over fire produkter som vist nedenfor:
Produktnavn Enhedspris
Kokken Anton's Gumbo Mix 21.35
Kokken Anton's Cajun-krydderier 22.00
Bedstemors Boysenbær-opslag 25.00
Onkel Bobs organiske tørrede pærer 30.00
Vi kan også bruge WHERE-klausulen med strengværdier. Dette svarer stort set til tegn til tal, hvor A repræsenterer værdien 1 og Z repræsenterer værdien 26. For eksempel kunne vi vise alle produkter med navne, der begynder med U, V, W, X, Y eller Z med følgende forespørgsel:
VÆLG Produktnavn
FRA produkter
WHERE ProductName> = 'T'
Hvilket giver resultatet:
Produktnavn
Onkel Bobs organiske tørrede pærer
Udtrykke områder ved hjælp af grænser
WHERE-klausulen giver os også mulighed for at implementere en rækkebetingelse på en værdi ved hjælp af flere betingelser. Hvis vi f.eks. Vil tage vores forespørgsel ovenfor og begrænse resultaterne til produkter med priser mellem 15.00 og 20.00, kan vi bruge følgende forespørgsel:
VÆLG Produktnavn, UnitPrice
FRA produkter
HVOR UnitPrice> 15.00 AND UnitPrice <20.00
Dette giver resultatet vist nedenfor:
Produktnavn Enhedspris
Chai 18.00
Ændring 19.00
Udtrykker intervaller MELLEM
SQL giver også en genvej MELLEM syntaks, der reducerer antallet af betingelser, som vi skal medtage, og gør forespørgslen mere læselig. For eksempel i stedet for at bruge de to WHERE-betingelser ovenfor, kunne vi udtrykke den samme forespørgsel som:
VÆLG Produktnavn, UnitPrice
FRA produkter
HVOR UnitPrice MELLEM 15.00 OG 20.00
Som med vores andre betingelsesklausuler fungerer BETWEEN også med strengværdier. Hvis vi ville fremstille en liste over alle lande, der begynder med V, W eller X, kunne vi bruge forespørgslen:
VÆLG Produktnavn
FRA produkter
HVOR Produktnavn MELLEM "A" og "D"
Hvilket giver resultatet:
Produktnavn
Anis sirup
Chai
Chang
Kokken Anton's Gumbo Mix
Kokk Anton's Cajun-krydderier
WHERE-klausulen er en stærk del af SQL-sproget, der giver dig mulighed for at begrænse resultaterne til værdier, der falder inden for specificerede områder. Det bruges meget ofte til at hjælpe med at udtrykke forretningslogik og bør være en del af enhver databaseprofessionals værktøjssæt. Det er ofte nyttigt at indarbejde almindelige klausuler i en lagret procedure for at gøre det tilgængeligt for dem uden SQL-viden.