Условие отбора SQL – Предложение WHERE
Примечание:
Во всех статьях текущей категории уроков по SQL используются примеры и задачи, основанные на учебной базе данных.
Приступая к изучению данного материала, рекомендуется ознакомиться с описанием учебной БД.
Базы данных на реальных предприятиях содержат в своих таблицах огромное количество строк информации, что делает крайне затруднительным работу с ней, используя простые SQL-запросы, которые были рассмотрены в предыдущих статьях. Например, Вам нужно посмотреть продажи за конкретный день или по одному сотруднику, а Ваша компания совершает тысячи продаж в день, то потребуется слишком много времени, чтобы просмотреть миллионы записей за несколько лет ведения торговли.
В этой статье будет рассмотрено предложение WHERE, которое позволяет создать фильтр строк таблицы базы данных.
Предложение с условием отбора начинается с ключевого слова WHERE, которое следует сразу за предложением FROM:
SELECT <Перечень столбцов> FROM <Перечень таблиц> WHERE <Условие отбора>
Рассмотрим применение фильтрации строк на примере учебной БД. Задача:
Необходимо выбрать все звонки, которые поступили на линию поддержки автокредитования.
Решение задачи:
Все звонки содержатся в таблице «Звонки», но они содержать только идентификатор линии, без ее описания. Поэтому, чтобы узнать идентификатор нужной линии, сначала необходимо выполнить запрос к таблице «Линии»:
SELECT id FROM Линии WHERE Описание = 'Поддержка автокредитования'
Узнав, что идентификатор линии поддержки автокредитования равен трем, составим запрос к таблице звонков:
SELECT * FROM Звонки WHERE Линия = 3
Количество полученных записей в результате выполнения последнего SQL-запроса должно равняться 14 124.
Множественное условие SQL
Решение задачи, приведенной выше, не очень хорошее, так как выполнено в 2 хода. Решить его можно 1 запросом с несколькими условиями:
SELECT Звонки.* FROM Звонки, Линии WHERE Линии.id = Звонки.Линия AND Линии.Описание = 'Поддержка автокредитования'
Разберем пример более подробно.
В первой строке выгружаются все столбцы из таблицы звонков.
В предложении FROM перечисляются таблицы, к которым будет совершен запрос.
Предложение WHERE включает 2 предиката равенства, объединенных оператором AND. Это означает, что идентификатор линии в таблице звонков должен совпадать с идентификатором линии в таблице линий, у которой описание равно строке «Поддержка автокредитования».
Примечание:
На данном этапе, последний пример может быть не очень понятен, так как подразумевает соединение таблиц. Он приведен с целью показать возможность использования нескольких условии фильтрации.
Объединение таблиц и логические операторы для указания нескольких условий будут рассмотрены в последующих статьях.
Пополним синтаксис оператора SELECT новым предложением:
SELECT [DISTINCT] [Имя_таблицы.]Имя_столбца[, [Имя_таблицы.]Имя_столбца2 …] FROM [[Имя_базы_данных.]Имя_Схемы.]Имя_таблицы [WHERE Условие_отбора]