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:
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:
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,00Můž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 BobyExpresní 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.00Výsledkem je níže uvedený výsledek:
ProductName UnitPrice ------- -------- Chai 18.00 Změna 19.00Expresní 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.00Stejně 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.