Учебники

SQLite — предложение WHERE

Предложение SQLite WHERE используется для указания условия при извлечении данных из одной или нескольких таблиц.

Если данное условие выполнено, значит true, тогда оно возвращает конкретное значение из таблицы. Вам придется использовать предложение WHERE для фильтрации записей и выборки только необходимых записей.

Предложение WHERE не только используется в операторе SELECT, но также используется в операторе UPDATE, DELETE и т. Д., Которые будут рассмотрены в последующих главах.

Синтаксис

Ниже приведен основной синтаксис оператора SQLite SELECT с предложением WHERE.

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

пример

Вы можете указать условие, используя Сравнение или Логические операторы, такие как>, <, =, LIKE, NOT и т. Д. Рассмотрим таблицу COMPANY со следующими записями:

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

Ниже приведены простые примеры, показывающие использование логических операторов SQLite. В следующем операторе SELECT перечислены все записи, в которых AGE больше или равно 25 И зарплата больше или равна 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

В следующем операторе SELECT перечислены все записи, где AGE больше или равно 25 ИЛИ оклад больше или равен 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

После инструкции SELECT перечисляются все записи, где AGE не равно NULL, что означает все записи, поскольку ни одна из записей не имеет AGE, равный 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

После инструкции SELECT перечисляются все записи, где NAME начинается с «Ki», не имеет значения, что следует за «Ki».

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

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

После инструкции SELECT перечисляются все записи, где NAME начинается с «Ki», не имеет значения, что следует за «Ki».

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

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

После оператора SELECT перечисляются все записи, где значение AGE равно 25 или 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

После инструкции SELECT перечисляются все записи, где значение AGE не равно ни 25, ни 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

В следующем операторе SELECT перечислены все записи, в которых значение AGE находится между 25 и 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

В следующем операторе SELECT используется подзапрос SQL, где подзапрос находит все записи с полем AGE, имеющим SALARY> 65000 и более поздних, с помощью оператора WHERE вместе с оператором EXISTS для вывода списка всех записей, где существует AGE из внешнего запроса. в результате, возвращаемом подзапросом —

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

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

В следующем операторе SELECT используется подзапрос SQL, в котором подзапрос находит все записи с полем AGE, имеющим SALARY> 65000 и более поздних, с помощью оператора WHERE вместе с оператором> для вывода списка всех записей, где AGE из внешнего запроса больше. чем возраст в результате, возвращаемом подзапросом.