English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Cláusula WHERE no SQLite

SQLite WHEREA cláusula é usada para especificar condições ao obter dados de uma ou mais tabelas.

Se a condição fornecida for verdadeira, então ela retornará valores específicos da tabela. Você precisará usar a cláusula WHERE para filtrar registros e extrair apenas os registros necessários.

A cláusula WHERE não é usada apenas em instruções SELECT, mas também em UPDATE, DELETE e outras, o que será abordado em capítulos posteriores.

Sintaxe

A seguir, a sintaxe básica da instrução SELECT do SQLite com cláusula WHERE.

SELECT column1, column2, columnN FROM table_name WHERE [condition]

Exemplo online

Você pode usarOperadores de comparação ou lógicos (Por exemplo, >, <, =, LIKE, NOT e outros) especificam condições. Veja a tabela COMPANY com os seguintes registros-

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000,0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000,0
5           David       27          Texas       85000,0
6           Kim         22          South-Hall  45000,0
7           James       24          Houston     10000,0

A seguir, um exemplo simples de uso do operador lógico SQLite. A instrução SELECT a seguir lista AGE(idade) maior ou igual a25 e SALARY (salário) maior ou igual a65000,00 todos os registros.

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 E SALARY >= 65000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000,0
5           David       27          Texas       85000,0

A seguinte instrução SELECT lista AGE(idade) maior ou igual a25 OU SALARY (salário) é maior ou igual a65000,00 todos os registros.

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OU SALARY >= 65000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000,0
4           Mark        25          Rich-Mond   65000,0
5           David       27          Texas       85000,0

Imediatamente após a consulta SELECT, são listados todos os registros onde o AGE não é NULL, o que significa que todos os registros serão exibidos, pois não há registros cujo valor de AGE seja NULL.

sqlite> * FROM COMPANY WHERE AGE IS NOT NULL;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000,0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000,0
5           David       27          Texas       85000,0
6           Kim         22          South-Hall  45000,0
7           James       24          Houston     10000,0

A seguinte consulta SELECT lista todos os registros cujo NAME começa com 'Ki' e qualquer registro subsequente.

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000,0

A seguinte consulta SELECT lista todos os registros cujo NAME começa com 'Ki', independentemente dos registros posteriores.

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000,0

Após a consulta SELECT, são listados os valores de AGE (idade) que são25OU27todos os registros.

sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000,0
4           Mark        25          Rich-Mond   65000,0
5           David       27          Texas       85000,0

A seguinte consulta SELECT lista valores de AGE (idade) que não são25também não é27todos os registros.

sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
6           Kim         22          South-Hall  45000,0
7           James       24          Houston     10000,0

Após a consulta SELECT, são listados os valores de AGE (idade) que estão25E27todas as entradas.

sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000,0
4           Mark        25          Rich-Mond   65000,0
5           David       27          Texas       85000,0

A seguinte consulta SELECT usa subconsultas SQL, onde a subconsulta busca SALARY > 65Todas as entradas de 000, seguidas da cláusula WHERE usada com o operador EXISTS para listar todos os registros onde o AGE existe nos resultados da subconsulta.-

sqlite> SELECT AGE FROM COMPANY 
   WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
AGE
----------
32
25
23
25
27
22
24

A seguinte consulta SELECT usa subconsultas SQL, onde a subconsulta busca SALARY > 65Todas as entradas de 000, bem como as consultas externas listadas com a cláusula WHERE usando o operador >, mostram todos os registros onde o AGE é maior que o resultado da subconsulta.

sqlite> SELECT * FROM COMPANY 
   WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0