Skip to main content

Výber údajov v rozsahu v SQL

Anonim

Š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 produktuMeno ProduktuSupplierIDQuantityPerUnitJednotková cenaUnitsInStock
1chai110 krabičiek x 20 vreciek18.0039
2chang124 - 12 oz fľaše19.0017
3Anízový sirup112 - 550 ml fľaše10.0013
4Šéfkuchár Anton Cajun248 - 6 oz pohárov22.0053
5Šéfkuchár Anton Gumbo Mix236 krabičiek21.350
6Babička Boysenberry Spread312 - 8 oz pohárov25.00120
7Organické sušené hrušky strýka Boba312 - 1 lb pkgs.30.0015

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.