Riepilogo :in questo tutorial imparerai come usare SQLite WHERE
clausola per specificare la condizione di ricerca per le righe restituite dalla query.
Introduzione a SQLite WHERE
clausola
Il WHERE
è una clausola facoltativa di SELECT
dichiarazione. Appare dopo il FROM
clausola come la seguente affermazione:
SELECT
column_list
FROM
table
WHERE
search_condition;
Code language: SQL (Structured Query Language) (sql)
In questo esempio, aggiungi un WHERE
clausola al SELECT
istruzione per filtrare le righe restituite dalla query. Quando si valuta un SELECT
dichiarazione con un WHERE
clausola, SQLite utilizza i seguenti passaggi:
- Per prima cosa, controlla la tabella nel
FROM
clausola. - In secondo luogo, valuta le condizioni nel
WHERE
clausola per ottenere le righe che soddisfano queste condizioni. - In terzo luogo, crea il risultato finale impostato in base alle righe del passaggio precedente con le colonne nel
SELECT
clausola.
La condizione di ricerca in WHERE
ha la seguente forma:
left_expression COMPARISON_OPERATOR right_expression
Code language: SQL (Structured Query Language) (sql)
Ad esempio, puoi formare una condizione di ricerca come segue:
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)
Oltre a SELECT
istruzione, puoi usare il WHERE
clausola nel UPDATE
e DELETE
dichiarazioni.
Operatori di confronto SQLite
Un operatore di confronto verifica se due espressioni sono uguali. La tabella seguente illustra gli operatori di confronto che puoi utilizzare per costruire espressioni:
Operatore | Significato |
---|---|
= | Uguale a |
<> o != | Non uguale a |
< | Meno di |
> | Maggiore di |
<= | Inferiore o uguale a |
>= | Maggiore o uguale a |
Operatori logici SQLite
Gli operatori logici consentono di verificare la verità di alcune espressioni. Un operatore logico restituisce 1, 0 o un valore NULL.
Si noti che SQLite non fornisce il tipo di dati booleano, quindi 1 significa VERO e 0 significa FALSO.
La tabella seguente illustra gli operatori logici di SQLite:
Operatore | Significato |
---|---|
TUTTI | restituisce 1 se tutte le espressioni sono 1. |
E | restituisce 1 se entrambe le espressioni sono 1 e 0 se una delle espressioni è 0. |
QUALSIASI | restituisce 1 se uno qualsiasi di un insieme di confronti è 1. |
TRA | restituisce 1 se un valore rientra in un intervallo. |
ESISTE | restituisce 1 se una sottoquery contiene righe. |
IN | restituisce 1 se un valore è in un elenco di valori. |
MI PIACE | restituisce 1 se un valore corrisponde a un modello |
NON | inverte il valore di altri operatori come NOT EXISTS, NOT IN, NOT BETWEEN, ecc. |
O | restituisce true se una delle espressioni è 1 |
SQLite WHERE
esempi di clausole
Useremo le tracks
tabella nel database di esempio per illustrare come utilizzare WHERE
clausola.
L'operatore di uguaglianza (=
) è l'operatore più comunemente utilizzato. Ad esempio, la query seguente utilizza WHERE
clausola l'operatore di uguaglianza per trovare tutte le tracce nell'ID album 1:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1;
Code language: SQL (Structured Query Language) (sql)
Provalo
SQLite confronta i valori memorizzati in AlbumId
colonna con un valore letterale 1
per verificare se sono uguali. Vengono restituite solo le righe che soddisfano la condizione.
Quando si confrontano due valori, è necessario assicurarsi che siano dello stesso tipo di dati. Dovresti confrontare i numeri con i numeri, la stringa con le stringhe, ecc.
Nel caso in cui confronti valori in diversi tipi di dati, ad esempio una stringa con un numero, SQLite deve eseguire conversioni di tipi di dati impliciti, ma in generale dovresti evitare di farlo.
Utilizzare l'operatore logico per combinare le espressioni. Ad esempio, per ottenere le tracce dell'album 1 che hanno una lunghezza maggiore di 200.000 millisecondi, utilizza la seguente istruzione:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1
AND milliseconds > 250000;
Code language: SQL (Structured Query Language) (sql)
Provalo
L'istruzione utilizzava due espressioni albumid = 1
e milliseconds > 250000
. Usa il AND
logico per combinare queste espressioni.
SQLite WHERE
clausola con LIKE
esempio di operatore
A volte, potresti non ricordare esattamente i dati che desideri cercare. In questo caso, esegui una ricerca inesatta usando il LIKE
operatore.
Ad esempio, per trovare le tracce composte da Smith, usa il LIKE
operatore come segue:
SELECT
name,
albumid,
composer
FROM
tracks
WHERE
composer LIKE '%Smith%'
ORDER BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Provalo
Ottieni brani composti da R.A. Smith-Diesel, Adrian Smith, ecc.
SQLite WHERE
clausola con IN
esempio di operatore
Il IN
consente di verificare se un valore è in un elenco di un elenco di valori separati da virgole. Ad esempio, per trovare le tracce che hanno l'ID del tipo di media 2 o 3, usa il IN
operatore come mostrato nella seguente istruzione:
SELECT
name,
albumid,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (2, 3);
Code language: SQL (Structured Query Language) (sql)
Provalo
In questo tutorial, hai imparato come usare SQLite WHERE
clausola per filtrare le righe nel set di risultati finale utilizzando il confronto e gli operatori logici.