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
FROMklauzula. - Po drugie, oceń warunki w
WHEREklauzulę, 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
SELECTklauzula.
Warunek wyszukiwania w WHERE ma następującą postać:
left_expression COMPARISON_OPERATOR right_expressionCode 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.