Включите исполнение JavaScript в браузере, чтобы запустить приложение.
13 ноя 2024

Оператор SQL WHERE: синтаксис и примеры

Хотите научиться фильтровать данные в SQL базе данных и писать эффективные запросы? Разбираемся с оператором WHERE: синтаксис, операторы сравнения, логические операторы. Подробный гайд с понятными объяснениями и практическими примерами.

Оператор SQL WHERE часто используется для написания запросов к базам данных, так как с его помощью программист может выбирать только те данные, которые соответствуют заданному условию. Другими словами, оператор WHERE нужен для фильтрации данных.

Синтаксис SQL WHERE

Синтаксис оператора выглядит следующим образом:

SELECT column1, column2, ...
FROM table_name
WHERE condition;
sql

SELECT используется для выбора нужных столбцов, FROM указывает на таблицу, из которой нужно выбрать данные; после WHERE следует условие, которое должно быть выполнено.

Операторы сравнения

Использование операторов сравнения — это один из способов задания условия: с их помощью можно сравнивать значения.

Основные операторы сравнения в SQL:

  • «=» — равно;
  • «>» — больше;
  • «<» — меньше;
  • «>=» — больше или равно;
  • «<=» — меньше или равно;
  • «<>» — не равно;

Так выглядит использование этих знаков:

/*
Есть какая-то таблица с информацией о студентах
*/
SELECT * 
FROM students
WHERE city = 'Moscow';
sql

Этот запрос вернет те строки, где в столбце 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';
sql

Пример с BETWEEN:

/*
Этот код вернет всех студентов от 18 до 20 лет
*/
SELECT * 
FROM students
WHERE age BETWEEN 18 AND 20;


/*
Эквивалентный код
*/
SELECT * 
FROM students
WHERE 18 <= age AND age <= 20;
sql

Пример с IN:

/*
Такой код вернет всех студентов из указанных в скобках городов
*/
SELECT * 
FROM students
WHERE city IN ('Moscow', 'Kazan', 'Saint-Petersburg');
sql

Пример с LIKE и NOT:

/*
Шаблоны задаются с помощью символов «_» (обозначение одного любого символа) и «%» (обозначение любой последовательности символов)
Такой код вернет всех студентов, чьи имена начинаются на букву А
*/
SELECT * 
FROM students
WHERE name LIKE 'A%';


/*
Если добавить NOT, то будут выбраны все студенты, имена которых не начинаются на букву А
*/
WHERE name NOT LIKE 'A%';
sql

Пример с IS NULL:

/*
Такой код вернет всех студентов, город которых не указан
*/
SELECT * 
FROM students
WHERE city IS NULL;


/*
Такой код, наоборот, вернет всех студентов, город которых указан
*/
SELECT * 
FROM students
WHERE city IS NOT NULL;
sql

Условий может быть сколько угодно:

/*
Вернутся все студенты, которым 18 или 21 год с именем на букву А из Москвы
*/
SELECT * 
FROM students
WHERE (age = 18 OR age = 21) AND name LIKE A% AND city <> 'Moscow';
sql