ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Базы данных
Добавлен: 28.11.2018
Просмотров: 10881
Скачиваний: 43
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 — знаком «%».
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.
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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
114
Глава 5. Языки управления и манипулирования данными
В общем случае поля, вводимые в наборе записей запроса, наследуют свойства,
заданные для соответствующих полей таблицы. При создании запроса можно за-
дать критерии отбора, вследствие чего по запросу будет осуществлен отбор только
нужных записей.
Чтобы найти записи с конкретным значением в каком-либо поле, нужно ввести
это значение в данное поле в строке бланка QBE «Условие отбора». Нечисловые
критерии, устанавливаемые в QBE-области, должны быть заключены в кавычки.
Для создания запроса с несколькими критериями пользуются различными опера-
торами. Например, в бланке построения запросов можно задать несколько условий
отбора, соединенных логическими операторами «и» (AND) или «или» (OR), для
одного или нескольких полей.
Также в бланке построения запросов СУБД MS Access можно использовать
групповые, математические и другие функции, которые можно задать при груп-
пировке или в условиях отбора (например, для даты и времени). Можно задать
вычисления над любыми полями таблицы и сделать вычисляемое значение новым
полем в запросе.
Запросы можно создавать для отбора данных как из одной, так и из нескольких
таблиц. Запросы к нескольким таблицам производятся аналогично запросам к од-
нотабличным БД с той лишь разницей, что в окно конструктора запроса добавля-
ются все таблицы, данные которых нужны в запросе. При этом следует учитывать
наличие связей между таблицами.
Помимо запросов на выборку в MS Access с помощью бланка построения
запросов можно создавать запросы на изменение, добавление, удаление данных
и перекрестные запросы. Перекрестный запрос, результат выполнения которого
был представлен выше на рисунке 5.14, также может быть реализован с помощью
бланка построения запросов (рис. 5.20).
Рис. 5.20 – Перекрестный запрос, созданный с помощью бланка построителей
запросов
Следует отметить, что любой запрос, созданный с помощью построителя за-
просов в среде MS Access, преобразуется в SQL-запрос. Однако не каждый SQL-
запрос может быть представлен с помощью бланка построения запросов.
Контрольные вопросы по главе 5
115
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Контрольные вопросы по главе 5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1. Поясните необходимость наличия средств манипулирования данными в СУБД.
2. Приведите примеры SQL-запросов на создание таблиц.
3. Создайте несколько SQL-запросов, используя операции выборки, обновле-
ния и удаления данных.
4. Поясните принцип построения запросов в бланке построения запросов MS
Access.