Файл: Базы данных - уч. пособие.pdf

Добавлен: 28.11.2018

Просмотров: 10881

Скачиваний: 43

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

5.1 Язык SQL

111

5.1.4 Особые возможности и основные различия языка
Microsoft Jet и ANSI SQL

В Microsoft Jet SQL предоставлен ряд функций, обеспечивающих выполнение

групповых операций, а также функции работы с датой и временем. Отметим, что
некоторые из этих функций также могут быть использованы при написании запро-
сов в других СУБД, а не только в MS Access.

Основные групповые функции, которые можно использовать в запросах на вы-

борку:

• SUМ — вычисление суммы всех значений заданного поля (для числовых

или денежных полей), отобранных запросом;

• AVG — вычисление среднего значения в тех записях определенного поля,

которые отобраны запросом (для числовых или денежных полей);

• MIN — выбор минимального значения в записях определенного поля, ото-

бранных запросом;

• MAX — выбор максимального значения в записях определенного поля, ото-

бранных запросом;

• COUNT — вычисление количества записей, отобранных запросом в опреде-

ленном поле, в которых значения данного поля отличны от нуля;

• FIRST — определение первого значения в указанном поле записей;

• LAST — определение последнего значения в указанном поле записей;

• Day(дата) возвращает значение дня месяца в диапазоне 1–31;

• Month(дата) возвращает значение месяца года в диапазоне от 1 до 12;

• Year(дата) возвращает значение года в диапазоне 100–9999.

В языке Microsoft Jet SQL поддерживаются следующие дополнительные сред-

ства выполнения запросов:

• инструкция TRANSFORM, предназначенная для создания перекрестных

запросов;

• дополнительные статистические функции, такие как StDev и VarP;

• описание PARAMETERS, предназначенное для создания запросов с пара-

метрами.

Ниже приведены основные различия двух диалектов языка SQL — Microsoft Jet

SQL и ANSI SQL:

• языки SQL-ядра базы данных Microsoft Jet SQL и ANSI SQL имеют разные

наборы зарезервированных слов и типов данных;

• разные правила применимы к оператору Between. . .And, имеющему следу-

ющий синтаксис: выражение [NOT] Between значение_1 And значение_2.
В языке SQL Microsoft Jet значение_1 может превышать значение_2; в ANSI
SQL значение_1 должно быть меньше или равно значению_2;

• разные подстановочные знаки используются с оператором Like. Так, в язы-

ке Microsoft Jet SQL любой одиночный символ изображается знаком «?»,
а в ANSI SQL — знаком «_», любое число символов в языке SQL Microsoft
Jet изображается знаком «*», а в ANSI SQL — знаком «%».


background image

112

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

В языке Microsoft Jet SQL не поддерживаются следующие средства ANSI SQL:

• инструкции, управляющие защитой, такие как COMMIT, GRANT и LOCK;

• зарезервированное слово DISTINCT в качестве описания аргумента стати-

стической функции (например, нельзя использовать выражение SUM (DIS-
TINCT имя Столбца));

• предложение LIMIT TO nn ROWS, используемое для ограничения количе-

ства строк, возвращаемых в результате выполнения запроса. Для ограниче-
ния количества возвращаемых запросом строк можно использовать только
предложение WHERE.

5.2 Язык Query-by-Example

5.2.1 Основы языка QBE

Говоря о языке SQL, нельзя не упомянуть о языке построения запросов QBE.

Основной принцип формирования запросов на языке QBE заключается в том, что
запрос на обработку формулируется путем заполнения некоторой пустой таблицы,
в основном соответствующей исходной таблице, являющейся источником запи-
сей для результирующего набора данных. В таблицу добавляются дополнитель-
ные столбцы, если в результирующем наборе данных необходимо наличие столб-
ца, значение которого является константой либо результатом вычисления на основе
значений других столбцов таблицы-источника запроса.

Лидирующий столбец таблицы-запроса, согласно терминологии, предложен-

ной Дж. Ульманом [17], в заголовке содержит имя источника запроса, а в теле —
наименование операций манипулирования данными.

Остальные столбцы таблицы-запроса в заголовке содержат имена атрибутов

отношения, а в строках содержатся элементы запроса, относящиеся к соответству-
ющим атрибутам, — различные параметры, значения и критерии запроса.

При описании команд QBE будем использовать терминологию, предложенную

