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