Предложение 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 из внешнего запроса больше. чем возраст в результате, возвращаемом подзапросом.