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
FROMdoložka. - Zadruhé vyhodnoťte podmínky v
WHEREklauzule, 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
SELECTdoložka.
Podmínka vyhledávání v WHERE má následující tvar:
left_expression COMPARISON_OPERATOR right_expressionCode 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ů.