Výber údajov v rozsahu v SQL

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:

Tabuľka výrobkov
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:

SELECT ProductName, UnitPrice z produktov WHERE UnitPrice> 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.00

Môž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 Boba

Vyjadrenie 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.00

Výsledkom je nižšie uvedený výsledok:

ProductName UnitPrice ------- -------- Chai 18.00 Chang 19.00

Vyjadrenie 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.00

Rovnako 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 Korenie

Klauzula 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.