Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite WHERE
klauzula określająca warunek wyszukiwania wierszy zwróconych przez zapytanie.
Wprowadzenie do SQLite WHERE
klauzula
WHERE
klauzula jest opcjonalną klauzulą SELECT
oświadczenie. Pojawia się po FROM
klauzulę jako następujące oświadczenie:
SELECT
column_list
FROM
table
WHERE
search_condition;
Code language: SQL (Structured Query Language) (sql)
W tym przykładzie dodajesz WHERE
klauzula SELECT
instrukcja do filtrowania wierszy zwracanych przez zapytanie. Podczas oceny SELECT
oświadczenie z WHERE
klauzula, SQLite wykonuje następujące kroki:
- Najpierw sprawdź tabelę w
FROM
klauzula. - Po drugie, oceń warunki w
WHERE
klauzulę, aby uzyskać wiersze spełniające te warunki. - Po trzecie, utwórz ostateczny zestaw wyników na podstawie wierszy z poprzedniego kroku z kolumnami w
SELECT
klauzula.
Warunek wyszukiwania w WHERE
ma następującą postać:
left_expression COMPARISON_OPERATOR right_expression
Code language: SQL (Structured Query Language) (sql)
Na przykład możesz utworzyć warunek wyszukiwania w następujący sposób:
WHERE column_1 = 100;
WHERE column_2 IN (1,2,3);
WHERE column_3 LIKE 'An%';
WHERE column_4 BETWEEN 10 AND 20;
Code language: SQL (Structured Query Language) (sql)
Oprócz SELECT
oświadczenie, możesz użyć WHERE
klauzula w UPDATE
i DELETE
oświadczenia.
Operatory porównania SQLite
Operator porównania sprawdza, czy dwa wyrażenia są takie same. Poniższa tabela ilustruje operatory porównania, których można użyć do konstruowania wyrażeń:
Operator | Znaczenie |
---|---|
= | Równe |
<> lub != | Nie równa |
< | Mniej niż |
Większe niż | |
<= | Mniejsze lub równe |
>= | Większe lub równe |
Operatory logiczne SQLite
Operatory logiczne pozwalają sprawdzić prawdziwość niektórych wyrażeń. Operator logiczny zwraca 1, 0 lub wartość NULL.
Zauważ, że SQLite nie zapewnia typu danych logicznych, dlatego 1 oznacza PRAWDA, a 0 oznacza FAŁSZ.
Poniższa tabela ilustruje operatory logiczne SQLite:
Operator | Znaczenie |
---|---|
WSZYSTKIE | zwraca 1, jeśli wszystkie wyrażenia mają wartość 1. |
ORAZ | zwraca 1, jeśli oba wyrażenia mają wartość 1, i 0, jeśli jedno z wyrażeń ma wartość 0. |
DOWOLNY | zwraca 1, jeśli którekolwiek z zestawu porównań wynosi 1. |
POMIĘDZY | zwraca 1, jeśli wartość mieści się w zakresie. |
ISTNIEJE | zwraca 1, jeśli podzapytanie zawiera jakiekolwiek wiersze. |
W | zwraca 1, jeśli wartość znajduje się na liście wartości. |
LUBIĘ | zwraca 1, jeśli wartość pasuje do wzorca |
NIE | odwraca wartość innych operatorów, takich jak NOT EXISTS, NOT IN, NOT BETWEEN itp. |
LUB | zwraca prawdę, jeśli jedno z wyrażeń wynosi 1 |
SQLite WHERE
przykłady klauzul
Użyjemy tracks
tabeli w przykładowej bazie danych, aby zilustrować, jak używać WHERE
klauzula.
Operator równości (=
) jest najczęściej używanym operatorem. Na przykład poniższe zapytanie używa WHERE
klauzula operatora równości, aby znaleźć wszystkie utwory w albumie o identyfikatorze 1:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1;
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
SQLite porównuje wartości przechowywane w AlbumId
kolumna z wartością literału 1
aby sprawdzić, czy są równe. Zwracane są tylko wiersze, które spełniają warunek.
Porównując dwie wartości, należy upewnić się, że są to dane tego samego typu. Powinieneś porównać liczby z liczbami, ciąg z ciągami itp.
W przypadku porównywania wartości w różnych typach danych, np. ciąg znaków z liczbą, SQLite musi wykonać niejawne konwersje typów danych, ale generalnie należy tego unikać.
Do łączenia wyrażeń używa się operatora logicznego. Na przykład, aby uzyskać utwory z albumu 1, które mają długość większą niż 200 000 milisekund, użyj następującej instrukcji:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1
AND milliseconds > 250000;
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
W instrukcji użyto dwóch wyrażeń albumid = 1
i milliseconds > 250000
. Używa AND
operator logiczny do łączenia tych wyrażeń.
SQLite WHERE
klauzula z LIKE
przykład operatora
Czasami możesz nie pamiętać dokładnie danych, które chcesz przeszukać. W takim przypadku przeprowadzasz niedokładne wyszukiwanie za pomocą LIKE
operatora.
Na przykład, aby znaleźć utwory skomponowane przez Smitha, użyj LIKE
operatora w następujący sposób:
SELECT
name,
albumid,
composer
FROM
tracks
WHERE
composer LIKE '%Smith%'
ORDER BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
Otrzymasz utwory skomponowane przez R.A. Smith-Diesel, Adrian Smith itp.
SQLite WHERE
klauzula z IN
przykład operatora
IN
Operator umożliwia sprawdzenie, czy wartość znajduje się na liście wartości oddzielonych przecinkami. Na przykład, aby znaleźć utwory, których identyfikator typu nośnika to 2 lub 3, użyj IN
operatora, jak pokazano w następującym oświadczeniu:
SELECT
name,
albumid,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (2, 3);
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
W tym samouczku nauczyłeś się korzystać z SQLite WHERE
klauzula do filtrowania wierszy w końcowym zestawie wyników za pomocą operatorów porównania i logicznych.