МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
ДЕРЖАВНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Лабораторна робота №2
з курсу "Системи управління базами даних"
на тему:
«РОБОТА З ЗАПИТАМИ В СУБД ACCESS»
Мета: навчитись створювати запити в СУБД Access різними способами, встановлювати властивості запиту в цілому та кожного поля запиту зокрема.
Варіант№1
Предметна область “Студент”.
Кожен студент характеризується такими атрибутами : прізвище, імя, по батькові, номер студентського квитка, рік народження, місце народження, адреса, стать, сімейний стан, стипендія, кімната в гуртожитку. В одній кімнати проживає до трьох студентів. Кожен студент вчиться в певній групі, яка має свого старосту, та разом з іншими студентами групи вчить та здає певні предмети у певних викладачів, при цьому отримуючи деяку суму балів та державну оцінку. Студент може мати деякі захоплення (хоббі). Студенти відвідують бібліотеку де можна позичити книжку, що характеризується номером, автором, назвою, жанром. Кожна книжка не може бути одночасно видана двом студентам. Студент не може мати одночасно позиченими книжок на суму більше ніж 100 крб. Стипендія нараховується згідно з рейтингом за певною процедурою.
Система повинна видавати звіти :
список студентів по групах,
список студентів які мають рейтинг від X до Y,
список студентів та книг що не повернені більше року (з підсумовуванням кількості книг та грошового боргу студента),
довідка для студента про його рейтинг та розмір стипендії.
Список студентів по групах:
SELECT Студент.ПІБ
FROM Студент INNER JOIN (Група INNER JOIN Групи ON Група.[№ групи] = Групи.[№ групи]) ON Студент.№студентського = Групи.[№ студентського]
WHERE (((Група.[Назва групи])=[Введіть назву групу]) AND ((Група.[№ групи])=[Введіть № групу]))
ORDER BY Студент.ПІБ;
Приклад:
Список студентів за рейтингом:
SELECT Студент.ПІБ, Avg(Навчання.[Кількість балів]) AS [Avg-Кількість балів]
FROM Студент INNER JOIN Навчання ON Студент.№студентського = Навчання.[№ студентського]
GROUP BY Студент.ПІБ
HAVING (((Avg(Навчання.[Кількість балів]))>=[Вкажіть нижню межу рейтенгу] And (Avg(Навчання.[Кількість балів]))<=[Вкажіть верхню межу рейтенгу]));
Приклад:
Борг:
SELECT Студент.ПІБ, Sum(Книги.Ціна) AS Сума_боргу, Count(Книги.Назва) AS [CountOf Назва]
FROM Студент INNER JOIN (Книги INNER JOIN (Бібліотека INNER JOIN Позика ON Бібліотека.[№ бібліотеки] = Позика.[№ бібліотеки]) ON Книги.[№ книги] = Бібліотека.[№ книжки]) ON Студент.№студентського = Позика.[№ студентського]
WHERE (((Позика.[Дата повернення]) Is Null))
GROUP BY Студент.ПІБ;
Приклад:
Довідка про студента:
SELECT Avg(Навчання.[Кількість балів]) AS Рейтинг, Студент.Стипендія
FROM Студент INNER JOIN Навчання ON Студент.№студентського = Навчання.[№ студентського]
WHERE (((Студент.ПІБ)=[Введіть ПІБ]))
GROUP BY Студент.Стипендія;
Приклад:
Сортування(зв'язок OR та AND ):
SELECT Студент.ПІБ, Студент.[Рік народження], Студент.Стать, Студент.[Сімейний стан], Студент.[Місцу народження]
FROM Студент
WHERE (((Студент.Стать)="Ж") AND ((Студент.[Місцу народження])="Львів" Or (Студент.[Місцу народження])="Стебник"))
ORDER BY Студент.ПІБ DESC;
Перехресне сортування:
TRANSFORM Count(Студент.ПІБ) AS [Count-ПІБ]
SELECT Студент.[Сімейний стан]
FROM Хоббі INNER JOIN (Студент INNER JOIN [Хоббі студента] ON Студент.№студентського = [Хоббі студента].[№ студентського]) ON Хоббі.[№ хоббі] = [Хоббі студента].[№ хоббі]
GROUP BY Студент.[Сімейний стан], Студент.Стать
PIVOT Хоббі.Назва;
Вибірка з кількома параметрами:
SELECT Проживання.Початок, Проживання.[№ кімнати], Проживання.[№ студентського]
FROM Проживання
WHERE (((Проживання.Початок) Between [введіть дату початку проживання] And [введіть дату закінчення проживання]));
Вибірка за першою буквою:
SELECT Книги.[№ книги], Книги.Автор, Книги.Назва, Книги.Жанр, Книги.Ціна
FROM Книги
WHERE (((Книги.Автор) Like [введіть першу букву ім'я автора] & "*") AND ((Книги.Назва) Like
"*" & [введіть будь яку комбінацію букв з назви книги] & "*"));
Видалення 1 з 1:
DELETE Хоббі.*, Хоббі.[№ хоббі]
FROM Хоббі
WHERE (((Хоббі.[№ хоббі])="13"));
Видалення 1 з ?:
DELETE Хоббі.[№ хоббі]
FROM Хоббі
WHERE (((Хоббі.[№ хоббі])="13"));
Додавання:
INSERT INTO Навчання
SELECT Викладач.*
FROM Викладач INNER JOIN Навчання ON Викладач.[№ викладача] = Навчання.[№ викладача];
Оновлення на базі 1 таблиці:
UPDATE Книги SET Книги.Ціна = [Ціна]*1.1;
Оновлення на базі к-ох таблиць:
UPDATE Студент INNER JOIN (Книги INNER JOIN (Бібліотека INNER JOIN Позика ON Бібліотека.[№ бібліотеки] = Позика.[№ бібліотеки]) ON Книги.[№ книги] = Бібліотека.[№ книжки]) ON Студент.№студентського = Позика.[№ студентського] SET Книги.Ціна = [Ціна]*1.8;
Висновок: на цій лабораторній роботі я навчилась створювати запити в СУБД Access різними способами, встановлювати властивості запиту в цілому та кожного поля запиту зокрема.