SQLite - Operadores lógicos

Exemplo

Considere 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 estão exemplos simples que mostram o uso de operadores lógicos SQLite. A instrução SELECT a seguir lista todos os registros onde AGE é maior ou igual a 25 e o salário é maior ou igual a 65.000,00.

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

A instrução SELECT a seguir lista todos os registros onde AGE é maior ou igual a 25 OR salário é maior ou igual a 65.000,00.

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR 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

A instrução SELECT a seguir lista todos os registros onde AGE não é NULL, o que significa todos os registros porque nenhum dos registros tem AGE igual a NULL.

sqlite>  SELECT * 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 instrução SELECT a seguir lista todos os registros onde NAME começa com 'Ki', não importa o que venha depois de 'Ki'.

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

A instrução SELECT a seguir lista todos os registros onde NAME começa com 'Ki', não importa o que venha depois de 'Ki'.

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

A instrução SELECT a seguir lista todos os registros onde o valor de AGE é 25 ou 27.

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 instrução SELECT a seguir lista todos os registros em que o valor de AGE não é 25 nem 27.

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

A instrução SELECT a seguir lista todos os registros onde o valor de AGE está entre 25 E 27.

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 instrução SELECT seguinte faz uso da subconsulta SQL, onde a subconsulta encontra todos os registros com o campo AGE tendo SALARY> 65000 e posterior, a cláusula WHERE está sendo usada junto com o operador EXISTS para listar todos os registros onde AGE da consulta externa existe em o resultado retornado pela subconsulta.

sqlite> SELECT AGE FROM COMPANY 
   WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

AGE
----------
32
25
23
25
27
22
24

A instrução SELECT seguinte usa a subconsulta SQL onde a subconsulta encontra todos os registros com o campo AGE tendo SALARY> 65000 e a cláusula WHERE posterior está sendo usada junto com o operador> para listar todos os registros onde AGE da consulta externa é maior que o idade no resultado retornado pela 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