Strukturalny język zapytań (SQL) zapewnia użytkownikom bazy danych możliwość tworzenia niestandardowych zapytań w celu wyodrębnienia informacji z baz danych. We wcześniejszym artykule omawialiśmy wydobywanie informacji z bazy danych za pomocą zapytań SQL SELECT. Rozwińmy tę dyskusję i zbadajmy, jak możesz wykonywać zaawansowane zapytania do pobierania danych, które spełnia określone warunki.
Rozważmy przykład oparty na powszechnie używanym Północny wiatr bazy danych, która często jest dostarczana z produktami bazodanowymi jako samouczek.
Oto fragment tabeli Produkt w bazie danych:
ID produktu | Nazwa produktu | Identyfikator dostawcy | Ilość sztuk na jednostkę | Cena jednostkowa | Jednostki w magazynie |
---|---|---|---|---|---|
1 | Chai | 1 | 10 pudełek x 20 torebek | 18.00 | 39 |
2 | Chang | 1 | Butelki 24 - 12 uncji | 19.00 | 17 |
3 | Syrop anyżowy | 1 | 12 - 550 ml butelek | 10.00 | 13 |
4 | Przyprawa Cajun szefa kuchni Antona | 2 | 48 - 6 uncji słoików | 22.00 | 53 |
5 | Gumbo Mix szefa kuchni Antona | 2 | 36 pudełek | 21.35 | 0 |
6 | Babcia Boysenberry Spread | 3 | 12 - 8 uncji słoików | 25.00 | 120 |
7 | Organiczne Suszone Gruszki Wuja Boba | 3 | 12 - 1 funtowe opakowania. | 30.00 | 15 |
Proste warunki brzegowe
Pierwsze ograniczenia, jakie nałożymy na nasze zapytanie, dotyczą prostych warunków brzegowych. Możemy je określić w klauzuli WHERE zapytania SELECT, używając prostych instrukcji warunkowych skonstruowanych za pomocą standardowych operatorów, takich jak , >= i <=.
Najpierw wypróbujmy proste zapytanie, które pozwoli nam wyodrębnić listę wszystkich produktów w bazie danych, których cena jednostkowa jest większa niż 20,00:
SELECT NazwaProduktu, CenaJednostkowa
Z produktów
GDZIE cena jednostkowa >20,00
Daje to listę czterech produktów, jak pokazano poniżej:
NazwaProduktu CenaJednostkowa
Mieszanka Gumbo Szefa Antona 21,35
Przyprawa Cajun szefa kuchni Antona 22.00
Babcia Boysenberry Spread 25.00
Organiczne Suszone Gruszki Wujka Boba 30,00
Możemy również użyć klauzuli WHERE z wartościami łańcuchowymi. To w zasadzie przyrównuje znaki do liczb, przy czym A reprezentuje wartość 1, a Z reprezentuje wartość 26. Na przykład możemy pokazać wszystkie produkty o nazwach zaczynających się od U, V, W, X, Y lub Z za pomocą następującego zapytania:
WYBIERZ NazwaProduktu
Z produktów
GDZIE NazwaProduktu >= 'T'
Co daje wynik:
Nazwa produktu
Organiczne Suszone Gruszki Wuja Boba
Wyrażanie zakresów za pomocą granic
Klauzula WHERE pozwala nam również na zaimplementowanie warunku zakresu na wartości przy użyciu wielu warunków. Na przykład, gdybyśmy chcieli skorzystać z powyższego zapytania i ograniczyć wyniki do produktów o cenach między 15.00 a 20.00, moglibyśmy użyć następującego zapytania:
SELECT NazwaProduktu, CenaJednostkowa
Z produktów
GDZIE CenaJednostkowa> 15,00 I CenaJednostkowa <20,00
Daje to wynik pokazany poniżej:
NazwaProduktu CenaJednostkowa
czaj 18.00
19.00
Wyrażanie zakresów za pomocą BETWEEN
SQL udostępnia również skrót BETWEEN składni, który zmniejsza liczbę warunków, które musimy uwzględnić, i sprawia, że zapytanie jest bardziej czytelne. Na przykład, zamiast używać dwóch powyższych warunków WHERE, możemy wyrazić to samo zapytanie jako:
SELECT NazwaProduktu, CenaJednostkowa
Z produktów
GDZIE Cena Jednostkowa POMIĘDZY 15.00 A 20.00
Podobnie jak w przypadku innych naszych klauzul warunkowych, BETWEEN działa również z wartościami łańcuchowymi. Gdybyśmy chcieli stworzyć listę wszystkich krajów zaczynających się na V, W lub X, moglibyśmy użyć zapytania:
WYBIERZ NazwaProduktu
Z produktów
GDZIE Nazwa produktu POMIĘDZY „A” i „D”
Co daje wynik:
Nazwa produktu
Syrop anyżowy
Chai
Chang
Gumbo Mix szefa kuchni Antona
Przyprawa Cajun szefa kuchni Antona
Klauzula WHERE jest potężną częścią języka SQL, która pozwala ograniczyć wyniki do wartości mieszczących się w określonych zakresach. Jest bardzo często używany do wyrażania logiki biznesowej i powinien być częścią zestawu narzędzi każdego profesjonalisty ds. baz danych. Często pomocne jest włączenie wspólnych klauzul do procedury składowanej, aby była ona dostępna dla osób bez znajomości języka SQL.