Файл: Базы данных МУ КР ЛР.pdf

Добавлен: 28.11.2018

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

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

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

 

51 

 

Рис. 19 — Результат выполнения запроса с внешним соединением 

 

Важно  отметить,  что  операции LEFT JOIN или RIGHT JOIN могут 

быть вложены в операцию INNER JOIN, но операция INNER JOIN не мо-

жет быть вложена в операции LEFT JOIN или RIGHT JOIN. 

Создание перекрестного запроса 

В Jet SQL существует такой вид запросов, как перекрестный. В таком 

запросе  отображаются  результаты  статистических  функций — суммы, 

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

полняется по данным одного из полей таблицы. Результаты группируются 

по  двум  наборам  данных,  один  из  которых  расположен  в  левом  столбце 

таблицы, а другой в заголовке таблицы. Например, при необходимости вы-

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

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

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

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

а в полях таблицы будет рассчитан средний балл студентов группы по ка-

ждому предмету. 

Для  создания  перекрестного  запроса  необходимо  использовать  сле-

дующую инструкцию: 

 


background image

 

52 

TRANSFORM статистическая_функция 

инструкция_SELECT 

PIVOT поле [IN (значение_1[, значение_2[, ...]])],  

где    статистическая_функция — статистическая  функция SQL, обрабаты-

вающая указанные данные; 

инструкция_SELECT — запрос на выборку; 

поле — поле или выражение, которое содержит заголовки столбцов 

для результирующего набора; 

значение_1,  значение_2 — фиксированные  значения,  используемые 

при создании заголовков столбцов. 

Составим SQL-запрос, реализующий описанный выше пример: 

TRANSFORM Avg(Успеваемость.Оценка)  

SELECT Дисциплина.Наименование_дисциплины as [Предмет] 

FROM Студент INNER JOIN  

(Дисциплина INNER JOIN Успеваемость ON Дисциплина. 

Код_дисциплины = Успеваемость.Код_дисциплины) ON Студент. 

Код_студента = Успеваемость.Код_студента 

GROUP BY Дисциплина.Наименование_дисциплины,  

Успеваемость.Код_дисциплины 

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

В результате выполнения такого перекрестного SQL-запроса форми-

руется следующий набор данных (рис. 20). 

 

 

Рис. 20 — Результат выполнения перекрестного запроса 

 
 


background image

 

53 

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

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

жений и определять как заголовки столбцов. Это позволяет просматривать 

данные  в  более  компактной  форме,  чем  при  работе  с  обычным  запросом 

на выборку. Отметим, что перекрестные запросы удобно использовать для 

формирования статистических отчетов. 

 

Создание запроса на удаление записей 

Инструкция  DELETE  создает  запрос  на  удаление  записей  из  одной 

или  нескольких  таблиц,  перечисленных  в  предложении FROM и  удовле-

творяющих предложению WHERE.  

Синтаксис команды: 

DELETE [Таблица.*] 

FROM таблица 

WHERE условие Отбора, 

где   Таблица — необязательное имя таблицы, из которой удаляются записи; 

таблица — имя таблицы, из которой удаляются записи; 

условие Отбора — выражение, определяющее удаляемые записи. 

С  помощью  инструкции DELETE можно  осуществлять  удаление 

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

и с  помощью  инструкции DROP, однако  при  таком  удалении  теряется 

структура  таблицы.  Если  же  применить  инструкцию DELETE, удаляются 

только данные. При этом сохраняются структура таблицы и все остальные 

ее свойства, такие, как атрибуты полей и индексы. 

В следующем примере из таблицы  «Абитуриент» будет  удален аби-

туриент Авдеев Н.В.: 

DELETE  

FROM Абитуриент 


background image

 

54 

WHERE ФИО_Абитуриента = 'Авдеев Н.В.' 

Запрос на удаление удаляет записи целиком, а не только содержимое 

указанных  полей.  Нельзя  восстановить  записи,  удаленные  с  помощью  за-

проса на удаление. Чтобы узнать, какие записи будут удалены, необходимо 

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

ловие отбора в предложении Where, а затем выполнить запрос на удаление. 

 

Порядок выполнения лабораторной работы № 2 

В  ходе  выполнения  лабораторной  работы  необходимо  создать  с  по-

мощью построителя запросов: 

1. Запрос на выборку. 

2. Запрос на выборку с параметрами. 

3. Запрос на обновление данных. 

4. Запрос на удаление записей. 

Следующие  запросы  должны  быть  реализованы  на  языке SQL без 

помощи построителя запросов: 

5.  Используя  инструкцию CREATE TABLE, создайте  запрос  на  соз-

дание новой таблицы для выбранной ранее предметной области, содержа-

щей пять полей, различных типов данных, определив в запросе первичный 

ключ  и  проиндексировав  соответствующие  поля,  используя  предложение 

CONSTRAINT.  

Для  запуска  запроса  нажмите  кнопку  Запуск 

  на  панели  инстру-

ментов.  После  чего  создайте  запрос  на  создание  еще  одной  таблицы,  со-

держащей внешний ключ по отношению к первичному ключу предыдущей 

таблицы. Запустите запрос, после чего проверьте, отразились ли изменения 

в схеме данных. 

6. Используя команду CREATE INDEX, создайте запрос на создание 

нового  индекса,  используя  различные  условия  назначения  индексов 

(IGNORE NULL, DISALLOW NULL, PRIMARY), а также типы сортировки. 


background image

 

55 

7.  Используя  команду INSERT INTO, создайте  запросы  на  добавле-

ние группы записей (из дополнительной таблицы) и одной записи в суще-

ствующую таблицу.  

8. Используя команду UPDATE, создайте запрос на обновление дан-

ных в созданных ранее таблицах.  

9. Используя команду SELECT, создайте запрос на выборку записей 

из двух (или более) таблиц, используя правила внешнего и внутреннего со-

единения, а также различные условия отбора и сортировки. 

10. Используя команду TRANSFORM, создайте перекрестный запрос. 

11.  Используя  команду DROP, создайте  запросы  на  удаление  табли-

цы и индекса, созданных ранее в БД. 

Сохраните все созданные запросы в базе данных.