Struktureret forespørgselssprog (SQL) giver databasebrugere mulighed for at oprette tilpassede forespørgsler for at udtrække informationer fra databaser. I en tidligere artikel undersøgte vi at uddrage oplysninger fra en database ved hjælp af SQL SELECT-forespørgsler. Lad os udvide den diskussion og undersøge, hvordan du kan udføre avancerede forespørgsler for at hente data, der matcher bestemte forhold.Lad os overveje et eksempel baseret på den almindeligt anvendte Northwind-database, som ofte sendes med databaseprodukter som en vejledning.
Her er et uddrag fra databasens produkttabel:
ProductID | Produktnavn | SupplierID | QuantityPerUnit | Pris per stk | UnitsInStock |
---|---|---|---|---|---|
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 | Kok Antons Cajun Krydderier | 2 | 48 - 6 oz krukker | 22.00 | 53 |
5 | Kokken Antons Gumbo Mix | 2 | 36 kasser | 21.35 | 0 |
6 | Bedstemor's Boysenberry Spread | 3 | 12 - 8 oz krukker | 25.00 | 120 |
7 | Onkel Bobs Økologiske Tørrede Pærer | 3 | 12 - 1 lb pkgs. | 30.00 | 15 |
Simple Boundary Conditions
De første begrænsninger, vi stiller på vores forespørgsel, involverer enkle grænsevilkår. Vi kan angive disse i WHERE-klausulen i SELECT-forespørgslen ved brug af simple betingelseserklæringer konstrueret med standardoperatører, som f.eks. <,>,> = 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 UnitPrice 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:
ProductName UnitPrice ------- -------- Chef Antons Gumbo Mix 21,35 Chef Antons Cajun Seasoning 22.00 Grandma's Boysenberry Spread 25.00 Uncle Bob's Organic Tørrede Pærer 30,00
Vi kan også bruge WHERE-klausulen med strengværdier. Dette svarer i det væsentlige til tegn til tal med A, der repræsenterer værdien 1 og Z, der 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 HVOR Produktnavn> = 'T'
Hvilket giver resultatet:
Produktnavn ------- Uncle Bobs Økologiske Tørrede Pærer
Udtrykke intervaller ved hjælp af grænser
WHERE-klausulen giver os også mulighed for at gennemføre en rækkevidde på en værdi ved hjælp af flere betingelser. For eksempel, hvis vi ønskede at tage vores forespørgsel over og begrænse resultaterne til produkter med priser mellem kl. 15.00 og 20.00, kunne 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:
ProductName UnitPrice ------- -------- Chai 18.00 Chang 19.00
Udtrykke intervaller med mellemtiden
SQL giver også en genvej MELLEM syntax, der reducerer antallet af forhold, som vi skal medtage og gør forespørgslen mere læsbar. For eksempel, i stedet for at bruge de to WHERE betingelser ovenfor, kunne vi udtrykke det samme spørgsmål som:
VÆLG Produktnavn, UnitPrice FRA produkter HVOR UnitPrice MELLEM 15.00 OG 20.00
Som med vores andre betingelsesklausuler arbejder MELLEM også med strengværdier. Hvis vi ønskede at lave 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 Chef Antons Gumbo Mix Chef Antons Cajun Seasoning
WHERE-klausulen er en stærk del af SQL-sproget, som giver dig mulighed for at begrænse resultater til værdier inden for bestemte intervaller. Det er meget almindeligt brugt til at hjælpe med at udtrykke forretningslogik og bør være en del af hver database professionel værktøjssæt.
Det er ofte nyttigt at indarbejde fælles klausuler i en lagret procedure for at gøre den tilgængelig for dem uden SQL-viden.