Skip to main content

Výběr dat v rozsahu v SQL

Anonim

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ů
ProductIDJméno výrobkuID dodavateleQuantityPerUnitJednotková cenaJednotkyInStock
1Chai110 krabiček x 20 sáčků18.0039
2Chang124 - 12 oz lahví19.0017
3Anýzový sirup112 - 550 ml lahví10.0013
4Šéfkuchař Anton Cajun koření248 - 6 oz džbánů22.0053
5Šéfkuchař Anton's Gumbo Mix236 krabic21.350
6Grandma Boysenberry Spread312 - 8 oz džbánů25.00120
7Strýc Bob je organické sušené hrušky312 - 1 lb pkgs.30.0015

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.