WHERE (условия в запросах)


Синтаксис

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

Примеры:

SELECT * FROM students WHERE id = 4;
SELECT * FROM students WHERE name = 'John' AND age > 15;
SELECT * FROM students WHERE (age >= 15 AND age <= 17) OR (age > 19 AND name <> 'John');

Сравнение с NULL

Если нужно выбрать записи, определенные поля которых содержат (или не содержат) значение NULL, то обычные операторы сравнения не сработают. Для этого нужно использовать конструкцию IS. Примеры:

SELECT * FROM students WHERE bio IS NULL;
SELECT * FROM students WHERE bio IS NOT NULL;

BETWEEN

Для компактности записи, когда нужно отыскать поля, имеющие значение в определенном диапазоне, используется конструкция BETWEEN. Она может использоваться как для числовых, так и для текстовых полей. Пример:

SELECT * FROM students WHERE age BETWEEN 15 AND 17;
SELECT * FROM students WHERE age >= 15 AND age <= 17;

Эти запросы эквивалентны. Приведем еще несколько примеров:

SELECT * FROM students WHERE age NOT BETWEEN 15 AND 17;
SELECT * FROM students WHERE name BETWEEN 'Ann' AND 'Frog';

IN

Для компактности записи, когда нужно отыскать поля, имеющие значение из определенного множества, используется конструкция IN. Далее указывается список возможных значений. Примеры:

SELECT  * FROM students WHERE age IN (15, 17, 19);
SELECT * FROM students WHERE age NOT IN (15, 17) AND name IN ('John', 'Peter');

LIKE

Конструкция LIKE используется для строковых атрибутов, когда нужно найти записи по маске:

Если в искомой строке должны содержаться символы % или _, то их нужно экранировать обратным слешем: \% \_.

Примеры:

SELECT * FROM students WHERE name LIKE 'John';
SELECT * FROM students WHERE name LIKE 'J%';
SELECT * FROM students WHERE name LIKE '%o%';
SELECT * FROM students WHERE name LIKE '_o%n';