Условие отбора 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 Условие_отбора]

Добавить комментарий