Оператор SQL WHERE часто используется для написания запросов к базам данных, так как с его помощью программист может выбирать только те данные, которые соответствуют заданному условию. Другими словами, оператор WHERE нужен для фильтрации данных.
Синтаксис SQL WHERE
Синтаксис оператора выглядит следующим образом:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
SELECT используется для выбора нужных столбцов, FROM указывает на таблицу, из которой нужно выбрать данные; после WHERE следует условие, которое должно быть выполнено.
Операторы сравнения
Использование операторов сравнения — это один из способов задания условия: с их помощью можно сравнивать значения.
Основные операторы сравнения в SQL:
- «=» — равно;
- «>» — больше;
- «<» — меньше;
- «>=» — больше или равно;
- «<=» — меньше или равно;
- «<>» — не равно;
Так выглядит использование этих знаков:
/*
Есть какая-то таблица с информацией о студентах
*/
SELECT *
FROM students
WHERE city = 'Moscow';
Этот запрос вернет те строки, где в столбце city указано значение Moscow (то есть информацию обо всех студентах из Москвы).
Логические операторы
Логические операторы нужны, чтобы объединить несколько условий. В SQL их три:
- AND (логическое И) — условие истинно, если истинны оба объединенных с помощью AND выражения;
- OR (логическое ИЛИ) — условие истинно, если хоть одно из объединенных с помощью OR выражений истинно;
- NOT (логическое отрицание) — замена значения типа Boolean на противоположное (инвертирование значения).
В SQL, как и везде, существует порядок выполнения условий: сначала выполняется NOT, затем AND и в последнюю очередь OR. Для изменения порядка выполнения выражение нужно поместить в скобки — тогда оно будет иметь высший приоритет.
Другие операторы
В SQL есть еще несколько полезных операторов, позволяющих задавать условия:
- BETWEEN — проверка на вхождение в диапазон значений;
- IN — проверка совпадения хотя бы с одним значением;
- LIKE — проверка совпадений по шаблону;
- IS NULL — возвращает true, если значение равно null.
Примеры использования SQL WHERE
Пример с операторами AND и OR:
/*
Этот код вернет всех студентов не из Москвы старше 18 лет
*/
SELECT *
FROM students
WHERE age > 18 AND city <> 'Moscow';
/*
Если изменить AND на OR, то вернутся студенты, для которых верно хотя бы одно из условий
*/
WHERE age > 18 OR city <> 'Moscow';
/*
Если необходимо вернуть студентов, которым 18 или 20 лет, и они живут в Москве, то нужно изменить приоритет операторов
*/
WHERE (age = 18 OR age = 20) AND city = 'Moscow';
Пример с BETWEEN:
/*
Этот код вернет всех студентов от 18 до 20 лет
*/
SELECT *
FROM students
WHERE age BETWEEN 18 AND 20;
/*
Эквивалентный код
*/
SELECT *
FROM students
WHERE 18 <= age AND age <= 20;
Пример с IN:
/*
Такой код вернет всех студентов из указанных в скобках городов
*/
SELECT *
FROM students
WHERE city IN ('Moscow', 'Kazan', 'Saint-Petersburg');
Пример с LIKE и NOT:
/*
Шаблоны задаются с помощью символов «_» (обозначение одного любого символа) и «%» (обозначение любой последовательности символов)
Такой код вернет всех студентов, чьи имена начинаются на букву А
*/
SELECT *
FROM students
WHERE name LIKE 'A%';
/*
Если добавить NOT, то будут выбраны все студенты, имена которых не начинаются на букву А
*/
WHERE name NOT LIKE 'A%';
Пример с IS NULL:
/*
Такой код вернет всех студентов, город которых не указан
*/
SELECT *
FROM students
WHERE city IS NULL;
/*
Такой код, наоборот, вернет всех студентов, город которых указан
*/
SELECT *
FROM students
WHERE city IS NOT NULL;
Условий может быть сколько угодно:
/*
Вернутся все студенты, которым 18 или 21 год с именем на букву А из Москвы
*/
SELECT *
FROM students
WHERE (age = 18 OR age = 21) AND name LIKE A% AND city <> 'Moscow';