Резюме :в този урок ще научите как да използвате SQLite WHERE
клауза за определяне на условието за търсене на редове, върнати от заявката.
Въведение в SQLite WHERE
клауза
WHERE
клаузата е незадължителна клауза на SELECT
изявление. Показва се след FROM
клауза като следното изявление:
SELECT
column_list
FROM
table
WHERE
search_condition;
Code language: SQL (Structured Query Language) (sql)
В този пример добавяте WHERE
клауза към SELECT
оператор за филтриране на редове, върнати от заявката. Когато оценявате SELECT
изявление с WHERE
клауза, SQLite използва следните стъпки:
- Първо проверете таблицата в
FROM
клауза. - Второ, оценете условията в
WHERE
клауза, за да получите редовете, които отговарят на тези условия. - Трето, направете крайния набор от резултати въз основа на редовете в предишната стъпка с колони в
SELECT
клауза.
Условието за търсене в WHERE
има следната форма:
left_expression COMPARISON_OPERATOR right_expression
Code language: SQL (Structured Query Language) (sql)
Например, можете да формирате условие за търсене, както следва:
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)
Освен SELECT
израз, можете да използвате WHERE
клауза в UPDATE
и DELETE
изявления.
Оператори за сравнение на SQLite
Оператор за сравнение проверява дали два израза са еднакви. Следната таблица илюстрира операторите за сравнение, които можете да използвате за конструиране на изрази:
Оператор | Значение |
---|---|
= | Равно на |
<> или != | Не е равно на |
< | По-малко от |
> | По-голямо от |
<= | По-малко или равно на |
>= | По-голямо или равно на |
Логически оператори на SQLite
Логическите оператори ви позволяват да тествате истинността на някои изрази. Логическият оператор връща 1, 0 или стойност NULL.
Забележете, че SQLite не предоставя булев тип данни, следователно 1 означава TRUE, а 0 означава FALSE.
Следната таблица илюстрира логическите оператори на SQLite:
Оператор | Значение |
---|---|
ВСИЧКИ | връща 1, ако всички изрази са 1. |
И | връща 1, ако и двата израза са 1, и 0, ако един от изразите е 0. |
ВСЯКАКВА | връща 1, ако някое от набор от сравнения е 1. |
МЕЖДУ | връща 1, ако стойността е в рамките на диапазон. |
СЪЩЕСТВУВА | връща 1, ако подзаявка съдържа редове. |
В | връща 1, ако дадена стойност е в списък със стойности. |
Харесвам | връща 1, ако стойност съвпада с модел |
НЕ | обръща стойността на други оператори като NOT EXISTS, NOT IN, NOT BETWEEN и т.н. |
ИЛИ | връща true, ако някой от изразите е 1 |
SQLite WHERE
примери за клаузи
Ще използваме tracks
таблица в примерната база данни, за да илюстрира как да използвате WHERE
клауза.
Операторът за равенство (=
) е най-често използваният оператор. Например, следната заявка използва WHERE
клауза на оператора за равенство, за да намерите всички песни в албума с идентификатор 1:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
SQLite сравнява стойностите, съхранени в AlbumId
колона с литерална стойност 1
за да провери дали са равни. Връщат се само редовете, които отговарят на условието.
Когато сравнявате две стойности, трябва да се уверите, че те са от един и същ тип данни. Трябва да сравнявате числа с числа, низ с низове и т.н.
В случай, че сравнявате стойности в различни типове данни, например низ с число, SQLite трябва да извърши неявни преобразувания на типове данни, но като цяло трябва да избягвате да правите това.
Използвате логическия оператор, за да комбинирате изрази. Например, за да получите песни от албум 1 с дължина по-голяма от 200 000 милисекунди, използвате следното изявление:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1
AND milliseconds > 250000;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Изявлението използва два израза albumid = 1
и milliseconds > 250000
. Той използва AND
логически оператор за комбиниране на тези изрази.
SQLite WHERE
клауза с LIKE
пример за оператор
Понякога може да не си спомняте точно данните, които искате да търсите. В този случай извършвате неточно търсене с помощта на LIKE
оператор.
Например, за да намерите кои песни са композирани от Смит, използвате LIKE
оператор, както следва:
SELECT
name,
albumid,
composer
FROM
tracks
WHERE
composer LIKE '%Smith%'
ORDER BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Получавате песни, композирани от R.A. Смит-Дизел, Ейдриън Смит и др.
SQLite WHERE
клауза с IN
пример за оператор
IN
операторът ви позволява да проверите дали дадена стойност е в списък от разделен със запетая списък със стойности. Например, за да намерите песни, които имат идентификатор на тип медия 2 или 3, използвате IN
оператор, както е показано в следното изявление:
SELECT
name,
albumid,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (2, 3);
Code language: SQL (Structured Query Language) (sql)
Опитайте го
В този урок научихте как да използвате SQLite WHERE
клауза за филтриране на редове в крайния набор от резултати с помощта на сравнение и логически оператори.