Дж. Ульманом, а затем рассмотрим принципы применения запросов по образцу
в среде MS Access. Команда выборки данных обозначается символом «Р.». Нали-
чие этого оператора в первом столбце говорит о том, что все атрибуты отношения
будут представлены в результирующем наборе данных. При необходимости обес-
печить выборку определенных атрибутов отношения оператор «Р.» отображается
в соответствующих столбцах, содержащих в заголовке имена этих атрибутов. Для
задания условий отбора в столбце соответствующего атрибута указывается крите-
рий отбора и один из знаков сравнения. Также в состав команд языка QBE вклю-
чены команды: добавление данных I. — Insert.; обновление данных U. — Update.;
удаление D. — Delete.

На рисунке 5.18 представлены примеры запросов, созданных в идеологии QBE.

Так, в результате выполнения первого запроса будут выданы сведения о студентах
группы 422-1. Результатом второго запроса является набор данных с одним атри-
бутом «ФИО студента», значением которого будут студенты, родившиеся в г. Чита.
Третий запрос добавит в отношение «Студенты» новую запись. Четвертый запрос
изменит фамилию студентки с № зачетной книжки 1992432-02. Наконец, в резуль-
тате выполнения последнего запроса будут удалены записи, содержащие сведения
о студентах группы 422-3.


background image

5.2 Язык Query-by-Example

113

Рис. 5.18 – Примеры записи запросов средствами QBE

5.2.2 Запрос по образцу (идеология MS Access)

В СУБД MS Access существует специальное средство построения запросов,

которое более наглядно позволяет пояснить принцип построения запросов в терми-
нах QBE. Так, нижняя часть построителя запросов в MS Access является бланком
запроса (область построения запросов) MS Access или, как его называют, областью
QBE.

Здесь указываются параметры запроса и данные, которые нужно отобрать (ана-

лог перечня условий предложения WHERE в SQL-запросах), а также определяется
способ их отображения на экране. В запрос не обязательно включать все поля
выбранных таблиц.

. . . . . . . . . . . . . . . . . . . . . .

Пример 5.15

. . . . . . . . . . . . . . . . . . . . .

Так, следующий SQL-запрос на выборку может быть представлен в виде блан-

ка построителя запросов в СУБД MS Access (рис. 5.19).

SELECT Студент.Номер_зачетной_книжки, Студент.ФИО_студента,

Студент.Номер_группы

FROM Студент
WHERE (Студент.Номер_группы Like '422*')
AND (Студент.Место_рождения= 'г. Чита');

Рис. 5.19 – Пример записи запроса в бланке построения запросов MS Access

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


background image

114

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

В общем случае поля, вводимые в наборе записей запроса, наследуют свойства,

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

Чтобы найти записи с конкретным значением в каком-либо поле, нужно ввести

это значение в данное поле в строке бланка QBE «Условие отбора». Нечисловые
критерии, устанавливаемые в QBE-области, должны быть заключены в кавычки.
Для создания запроса с несколькими критериями пользуются различными опера-
торами. Например, в бланке построения запросов можно задать несколько условий
отбора, соединенных логическими операторами «и» (AND) или «или» (OR), для
одного или нескольких полей.

Также в бланке построения запросов СУБД MS Access можно использовать

групповые, математические и другие функции, которые можно задать при груп-
пировке или в условиях отбора (например, для даты и времени). Можно задать
вычисления над любыми полями таблицы и сделать вычисляемое значение новым
полем в запросе.

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

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

Помимо запросов на выборку в MS Access с помощью бланка построения

запросов можно создавать запросы на изменение, добавление, удаление данных
и перекрестные запросы. Перекрестный запрос, результат выполнения которого
был представлен выше на рисунке 5.14, также может быть реализован с помощью
бланка построения запросов (рис. 5.20).

Рис. 5.20 – Перекрестный запрос, созданный с помощью бланка построителей

запросов

Следует отметить, что любой запрос, созданный с помощью построителя за-

просов в среде MS Access, преобразуется в SQL-запрос. Однако не каждый SQL-
запрос может быть представлен с помощью бланка построения запросов.


background image

Контрольные вопросы по главе 5

115

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Контрольные вопросы по главе 5

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1. Поясните необходимость наличия средств манипулирования данными в СУБД.

2. Приведите примеры SQL-запросов на создание таблиц.

3. Создайте несколько SQL-запросов, используя операции выборки, обновле-

ния и удаления данных.

4. Поясните принцип построения запросов в бланке построения запросов MS

Access.