Výběr dat v rozsahu v SQL

Představujeme klauzuli WHERE a podmínku BETWEEN

Jazyk strukturovaných dotazů (SQL) poskytuje uživatelům databáze možnost vytvářet přizpůsobené dotazy pro získávání informací z databází. V předchozím článku jsme zkoumali extrahování informací z databáze pomocí dotazů SQL SELECT . Rozbaleme tuto diskusi a prozkoumejte, jak můžete provést pokročilé dotazy, abyste mohli načíst data, která odpovídají konkrétním podmínkám.

Podívejme se na příklad založený na běžně používaných databázích Northwind, které často slouží jako výukový program pro databázové produkty.

Zde je výňatek z tabulky produktů v databázi:

Tabulka výrobků
ProductID Jméno výrobku ID dodavatele QuantityPerUnit Jednotková cena JednotkyInStock
1 Chai 1 10 krabiček x 20 sáčků 18.00 39
2 Chang 1 24 - 12 oz lahví 19.00 17
3 Anýzový sirup 1 12 - 550 ml lahví 10.00 13
4 Šéfkuchař Anton Cajun koření 2 48 - 6 oz džbánů 22.00 53
5 Šéfkuchař Anton's Gumbo Mix 2 36 krabic 21,35 0
6 Grandma Boysenberry Spread 3 12 - 8 oz džbánů 25.00 120
7 Strýc Bob je organické sušené hrušky 3 12 - 1 lb pkgs. 30.00 15

Jednoduché hraniční podmínky

První omezení, která na náš dotaz položíme, zahrnují jednoduché hraniční podmínky. Můžeme je specifikovat v klauzuli WHERE dotazu SELECT pomocí jednoduchých příkazů podmínek vytvořených se standardními operátory, jako jsou <,>,> =, a <=.


Nejdříve zkusme jednoduchý dotaz, který nám umožní získat seznam všech produktů v databázi, které mají UnitPrice více než 20.00:

SELECT ProductName, UnitPrice PRODUCTS FROM WHERE UnitPrice> 20.00

Toto vytvoří seznam čtyř produktů, jak je uvedeno níže:

ProductName UnitPrice ------- -------- Šéfkuchař Anton Gumbo Mix 21,35 Šéfkuchař Anton Cajun Koření 22,00 Bábovka Boysenberry Spread 25,00 Organické sušené hrušky strýce Boby 30,00

Můžeme také použít klauzuli WHERE s hodnotami řetězce. Toto v podstatě rovná znaky na čísla, přičemž A představuje hodnotu 1 a Z představuje hodnotu 26. Například bychom mohli zobrazit všechny produkty s názvy začínajícími U, V, W, X, Y nebo Z s následujícím dotazem:

SELECT ProductName z produktů WHERE ProductName> = 'T'

Výsledkem je:

ProductName ------- Organické sušené hrušky strýce Boby

Expresní rozsahy pomocí hranic

Klauzule WHERE nám také umožňuje implementovat podmínku rozsahu na hodnotu pomocí více podmínek. Například, pokud bychom chtěli vzít náš dotaz výše a omezit výsledky na produkty s cenami mezi 15.00 a 20.00, mohli bychom použít následující dotaz:

SELECT ProductName, UnitPrice FROM PRODUCTS WHERE UnitPrice> 15.00 a UnitPrice <20.00

Výsledkem je níže uvedený výsledek:

ProductName UnitPrice ------- -------- Chai 18.00 Změna 19.00

Expresní rozsahy s MEZINÁRODNÍM

SQL také poskytuje zkratku BETWEEN syntaxi, která snižuje počet podmínek, které musíme zahrnout a činí dotaz čitelnější. Například namísto použití výše uvedených dvou podmínek WHERE bychom mohli vyjádřit stejný dotaz jako:

SELECT ProductName, UnitPrice z produktů WHERE UnitPrice BETWEEN 15.00 a 20.00

Stejně jako u ostatních podmínek, BETWEEN pracuje také s hodnotami řetězce. Pokud bychom chtěli vytvořit seznam všech zemí začínajících V, W nebo X, mohli bychom použít dotaz:

SELECT PRODUCTName z produktů WHERE ProductName BETWEEN "A" a "D"

Výsledkem je:

ProductName ------- Anýzový sirup Chai Chang šéfkuchař Anton's Gumbo mix šéfkuchař Anton Cajun koření

Klauzule WHERE je silná část jazyka SQL, která umožňuje omezit výsledky na hodnoty spadající do určených rozsahů. Je velmi často používán k tomu, aby pomohl vyjádřit obchodní logiku a měl by být součástí každého toolkitu databáze každého profesionála.

Často je užitečné zahrnout do uložené procedury společné klauzule, aby byly přístupné těm, kteří nemají znalosti SQL.