Predstavujeme klauzulu WHERE a podmienku BETWEEN
Štruktúrovaný jazyk dopytov (SQL) poskytuje používateľom databázy možnosť vytvárať prispôsobené dopyty na extrahovanie informácií z databáz. V predchádzajúcom článku sme skúmali extrahovanie informácií z databázy pomocou SQL SELECT dotazov . Rozoberme túto diskusiu a preskúmame, ako môžete vykonať pokročilé dopyty na získanie údajov, ktoré zodpovedajú konkrétnym podmienkam.
Pozrime sa na príklad založený na bežne používanej databáze Northwind, ktorá často poskytuje databázové produkty ako výukový program.
Tu je výňatok z tabuľky Produktová databáza:
Identifikačné číslo produktu | Meno Produktu | SupplierID | QuantityPerUnit | Jednotková cena | UnitsInStock |
---|---|---|---|---|---|
1 | chai | 1 | 10 krabičiek x 20 vreciek | 18.00 | 39 |
2 | chang | 1 | 24 - 12 oz fľaše | 19.00 | 17 |
3 | Anízový sirup | 1 | 12 - 550 ml fľaše | 10.00 | 13 |
4 | Šéfkuchár Anton Cajun | 2 | 48 - 6 oz pohárov | 22.00 | 53 |
5 | Šéfkuchár Anton Gumbo Mix | 2 | 36 krabičiek | 21,35 | 0 |
6 | Babička Boysenberry Spread | 3 | 12 - 8 oz pohárov | 25.00 | 120 |
7 | Organické sušené hrušky strýka Boba | 3 | 12 - 1 lb pkgs. | 30.00 | 15 |
Jednoduché hraničné podmienky
Prvé obmedzenia, ktoré kladieme na náš dopyt, zahŕňajú jednoduché hraničné podmienky. Môžeme ich špecifikovať v klauzule WHERE dotazu SELECT pomocou jednoduchých vyhlásení o podmienkach konštruovaných so štandardnými operátormi, ako napríklad <,>,> = a <=.
Po prvé, skúsme jednoduchý dotaz, ktorý nám umožňuje získať zoznam všetkých produktov v databáze, ktoré majú UnitPrice vyššiu ako 20.00:
Toto obsahuje zoznam štyroch produktov, ako je uvedené nižšie:
ProductName UnitPrice ------- -------- Šéfkuchár Anton Gumbo Mix 21.35 Šéfkuchár Anton Cajun Korekcia 22.00 Bábätka Boysenberry Spread 25.00 Organické sušené hrušky strýča Boba 30.00Môžeme tiež použiť klauzulu WHERE s hodnotami reťazca. Toto v podstate rovná znaky na čísla, pričom A predstavuje hodnotu 1 a Z predstavuje hodnotu 26. Napríklad sme mohli zobraziť všetky produkty s názvami začínajúcimi U, V, W, X, Y alebo Z s nasledujúcim dotazom:
SELECT ProductName z produktov WHERE ProductName> = 'T'Ktorý prináša výsledok:
ProductName ------- Organické sušené hrušky strýka BobaVyjadrenie rozsahov pomocou hraníc
Klauzula WHERE nám tiež umožňuje implementovať podmienku rozsahu na hodnotu pomocou viacerých podmienok. Napríklad, ak by sme chceli vziať náš dotaz vyššie a obmedziť výsledky na produkty s cenami medzi 15.00 a 20.00, mohli by sme použiť nasledujúci dotaz:
SELECT ProductName, UnitPrice z produktov WHERE UnitPrice> 15.00 AND UnitPrice <20.00Výsledkom je nižšie uvedený výsledok:
ProductName UnitPrice ------- -------- Chai 18.00 Chang 19.00Vyjadrenie rozsahu s MEDZI
SQL tiež poskytuje skratku BETWEEN syntax, ktorá znižuje počet podmienok, ktoré potrebujeme zahrnúť a robí dotaz čitateľnejší. Napríklad, namiesto použitia dvoch vyššie uvedených podmienok WHERE by sme mohli vyjadriť rovnaký dotaz ako:
SELECT ProductName, UnitPrice z produktov WHERE UnitPrice BETWEEN 15.00 a 20.00Rovnako ako v ostatných podmienkach, BETWEEN pracuje aj s hodnotami reťazca. Ak by sme chceli vytvoriť zoznam všetkých krajín začínajúcich na V, W alebo X, mohli by sme použiť dotaz:
ZOZNAM ProductName z produktov WHERE ProductName BETWEEN "A" a "D"Ktorý prináša výsledok:
ProductName ------- Anýzový sirup Chai Chang šéfkuchár Anton Gumbo Mix šéfkuchár Anton Cajun KorenieKlauzula WHERE je silná časť jazyka SQL, ktorá umožňuje obmedziť výsledky na hodnoty spadajúce do určených rozsahov. Je veľmi často používaný na vyjadrenie obchodnej logiky a mal by byť súčasťou súboru nástrojov pre každú databázu profesionálov.
Často je užitočné zahrnúť do uloženej procedúry spoločné klauzuly, aby boli prístupné tým, ktorí nemajú znalosti SQL.