Таблицы бывают очень большими, а нас могут интересовать только определенные строки, SQL дает возможность устанавливать критерии для отбора нужных строк. Предложение WHERE позволяет определить критерий отбора строк. Операции, допустимые в предложении WHERE, даны в табл. 13.
Таблица 13. Знаки операции сравнения для конструкции WHERE
Оператор
Название
Описание
=
Равенство
Проверяет, являются ли два значения равными
>
Больше
Проверяет, больше ли одно значение другого
<
Меньше
Проверяет, меньше ли одно значение другого
>=
Больше или равно
Проверяет, больше или равно одно значение по отношению к другому
< =
Меньше или равно
Проверяет, меньше или равно одно значение по отношению к другому
!= ИЛИ <>
Не равно
Проверяет, не равны ли два значения
IS NOT NULL
Проверяет, имеет ли поле значение
IS NULL
Проверяет, не имеет ли поле значение
BETWEEN
Величина между
Проверяет, значение больше или равно минимальному и меньше или равно максимальному
IN
Значение содержится
Проверяет, содержится ли значение в определенном множестве
NOT IN
Значение не
содержится
Проверяет, не содержится ли значение в определенном множестве
LIKE
Соответствие
Проверяет, отвечает ли значение образцу, используя простые механизмы соответствия SQL
NOT LIKE
Соответствие
Проверяет, не соответствует ли значение образцу
REGEXP
Регулярное выражение
Проверяет, соответствует ли значение регулярному выражению
Узнаем цвет всех автомобилей "Волга":
SELECT color FROM cars WHERE model='Volga';
Допустим, нам надо узнать, когда выходил на работу водитель с учетным номером 1:
mysql>SELECT use_on FROM timetable WHERE driver_number = 1;
Определим номера всех автомобилей "Волга" желтого цвета:
mysql> SELECT reg_number FROM cars
-> WHERE model = 'Volga' AND color = 'yellow';
Можно проверить несколько критериев сразу, объединяя их операциями AND или OR:
mysql> SELECT birth FROM drivers
-> WHERE name='Fedor' AND family_name='Sentsov';
Оператор IN определяет множество значений, которому данное значение может принадлежать или не принадлежать. Чтобы найти номерные знаки всех автомобилей "Волга" и "Volkswagen", дайте такую команду:
mysql> SELECT reg_number FROM cars WHERE model
-> IN ('Volga', 'Volkswagen');
Оператор BETWEEN задает границы, в которые должно попасть значение, чтобы условие запроса выполнялось. Вы должны ввести ключевое слово between с начальным значением, ключевое слово AND и конечное значение. Выясним, кто из водителей устроился на работу в период с 1 января 2001 г. до 1 января 2004 г.:
mysql> SELECT family_name FROM drivers
-> WHERE startdate BETWEEN '2001-01-01' AND '2004-01-01';
Оператор LIKE использует простой механизм соответствия SQL. Образец может состоять из обычного текста и знака процента (%) для указания совпадения с любым количеством символов. В MySQL соответствия не чувствительны к регистру. Например, шаблон ' Fed%' соответствует любой строке, которая начинается с ' Fed'.
mysql>SELECT * FROM drivers WHERE name LIKE 'Fed%';
Ключевое слово REGEXP служит для указания регулярных выражений. MySQL использует регулярные выражения в стиле POSIX.
Найдем данные об автомобиле, в номере которого встречается число 788:
mysql>SELECT * FROM cars where reg_number='[A-Z]+788[A-Z0-9]+';