Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Коннолли Т. -> "Базы данных. Проектирование, реализация и сопровождение. Теория и практика" -> 81

Базы данных. Проектирование, реализация и сопровождение. Теория и практика - Коннолли Т.

Коннолли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика — М.: Вильямc, 2003. — 1440 c.
ISBN 5-8459-0527-3
Скачать (прямая ссылка): bazidannihpproekt2003.djv
Предыдущая << 1 .. 75 76 77 78 79 80 < 81 > 82 83 84 85 86 87 .. 683 >> Следующая


Выборка строк (конструкция WHERE)

В приведенных выше примерах в результате выполнения операторов SELECT выбирались все строки указанной таблицы. Однако очень часто требуется тем или иным образом ограничить набор строк, помещаемых в результирующую таблицу запроса. Это достигается с помощью указания в запросе конструкции WHERE. Она состоит из ключевого слова WHERE, за которым следует перечень условий поиска, определяющих те строки, которые должны быть выбраны при выполнении запроса. Существует пять основных типов условий поиска (или предикатов, если пользоваться терминологией ISO).

• Сравнение. Сравниваются результаты вычисления одного выражения с результатами вычисления другого выражения.

• Диапазон. Проверяется, попадает ли результат вычисления выражения в заданный диапазон значений.

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

• Соответствие шаблону. Проверяется, отвечает ли некоторое строковое значение заданному шаблону.

• Значение NULL. Проверяется, содержит ли данный столбец NULL (неопределенное значение).

Конструкция WHERE эквивалентна операции выборки реляционной алгебры, которая описана в разделе 4.1.1. Рассмотрим примеры использования всех указанных типов условий поиска.

174

Часть 11. Реляционная модель и языки Пример 5.5. Условие поиска путем сравнения

Перечислите весь персонал с размером заработной платы больше 10 ООО фунтов стерлингов в год.

SELECT statfNo, fName, IName, position, salary FROM Staff

WHERE salary :> 10000;

В этом запросе используются таблица Staff и предикат salary > 10000. При выполнении запроса будет создана новая таблица, содержащая только те строки таблицы Staff, в которых значение столбца salary больше 10 000 фунтов стерлингов. Результаты выполнения запроса представлены в табл. 5.6.

Таблица 5.6. Результат выполнения запроса из примера 5.5

rtaTfNo fName IName position salary
SL21 John White Manager 30000.00
SG37 Ann Beech Assistant 12000.00
SG14 David Ford Supervisor 18000.00
SG 5 Susan Brand Manager 24000.00

В лаыке SQL можно использовать простые операции сравнения, перечисленные в таЬл, 5.7.

Таблица 5.7. Операции сравнения Знак операции Назначен«

Более сложные предикаты могут быть построены с помощью логических операций AND, OR или NOT, а также с помощью скобок, используемых для определения порядка вычисления выражения (если это необходимо или желательно). Вычисление выражений в условиях выполняется по следующим правилам.

• Выражение вычисляется слева направо.

• Первыми вычисляются подвыражения в скобках.

• Операции NOT выполняются перед операциями AND и OR.

• Операции AND выполняются: ieper, операциями OR.

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

<

>=

Равно

Не равно (стандарт ISO) Не ;эаян (используется в некоторых диалектах) Меньше Больше

Меньше или равно Больше или рзнно

Глава 5. Язык SQL: манипулирование данными

175 Пример 5.6. Сложные условия поиска

Перечислите адреса всех отделений компании в Лондоне и Гпазго.

SELECT * FROM Branch

WHERE city = 'London' OR city = 'Glasgow1

В этом примере для выборки сведений об отделениях компании, находящихся в Лондоне (city = ' Lonaon') или Глазго (city = 'Glasgoi:1), в конструкции WHERE используется логический оператор OR. Результаты выполнения запроса представлены в табл. 5.8.

Таблица 5.8. Результат выполнения запроса из примера 5.6

branchNo street city postcoce
В005 22 Deer Rd London SW1 4EH
аооз 163 Main St Glasgow Gll9QX
В002 56 Clover Dr London NWlO 6EL

Пример 5.7. Использование диапазонов (BETWEEN/NOT BETWEEN) в условиях поиска

І Ієречисли, весь персонал с годовой Japn па, ои от20 OOl до 30 ООО фунтов стерлингов,

SELECT staffNo, fNa^e INatre, position, salary FROM Staff

WHERE salary BETWEEN 20000 AND 30000;

Наличие ключевого слова JETWE -Ж требует задания границ диапазона значений. В данном случае результаты проверки будут положительными для всех работников компании с годовой заработной платой от 20 ООО до 30 ООО фунтов стерлингов включительно. Результаты выполнения запроса представлены в табл. 5,9.

Таблица 5.9. Результаты выполнений запроса из примера 5.7

-staffNo fName IName position salary
SL21 John White Manager 30000.00
SG5 Susan Brand Manager 24000.00

Существует также версия проверки диапазона значений, которая имеет противоположный смысл (NOT EETWEEN). В этом случае требуется, чтобы проверяемое значение лежало вне границ заданного диапазона. Наличие ключевого слова BETWEEN и соответствующей проверки лишь незначительно повышает выразительную мошность языка SQL, поскольку те же результаты могут быть достигнуты с помощью выполнения двух обычных проверок. Приведенный выше запрос можно представить следующим образом:

SELECT staffNo, fName, IName, position, salary FROM Staff

WHERE salary >= 20000 AND s.llary <= 30000;

176

Часть 11. Реляционная модель и языки Однако многие полагают, что проверка принадлежности к диапазону с помощью ключевого слова BEI WEEM является более простым способом записи условий выборки, чем обычные проверки.
Предыдущая << 1 .. 75 76 77 78 79 80 < 81 > 82 83 84 85 86 87 .. 683 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100