Программирование >>  Sql: полное руководство 

1 ... 29 30 31 [ 32 ] 33 34 35 ... 264


Проверка на принадлежность диапазону. Проверяется, попадает ли указанное значение в определенный диапазон. Например, такое условие отбора используется для нахождения служащих, фактические объемы продаж которых превыщают $100000, но меньше $500000.

Проверка на членство в множестве. Проверяется, совпадает ли значение выражения с одним из значений заданного множества. Например, такое условие отбора используется для выбора офисов, расположенных в Нью-Йорке, Чикаго или Лос-Анджелесе.

Проверка на соответствие шаблону. Проверяется, соответствует ли строковое значение, содержащееся в столбце, определенному шаблону. Например, такое условие отбора используется для выбора клиентов, имена которых начинаются с буквы Е .

Проверка на равенство значению NULL. Проверяется, содержится ли в столбце значение NULL. Например, такое условие отбора используется для нахождения всех служащих, которым еще не был назначен менеджер.

Сравнение (операторы =, <>, <, <=, >, >=)

Наиболее распространенным условием отбора в SQL является сравнение. При сравнении СУБД вычисляет и сравнивает значения двух выражений для каждой строки данных. Выражения могут быть как очень простыми, например содержать одно имя столбца или константу, так и более сложными, например содержать арифметические операции. В SQL имеется шесть различных способов сравнения двух выражений, как изображено на рис. 6.7. Ниже приведены типичные примеры сравнения.

Пойти имена всех служащих, принятых на работу до 1988 года.

SELECT NAME

FROM SALESREPS WHERE HIRE DATE < Ol-JAN-88

NAME

Sue Smith Bob Smith Dan Roberts Paul Cruz

Вывести список офисов, фактические объемы продаж в которых составили менее 80 процентов от плановых.

SELECT CITY, SALES, TARGET FROM OFFICES WHERE SALES < (.8 * TARGET)

CITY SALES TARGET

Denver $186,042.00 $300,000.00

Вывести список офисов, менеджером которых не является служащий с идентификатором 108.

SELECT CITY, MGR FROM OFFICES



WHERE MGR <> 108 CITY MGR

New York

Chicago

Atlanta

106 104 105

выражение 1

выражение 2

Рис. 6.7. Синтаксическая диагромма операции .сравнения

Как видно из рис. 6.7, в соответствии со спецификацией ANS1/1S0 проверка на неравенство записывается как А <> В . В ряде СУБД используются альтернативные системы записи, как, например, А != В (в SQL Server) и А В (в DB2 и SQL/DS). Иногда такая форма записи является единственной, а иногда - только одной из допустимых форм.

Когда СУБД сравнивает значения двух выражений, могут получиться три результата:

если сравнение истинно, то результат проверки имеет значение true;

если сравнение ложно, то результат проверки имеет значение false;

если хотя бы одно из двух выражений имеет значение null, то результатом проверки будет null.

Выборка одной строки

Чаще всего используется сравнение, в котором определяется, равно ли значение столбца некоторой константе. Если этот столбец представляет собой первичный ключ, то запрос возвращает всего одну строку, как в следующем примере:

Узнать имя и лимит кредита клиента с идентификатором 2107.

SELECT COMPANY, CREDIT LIMIT FROM CUSTOMERS WHERE CUST NUM = 2107

COMPANY CREDIT LIMIT

Ace International $35,000.00

Запросы этого типа часто применяются в программах просмотра баз данных. Построенных на основе форм. Пользователь вводит в форму идентификатор клиента, п программа использует его при создании и выполнении запроса. После этого она отображает извлеченные данные в форме.



Обратите внимание на то, что инструкции SQL, предназначенные для выбора конкретного клиента по идентификатору, как в предыдущем примере, и для выбора всех клиентов, удовлетворяющих определенным параметрам (например, с лимитом кредита более $25000), имеют абсолютно одинаковый вид. Запросы этих двух типов (выборка по первичному ключу и выборка, основанная на поиске данных) в нереляционной базе данных представляли бы две совершенно различные операции. Такая общность в подходах значительно облегчает изучение и использование SQL.

Замечания по поводу значений NULL

Использование значений null в запросах может привести к предположениям, которые только на первый взгляд кажутся истинными, но на самом деле таковыми не являются. Например, можно предположить, что результаты двух следующих запросов

Вывести список служащих, превысивших плановый объем продаж.

SELECT NAME

FROM SALESREPS WHERE SALES > QUOTA

NAME

Bill Adams Mary Jones Sue Smith Sam Clark Dan Roberts Larry Fitch Paul Cruz

Вывести список служащих, не выполнивших план.

SELECT NAME

FROM SALESREPS WHERE SALES < QUOTA

NAME

Bob Smith Nancy Angelli

будут содержать все строки из таблицы salesreps. Однако результаты этих запросов включают семь и две строки соответственно, что в сумме дает девять строк, в то время как в этой таблице находится десять строк. Строка для Тома Снайдера (Tom Snyder) содержит значение null в столбце quota, поскольку ему еще не был назначен плановый объем продаж. Эта строка не вошла ни в один запрос, так как она исчезает при сравнении.

Как показывает приведенный пример, при определении условия отбора необходимо помнить об обработке значений null. В трехзначной логике, принятой в SQL, условие отбора может иметь значения true, false или null. А в результаты запроса попадают только те строки, для которых условие отбора равно true.



1 ... 29 30 31 [ 32 ] 33 34 35 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика