Struktūruota užklausų kalba (SQL) suteikia duomenų bazės vartotojams galimybę kurti pritaikytas užklausas informacijai iš duomenų bazių išgauti. Ankstesniame straipsnyje mes ištyrėme informacijos išskyrimą iš duomenų bazės naudojant SQL SELECT užklausas. Išplėskime šią diskusiją ir ištirkime, kaip galite dirbti pažangiau užklausos gauti duomenis, kurie atitinka konkrečias sąlygas.
Panagrinėkime pavyzdį, pagrįstą dažniausiai naudojamu Šiaurės vėjas duomenų bazė, kurioje kaip duomenų bazė dažnai pateikiami duomenų bazės produktai.
Štai ištrauka iš duomenų bazės lentelės Produktas:
ProductID | Produkto pavadinimas | Tiekėjo ID | KiekisPerUnit | Vieneto kaina | „UnitsInStock“ |
---|---|---|---|---|---|
1 | Chai | 1 | 10 dėžių x 20 maišelių | 18.00 | 39 |
2 | Chang | 1 | 24 - 12 oz buteliai | 19.00 | 17 |
3 | Anyžių sirupas | 1 | 12 - 550 ml buteliai | 10.00 | 13 |
4 | Virėjo Antono „Cajun“ prieskoniai | 2 | 48 - 6 uncijos stiklainiai | 22.00 | 53 |
5 | Virėjo Antono „Gumbo Mix“ | 2 | 36 dėžės | 21.35 | 0 |
6 | Močiutės „Boysenberry“ užtepėlė | 3 | 12 - 8 uncijos stiklainiai | 25.00 | 120 |
7 | Dėdės Bobo ekologiškos džiovintos kriaušės | 3 | 12 - 1 svaras svorio. | 30.00 | 15 |
Paprastos ribinės sąlygos
Pirmieji apribojimai, kuriuos nustatysime užklausai, apima paprastas ribines sąlygas. Tai galime nurodyti SELECT užklausos WHERE sąlygoje, naudodami paprastus sąlygų sakinius, sukonstruotus naudojant standartinius operatorius, tokius kaip ,> = ir <=.
Pirmiausia išbandykime paprastą užklausą, kuri leidžia mums išgauti visų duomenų bazės produktų, kurių „UnitPrice“ yra didesnė nei 20,00, sąrašą:
PASIRINKITE „ProductName“, „UnitPrice“
IŠ produktų
KUR Vieneto kaina> 20.00 val
Tai sudaro keturių produktų sąrašą, kaip parodyta žemiau:
„ProductName“ vieneto kaina
Virėjo Antono „Gumbo Mix“ 21.35 val
Virėjo Antono „Cajun“ prieskoniai 22.00 val
Močiutės „Boysenberry“ užtepėlė 25.00 val
Dėdės Bobo ekologiškos džiovintos kriaušės 30.00 val
Taip pat galime naudoti sąlygą WHERE su eilutės reikšmėmis. Tai iš esmės sutapatina simbolius su skaičiais, A reiškia 1 reikšmę, o Z - 26. Pvz., Visus produktus, kurių pavadinimai prasideda U, V, W, X, Y arba Z, galime rodyti su šia užklausa:
PASIRINKITE „ProductName“
IŠ produktų
WHERE ProductName> = 'T'
Tai duoda rezultatą:
Produkto pavadinimas
Dėdės Bobo ekologiškos džiovintos kriaušės
Diapazonų išreiškimas naudojant ribas
WHERE sąlyga taip pat leidžia mums įgyvendinti vertės diapazono sąlygą naudojant kelias sąlygas. Pavyzdžiui, jei norėtume atsižvelgti į savo užklausą aukščiau ir apriboti rezultatus tik produktais, kurių kainos yra nuo 15.00 iki 20.00, galėtume naudoti šią užklausą:
PASIRINKITE „ProductName“, „UnitPrice“
IŠ produktų
KUR Vieneto kaina> 15.00 IR Vieneto kaina <20.00
Tai duoda žemiau parodytą rezultatą:
„ProductName“ vieneto kaina
Čai 18.00 val
Changas 19.00 val
Išreikšti diapazonus TARP
SQL taip pat pateikia nuorodą TARP sintaksės, kuri sumažina sąlygų, kurias turime įtraukti, skaičių ir daro užklausą lengviau skaitomą. Pvz., Užuot naudojęsi dviem aukščiau pateiktomis WHERE sąlygomis, galėtume išreikšti tą pačią užklausą kaip:
PASIRINKITE „ProductName“, „UnitPrice“
IŠ produktų
KUR Vieneto kaina TARP 15.00 IR 20.00
Kaip ir kitose sąlygose, BETWEEN taip pat veikia su eilutės reikšmėmis. Jei norėtume sudaryti visų šalių, prasidedančių V, W arba X, sąrašą, galėtume naudoti užklausą:
PASIRINKITE „ProductName“
IŠ produktų
Kur „ProductName“ TARP „A“ ir „D“
Tai duoda rezultatą:
Produkto pavadinimas
Anyžių sirupas
Chai
Chang
Virėjo Antono „Gumbo Mix“
Virėjo Antono „Cajun“ prieskoniai
Sąlyga WHERE yra galinga SQL kalbos dalis, leidžianti apriboti rezultatus iki reikšmių, patenkančių į nurodytus diapazonus. Jis labai dažnai naudojamas verslo logikai išreikšti ir turėtų būti kiekvieno duomenų bazės specialisto įrankių rinkinio dalis. Dažnai naudinga įtraukti įprastas sąlygas į saugomą procedūrą, kad ji būtų prieinama tiems, kurie neturi SQL žinių.