The Strukturirani poizvedbeni jezik (SQL) uporabnikom baz podatkov omogoča ustvarjanje prilagojenih poizvedb za pridobivanje informacij iz baz podatkov. V prejšnjem članku smo raziskali pridobivanje informacij iz baze podatkov z uporabo poizvedb SQL SELECT. Razširimo to razpravo in raziščimo, kako lahko napredujete poizvedbe za pridobivanje podatkov, ki ustreza specifičnim pogojem.
Oglejmo si primer, ki temelji na pogosto uporabljenih Northwind baza podatkov, ki je pogosto priložen izdelkom iz zbirke podatkov kot vadnico.
Tu je izvleček iz tabele izdelkov zbirke podatkov:
ProductID | Ime izdelka | ID dobavitelja | QuantityPerUnit | Cena na enoto | UnitsInStock |
---|---|---|---|---|---|
1 | Chai | 1 | 10 škatel x 20 vrečk | 18.00 | 39 |
2 | Chang | 1 | 24 - 12 oz steklenice | 19.00 | 17 |
3 | Janežev sirup | 1 | 12 - 550 ml steklenice | 10.00 | 13 |
4 | Kuharski začimb Cajun Anton | 2 | 48 - 6 oz kozarci | 22.00 | 53 |
5 | Gumbo mešanica kuharja Antona | 2 | 36 škatel | 21.35 | 0 |
6 | Babičin namaz Boysenberry | 3 | 12 - 8 oz kozarci | 25.00 | 120 |
7 | Ekološko posušene hruške strica Boba | 3 | 12 - 1 lb pkgs. | 30.00 | 15 |
Preprosti robni pogoji
Prve omejitve, ki jih bomo postavili za poizvedbo, vključujejo preproste robne pogoje. Te lahko določimo v stavku WHERE poizvedbe SELECT z uporabo preprostih stavkov pogojev, izdelanih s standardnimi operatorji, kot so ,> = in <=.
Najprej poskusimo s preprosto poizvedbo, ki nam omogoča, da izvlečemo seznam vseh izdelkov v bazi, ki imajo UnitPrice več kot 20,00:
IZBERITE ProductName, UnitPrice
IZ izdelkov
KJE UnitPrice> 20.00
Tako dobite seznam štirih izdelkov, kot je prikazano spodaj:
ProductName UnitPrice
Chef Anton's Gumbo Mix 21.35
Začimba kuharja Antona Cajun 22.00
Babičin namaz Boysenberry 25.00
Ekološko posušene hruške strica Boba 30.00
Uporabimo lahko tudi stavek WHERE z vrednostmi niza. To v bistvu enači znake s števili, pri čemer A predstavlja vrednost 1, Z pa vrednost 26. Na primer, lahko prikažemo vse izdelke z imeni, ki se začnejo z U, V, W, X, Y ali Z z naslednjo poizvedbo:
IZBERITE ProductName
IZ izdelkov
WHERE ProductName> = 'T'
Kar daje rezultat:
Ime izdelka
Ekološko posušene hruške strica Boba
Izražanje obsegov z uporabo meja
Stavek WHERE nam omogoča tudi izvajanje pogoja obsega za vrednost z uporabo več pogojev. Če bi na primer želeli uporabiti zgornjo poizvedbo in rezultate omejiti na izdelke s cenami med 15.00 in 20.00, bi lahko uporabili naslednjo poizvedbo:
IZBERITE ProductName, UnitPrice
IZ izdelkov
KJE UnitPrice> 15.00 IN UnitPrice <20.00
Tako dobimo spodnji rezultat:
ProductName UnitPrice
Čaj 18.00
Chang 19.00
Izražanje obsegov MED
SQL ponuja tudi bližnjico med sintakso, ki zmanjšuje število pogojev, ki jih moramo vključiti, in naredi poizvedbo bolj berljivo. Na primer, namesto da bi uporabili zgornja pogoja WHERE, bi lahko izrazili isto poizvedbo kot:
IZBERITE ProductName, UnitPrice
IZ izdelkov
KJE Enota Cena MED 15.00 IN 20.00
Tako kot pri naših drugih pogojih, tudi BETWEEN deluje z vrednostmi niza. Če bi želeli sestaviti seznam vseh držav, ki se začnejo z V, W ali X, bi lahko uporabili poizvedbo:
IZBERITE ProductName
IZ izdelkov
KJE IME PROIZVODA MED "A" in "D"
Kar daje rezultat:
Ime izdelka
Janežev sirup
Chai
Chang
Gumbo mešanica kuharja Antona
Kuharski začimb Cajun Anton
Stavek WHERE je močan del jezika SQL, ki vam omogoča, da rezultate omejite na vrednosti, ki spadajo v določene obsege. Zelo pogosto se uporablja za izražanje poslovne logike in bi moral biti del orodij vsakega strokovnjaka za baze podatkov. Pogosto je koristno, če v shranjeni postopek vključimo pogoste klavzule, da bodo dostopne tistim, ki nimajo znanja SQL.