Shrnutí :v tomto tutoriálu se naučíte používat SQLite WHERE
klauzule k určení podmínky vyhledávání pro řádky vrácené dotazem.
Úvod do SQLite WHERE
klauzule
WHERE
klauzule je volitelná klauzule SELECT
prohlášení. Zobrazí se za FROM
klauzule jako následující prohlášení:
SELECT
column_list
FROM
table
WHERE
search_condition;
Code language: SQL (Structured Query Language) (sql)
V tomto příkladu přidáte WHERE
klauzule do SELECT
k filtrování řádků vrácených dotazem. Při vyhodnocování SELECT
příkaz s WHERE
klauzule SQLite používá následující kroky:
- Nejprve zkontrolujte tabulku v
FROM
doložka. - Zadruhé vyhodnoťte podmínky v
WHERE
klauzule, abyste získali řádky, které tyto podmínky splnily. - Za třetí, vytvořte konečnou sadu výsledků na základě řádků v předchozím kroku se sloupci v
SELECT
doložka.
Podmínka vyhledávání v WHERE
má následující tvar:
left_expression COMPARISON_OPERATOR right_expression
Code language: SQL (Structured Query Language) (sql)
Podmínku hledání můžete vytvořit například takto:
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)
Kromě SELECT
můžete použít příkaz WHERE
klauzule v UPDATE
a DELETE
prohlášení.
Operátory porovnání SQLite
Operátor porovnání testuje, zda jsou dva výrazy stejné. Následující tabulka ukazuje operátory porovnání, které můžete použít k vytvoření výrazů:
Operátor | Význam |
---|---|
= | Rovno |
<> nebo != | Nerovná se |
< | Méně než |
> | Větší než |
<= | Menší nebo rovno |
>= | Větší nebo rovno |
Logické operátory SQLite
Logické operátory umožňují testovat pravdivost některých výrazů. Logický operátor vrátí hodnotu 1, 0 nebo NULL.
Všimněte si, že SQLite neposkytuje booleovský datový typ, proto 1 znamená PRAVDA a 0 znamená NEPRAVDA.
Následující tabulka ilustruje logické operátory SQLite:
Operátor | Význam |
---|---|
VŠECHNY | vrací 1, pokud jsou všechny výrazy 1. |
A | vrací 1, pokud jsou oba výrazy 1, a 0, pokud je jeden z výrazů 0. |
JAKÉKOLI | vrací 1, pokud je některé ze sady porovnání 1. |
MEZI | vrátí 1, pokud je hodnota v rozsahu. |
EXISTUJE | vrátí 1, pokud poddotaz obsahuje nějaké řádky. |
IN | vrátí 1, pokud je hodnota v seznamu hodnot. |
LIKE | vrátí 1, pokud se hodnota shoduje se vzorem |
NE | obrátí hodnotu ostatních operátorů, jako je NOT EXISTS, NOT IN, NOT BETWEEN atd. |
NEBO | vrací hodnotu true, pokud je jeden z výrazů 1 |
SQLite WHERE
příklady vět
Použijeme tracks
tabulka ve vzorové databázi pro ilustraci použití WHERE
doložka.
Operátor rovnosti (=
) je nejběžněji používaný operátor. Například následující dotaz používá WHERE
klauzule operátor rovnosti k nalezení všech skladeb v albu s ID 1:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
SQLite porovnává hodnoty uložené v AlbumId
sloupec s doslovnou hodnotou 1
otestovat, zda jsou si rovni. Jsou vráceny pouze řádky, které splňují podmínku.
Když porovnáváte dvě hodnoty, musíte zajistit, aby byly stejného datového typu. Měli byste porovnávat čísla s čísly, řetězec s řetězci atd.
V případě, že porovnáváte hodnoty v různých typech dat, např. řetězec s číslem, musí SQLite provádět implicitní převody datových typů, ale obecně byste se tomu měli vyhnout.
Ke kombinování výrazů se používá logický operátor. Chcete-li například získat skladby z alba 1, které mají délku větší než 200 000 milisekund, použijte následující příkaz:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1
AND milliseconds > 250000;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Příkaz používal dva výrazy albumid = 1
a milliseconds > 250000
. Používá AND
logický operátor ke kombinaci těchto výrazů.
SQLite WHERE
klauzule s LIKE
příklad operátoru
Někdy si možná nepamatujete přesně data, která chcete hledat. V tomto případě provedete nepřesné vyhledávání pomocí LIKE
operátor.
Chcete-li například zjistit, které skladby složil Smith, použijte LIKE
operátor takto:
SELECT
name,
albumid,
composer
FROM
tracks
WHERE
composer LIKE '%Smith%'
ORDER BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Získáte skladby složené R.A. Smith-Diesel, Adrian Smith atd.
SQLite WHERE
klauzule s IN
příklad operátoru
IN
operátor umožňuje zkontrolovat, zda je hodnota v seznamu hodnot oddělených čárkami. Chcete-li například najít skladby, které mají ID typu média 2 nebo 3, použijte IN
operátor, jak je uvedeno v následujícím prohlášení:
SELECT
name,
albumid,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (2, 3);
Code language: SQL (Structured Query Language) (sql)
Zkuste to
V tomto tutoriálu jste se naučili používat SQLite WHERE
klauzule k filtrování řádků v konečné sadě výsledků pomocí porovnání a logických operátorů.