SQLite - Cláusula WHERE
SQLite WHERE La cláusula se utiliza para especificar una condición mientras se obtienen los datos de una o varias tablas.
Si se cumple la condición dada, significa verdadera, entonces devuelve el valor específico de la tabla. Tendrá que usar la cláusula WHERE para filtrar los registros y obtener solo los registros necesarios.
La cláusula WHERE no solo se usa en la instrucción SELECT, sino que también se usa en la instrucción UPDATE, DELETE, etc., que se tratarán en capítulos posteriores.
Sintaxis
A continuación se muestra la sintaxis básica de la declaración SQLite SELECT con la cláusula WHERE.
SELECT column1, column2, columnN
FROM table_name
WHERE [condition]
Ejemplo
Puede especificar una condición utilizando Operadores lógicos o de comparación como>, <, =, LIKE, NOT, etc. Considere la tabla EMPRESA con los siguientes 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 continuación, se muestran ejemplos simples que muestran el uso de operadores lógicos SQLite. La siguiente instrucción SELECT enumera todos los registros donde EDAD es mayor o igual a 25AND el salario es mayor o igual a 65000,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
La siguiente instrucción SELECT enumera todos los registros donde EDAD es mayor o igual a 25 OR el salario es mayor o igual a 65000,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
La siguiente instrucción SELECT enumera todos los registros donde AGE no es NULL, lo que significa todos los registros porque ninguno de los registros tiene 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
La siguiente instrucción SELECT enumera todos los registros donde NAME comienza con 'Ki', no importa lo que venga después de 'Ki'.
sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
6 Kim 22 South-Hall 45000.0
La siguiente instrucción SELECT enumera todos los registros donde NAME comienza con 'Ki', no importa lo que venga después de 'Ki'.
sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
6 Kim 22 South-Hall 45000.0
La siguiente instrucción SELECT enumera todos los registros donde el valor de AGE es 25 o 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
La siguiente instrucción SELECT enumera todos los registros donde el valor de AGE no es ni 25 ni 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
La siguiente instrucción SELECT enumera todos los registros donde el valor de EDAD está ENTRE 25 Y 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
La siguiente instrucción SELECT hace uso de la subconsulta SQL, donde la subconsulta encuentra todos los registros con el campo AGE que tiene SALARIO> 65000 y luego se usa la cláusula WHERE junto con el operador EXISTS para enumerar todos los registros donde existe AGE de la consulta externa en el resultado devuelto por la subconsulta -
sqlite> SELECT AGE FROM COMPANY
WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
AGE
----------
32
25
23
25
27
22
24
La siguiente instrucción SELECT hace uso de la subconsulta SQL donde la subconsulta encuentra todos los registros con el campo AGE que tiene SALARIO> 65000 y luego se usa la cláusula WHERE junto con el operador> para enumerar todos los registros donde la AGE de la consulta externa es mayor que la edad en el resultado devuelto por la 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