|
Программирование >> Sql: полное руководство
Проверка на принадлежность диапазону. Проверяется, попадает ли указанное значение в определенный диапазон. Например, такое условие отбора используется для нахождения служащих, фактические объемы продаж которых превыщают $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.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |