В большинстве случаев мало кого интересует все содержимое таблиц. Чаще всего при запросе отбирается множество записей, удовлетворяющих тому или иному условию. Реализация оператора выбора осуществляется в SQL посредством применения предложения WHERE. Предложение WHERE позволяет задать критерии отбора строк из таблиц.
Cинтаксис предложения WHERE:
WHERE < имя столбца> <оператор условия> < имя столбца>| <константа>| <список значений>
Условия отбора, задаваемые в предложении WHERE, могут быть как простыми, так и сложными. Для задания сложных условий могут быть использованы предикаты OR и AND, которые в свою очередь можно сочетать в одном логическом выражении. Порядок выполнения операторов приведен ниже (см. Таблица 14). Изменение порядка выполнения операций осуществляется с помощью скобок.
Таблица 14
| Порядок вычисления | Оператор |
| Все операторы сравнения и предикаты IN, LIKE, IS NULL, BETWEEN (см.Таблица 15) | |
| AND | |
| OR |
Таблица 15
| № п/п | Оператор | Смысл оператора |
| 1. | = | Равно |
| 2. | !=, ^= ИЛИ <> | Не равно |
| 3. | > | Больше |
| 4. | >= | Больше или равно |
| 5. | < | Меньше |
| 6. | <= | Меньше или равно |
| 7. | [NOT] BETWEEN x AND y | [Не] принадлежит диапазону значений [x;y] |
| 8. | IN (СПИСОК) | Равно любому элементу списка Эквивалентно “=ANY” |
| 9. | NOT IN (СПИСОК) | Не равно ни одному элементу списка. Эквивалентно “!=ALL”. Если хоть один из элементов списка NULL, то результатом будет FALSE. |
| 10. | ANY SOME | Сравнение с каждым из значений списка или подзапроса. Должно следовать за =,!=, >, <, <=, >=. Принимает значение FALSE, если подзапрос не выбирает ни одной строки |
| 11. | ALL | Сравнение с каждым из значений списка или подзапроса. Должно следовать за =,!=, >, <, <=, >=. Принимает значение TRUE, если подзапрос не выбирает ни одной строки. |
| 12. | IS [NOT] NULL | Проверка на NULL. Это единственные операторы, которые должны использоваться при проверке значений на NULL. |
| 13. | X [NOT] LIKE ‘y’ | TRUE, если x [не]удовлетворяет шаблону ‘y’. В шаблоне ‘y’ символ % соответствует любой строке символов (возможно пустой); символ '_' - одному символу; [] - один символ в указанном диапазоне; [^] - один символ вне указанного диапазона. |
Таблица 16
| № | Оператор | Описание |
| 1. | !=, <> | Не равно |
| 2. | NOT <имя столбца> = | значение столбца не равно |
| 3. | NOT <имя столбца> > | значение столбца не больше чем |
| 4. | NOT <имя столбца> < | значение столбца не меньше чем |
| 5. | NOT BETWEEN | Не лежит в интервале |
| 6. | NOT IN | Не содержится в списке |
| 7. | NOT LIKE | Не содержит подстроки |
| 8. | IS NOT NULL | Не содержит неопределенности |
Пример 47
Задача.
Сформировать запрос для вывода списка студентов из таблицы Student, обучающихся в группе ИСТ-03.
Решение.
SELECT SName ФИО
FROM Student St INNER JOIN SGroup SG
ON St.IDGroup =SG.IDGroup
WHERE NameGroup='ИСТ-02';
Результат реализации запроса:

Пример 48
Задача.
Сформировать запрос для вывода имени преподавателя, у которого студенты в 5 семестре имели оценки выше 4
Решение.
SELECT TName ФИО
FROM Teacher, Progress
WHERE Teacher.PIN=Progress.PIN
AND Mark>4 AND NTerm=5;
Результат реализации запроса:

В результате запроса имя одного и того же преподавателя было выведено дважды. Очевидно, что преподаватель дважды в 5 семестре оценивал работу студентов оценкой выше, чем 4. Здесь целесообразно вспомнить о предложении DISTINCT, которое позволит убрать в результате запроса дубли. Теперь запрос будет выглядеть следующим образом
SELECT DISTINCT TName ФИО
FROM Teacher, Progress
WHERE Teacher.PIN=Progress.PIN
AND Mark>4 AND NTerm=5;
Результат реализации запроса:

В предложении WHERE используются различные предикаты (см.Таблица 15), рассмотрим применение некоторых из них.






