Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
интернет отвт.doc
Скачиваний:
10
Добавлен:
27.10.2018
Размер:
300.03 Кб
Скачать

9.7. Проекция в sql

Для решения подобной задачи в предложении SELECT вместо символа звездочки (*) следует задать список атрибутов отношения, упомянутого в предложении FROM, которые подлежат включению в итоговое отношение.

Чтобы в итоговое отношение включались только наименования кинофильмов и значения длительности их воспроизведения, запрос можно записать так:

SELECT title, length

FROM Movie

WНERE studioName = 'Disney' AND year = 1990;

Чтобы обеспечить замену заголовков таблицы, получаемой в результате обработки запроса с title и length на name и duration, необходимо дополнить текст запроса следующим образом:

SELECT title AS name, length AS duration

FROM Movie

WНERE studioName = 'Disney' AND year = 1990;

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

Предположим, что при выполнении запроса необходимо обеспечить представление значения продолжительности воспроизведения кинофильмов не в минутах, а в часах. Для достижения цели предложение SELECT следует исправить, скажем, так:

SELECT title AS name, length*0.016667 AS lengthInHours

В качестве элементов списка предложения SELECT разрешается использовать даже постоянные величины.

SELECT tit1e AS nаmе, 1ength*0.016667 AS length, 'hrs.' AS inHours

FROM Movie

WНERE studioName = 'Disney' AND year = 1990;

9.8. Выбор в sql

Возможности оператора выбора ; используемого в реляционной алгебре, реализуются и значительно расширяются предложением WНERE SQL. Условные выражения, следующие за служебным словом WНERE, могут создаваться на основе шести общеупотребительных операторов сравнения: = ("равно"), <> ("не равно"), < ("меньше"), > ("больше"), <= ("меньше или равно", или "не больше") и >= ("больше или равно", или "не меньше").

В роли операндов, сопоставляемых посредством операторов сравнения, могут выступать константы и идентификаторы-имена атрибутов отношений, упомянутых в предложении FROM. Перед сравнением числовых значений допустимо применять к ним различные арифметические операторы, такие как +, * и т.д.

Следующий запрос предполагает поиск информации обо всех кинофильмах, вышедших на экран после 1970 года и снятых на черно-белой пленке:

SELECT title

FROM Movie

WНERE year > 1970 AND NOT inColor;

Еще одна конструкция SQL: Запрос предусматривает выбор названий таких кинофильмов, которые сняты киностудией "MGM" и либо выпущены после 1970 года, либо обладают продолжительностью воспроизведения, меньшей 90 минут.

SELECT title

FROM Movie

WНERE (year > 1970 OR length < 90) AND studioName = 'MGM';

9.9. Сравнение строк

При сравнении строк посредством любого из операторов - <, <=, > или >= - проверяется, должна ли одна строка предшествовать другой, если их поместить в список, отсортированный в лексикографическом (алфавитном) порядке. Как и при сопоставлении строк с помощью оператора равенства, предполагается, что перед сравнением строки различных типов приводятся к одному типу на основании строгих правил преобразования.

Язык SQL предлагает также возможность сравнения строк с образцом. В этом случае выражение сравнения выглядит как

s LIKE р,

где s - это тестируемая строка, а р - образец, т.е. строка, которая может содержать необязательные символы-шаблоны - % и _.

Обычные символы в р сопоставляются с аналогичными символами в s, но символ % в р отвечает нулевому или большему количеству любых символов в s, а символ _ - в точности одному произвольному символу в s. Значением выражения служит TRUE, если и только если строка s удовлетворяет образцу р. Напротив, выражение s NOT LIKE p обращается в TRUE, если и только если строка s не совпадает с образцом р.

Чтобы извлечь из базы данных названия фильмов, часть названия которых "Star", а следующее слово состоит из четырех букв, достаточно выполнить запрос

SELECT title

FROM Movie

WНERE title LIKE Star_ _ _ _;