Izbor podataka unutar granica u SQL-u

Upoznavanje sa WHERE klauzulom i uslovima BETWEEN

Strukturni jezik upita (SQL) omogućava korisnicima baze podataka mogućnost kreiranja prilagođenih upita za izdvajanje podataka iz baza podataka. U ranijem članku, istražili smo izvlačenje informacija iz baze podataka koristeći SQL SELECT upite . Proširićemo ovu diskusiju i istražiti kako možete obaviti napredne upite da biste preuzeli podatke koji odgovaraju specifičnim uslovima.

Hajde da razmotrimo primer zasnovan na najčešće korišćeni bazi podataka Northwind, koji često isporučuje proizvode baze podataka kao tutorijal.

Evo izvoda iz tabele proizvoda baze podataka:

Tabela proizvoda
ProductID Ime proizvoda SupplierID QuantityPerUnit Cijena po jedinici UnitsInStock
1 Chai 1 10 kutija x 20 kesa 18.00 39
2 Chang 1 24 - 12 oz boca 19.00 17
3 Aniseed Syrup 1 12 - 550 ml boca 10.00 13
4 Chef Anton's Cajun sezoniranje 2 48 - 6 oz tegle 22.00 53
5 Chef Anton's Gumbo Mix 2 36 kutija 21.35 0
6 Bajina božićna bundeva 3 12 - 8 oz tegle 25.00 120
7 Ujače Bobove organske suve kruške 3 12 - 1 lb pkgs. 30.00 15

Jednostavne granične uvjete

Prva ograničenja koja ćemo postaviti na naše pitanje uključuju jednostavne granične uslove. Ove podatke možemo odrediti u WHERE klauzuli SELECT upita, koristeći jednostavne izjave stanja konstruisane sa standardnim operatorima, kao što su <,>,> =, i <=.


Prvo, probajte jednostavno upite koji nam omogućavaju da izvučemo listu svih proizvoda u bazi podataka koji imaju UnitPrice od više od 20.00:

SELECT ProductName, UnitPrice FROM proizvodi Gdje UnitPrice> 20.00

Ovo proizvodi listu od četiri proizvoda, kako je prikazano u nastavku:

ProductName UnitPrice ------- -------- Chef Anton's Gumbo Mix 21.35 Chef Anton's Cajun Začini 22.00 Bubuljice Boysenberry Spread 25.00 Organske sušene Kruške ujka Bob 30.00

Takođe možemo koristiti i WHERE klauzulu sa vrijednostima stringova. Ovo u osnovi izjednačava karaktere sa brojevima, a A predstavlja vrijednost 1 i Z predstavlja vrijednost 26. Na primer, mogli smo prikazati sve proizvode sa imenima koji počinju sa U, V, W, X, Y ili Z s sljedećim upitom:

SELECT ProductName FROM products WHERE ProductName> = 'T'

Koji proizvodi rezultat:

ProductName ------- Organske sušene kruške ujka Bob

Izražavanje granica pomoću granica

Klauzula WHERE takođe dozvoljava da primenimo uslov raspona na vrednost koristeći više uslova. Na primer, ako želimo da iznad naše upite i ograničimo rezultate na proizvode s cenama između 15.00 i 20.00, mogli bismo da koristimo sljedeći upit:

SELECT ProductName, UnitPrice FROM proizvodi Gdje UnitPrice> 15.00 I UnitPrice <20.00

Ovo daje rezultat prikazan dole:

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

Izražavanje opsega sa BETWEEN-om

SQL takođe nudi prečicu BETWEEN sintaksa koja smanjuje broj uslova koje trebamo uključiti i učiniti da upit bude čitljiviji. Na primjer, umjesto korištenja dvije gore navedene uslove WHERE, mogli bismo izraziti isti upit kao:

SELECT ProductName, UnitPrice FROM proizvodi GDE JedinicaPrice između 15.00 i 20.00

Kao i kod ostalih uslova klauzula, BETWEEN radi sa vrijednostima stringa. Ako želimo da napravimo listu svih zemalja počevši od V, W ili X, mogli bismo da koristimo upit:

SELECT ProductName FROM products WHERE ProductName IZMEĐU "A" i "D"

Koji proizvodi rezultat:

ProductName ------- Aniseed Syrup Chai Chang Chef Anton's Gumbo Mix Chef Anton's Cajun Začini

Klauzula WHERE je moćan deo SQL jezika koji vam omogućava da ograničite rezultate na vrijednosti koje spadaju u određene opsege. Veoma se obično koristi za ekspresiju poslovne logike i treba da bude deo svakog alata za profesionalce svih baza podataka.

Često je korisno uobličiti obične klauzule u uskladištenu proceduru kako bi je postala dostupna onima bez znanja SQL-a.