SQL-запросы, извлекающие из таблицы все строки, полезны при просмотре базы данных и создании отчетов, однако редко применяются для чего-нибудь еще. Обычно требуется выбрать из таблицы и включить в результаты запроса только несколько строк. Чтобы указать, какие строки нужно отобрать, используется предложение WHERE
. Ниже показано несколько запросов, в которых встречается это предложение.
Предыдущие статьи:
- Простейщие запросы SQL: оператор SELECT
- Вычисления в SQL запросах Select
- Выборка всех данных из таблицы
- SELECT DISTINCT - выборка уникальных значений
Офисы, в которых фактические объемы продаж превысили плановые.
SELECT CITY, SALES, TARGET
FROM OFFICES
WHERE SALES > TARGET;
CITY SALES TARGET
------------ ------------ ------------
New York $692,637.00 $575,000.00
Atlanta $367,911.00 $350,000.00
Los Angeles $835,915.00 $725,000.00
Имя, объемы фактических и плановых продаж служащего с идентификатором 105.
SELECT NAME, SALES, QUOTA
FROM SALESREPS
WHERE EMPL_NUM = 105;
NAME SALES QUOTA
----------- ------------ ------------
Bill Adams $367,911.00 $350,000.00
Список всех служащих, менеджером которых является Боб Смит (идентификатор 104).
SELECT NAME, SALES
FROM SALESREPS
WHERE MANAGER = 104;
NAME SALES
------------ ------------
Bill Adams $367,911.00
Dan Roberts $305,673.00
Paul Cruz $286,775.00
Предложение WHERE
состоит из ключевого слова WHERE
, за которым следует условие отбора, определяющее, какие именно строки требуется извлечь. В предыдущем запросе, например, условием отбора являлось выражение manager = 104
. На рис. 4 изображено, как работает предложение WHERE
. Концептуально все строки в таблице SALESREPS
просматриваются одна за другой, и к каждой из них применяется условие отбора. Если в условии отбора встречается имя столбца (как, например, имя MANAGER
в предыдущем примере), то используется значение этого столбца из текущей строки. Для каждой из строк условие отбора может иметь одно из трех перечисленных ниже значений.
- Если условие отбора имеет значение
TRUE
, строка будет включена в результаты запроса. Например, значение столбцаMANAGER
в строке для Билла Адамса (Bill Adams) соответствует условию отбора, поэтому строка для него включается в результаты запроса. - Если условие отбора имеет значение false, то строка исключается из результатов запроса. Например, значение столбца manager в строке для Сью Смит (Sue Smith) не соответствует условию отбора, поэтому строка для нее исключается из результатов запроса.
- Если условие отбора имеет значение
NULL
, то строка исключается из результатов запроса. Например, значение столбцаMANAGER
в строке для Сэма Кларка (Sam Clark) равноNULL
, поэтому строка для него исключается из результатов запроса.
Рис. 4. Отбор строк с помощью предложения where
Рис. 5 иллюстрирует другой способ рассмотрения роли, выполняемой условием отбора в предложении WHERE
. Можно сказать, что условие отбора служит фильтром для строк таблицы. Строки, удовлетворяющие условию отбора, проходят через фильтр и становятся частью результатов запроса. Строки, не удовлетворяющие условию отбора, отфильтровываются и исключаются из результатов запроса.
Рис. 5. Предложение WHERE в роли фильтра