- •1. Короткі відомості про моделі даних
- •1.1. Реляційна алгебра
- •1.2. Основні поняття та нормалізація відношень реляційної бази даних
- •Сутність та особливості мови запитів sql
- •2.1. Структурована мова запитів
- •2.2. Особливості використання мовиSql
- •Оператори та синтаксис мови sql
- •Синтаксис sql
- •3.2.Ключові слова.
- •3.3. Створення sql-інструкцій (на стадії ознайомлення)
- •3.4. Групи sql – інструкцій
- •3.5. Методи виконання sql-операторів
- •4. Принципи застосування мови sql в системі управління базами данних Access
- •4.1. Використання інструкцій sql у об’єктах Access
- •4.1.2. Створення запитів sql
- •5. Використання sql для розробки запитів в Access
- •5.1. Звичайні вибірки sql та вибірки з умовою для однотабличних запитів
- •Багатотабличні запити
- •5.2.2. Запити з операціями з’єднання Таблиць
- •5.3. Додатові відомості про зв’язування таблиць
- •Вибранні питання роботи з операторами sql, що змінюють структуру бази даних
- •6.1. Створення таблиці
- •Типи даних
- •6.2. Спеціальні запити sql об’єднання
- •6.3. Короткі відомости про використання Ассеss як сервераDde
- •7. Лабораторні роботи
- •7.1.Лабораторна робота №1 Тема «Використання інструкцій sql при розробці об’єктів в системах управління базами данних ассess
- •Лабораторне завдання:
- •7.2. Лабораторна робота № 2
- •Лабораторне завдання №2
- •Хід виконання роботи:
- •7.3. Лабораторна робота № 3 Тема: Використання мови sql для розробки параметричних запитів та різних варіантів простих вибірок з фільтрацією і сортуванням.
- •Лабораторне завдання №3
- •7.4. Лабораторна робота № 4 Тема: Використання мови sql для розробки запитів на пошук відсутніх даних про об’єкти предметної області та вибірки за зразком
- •Лабораторне завдання №4
- •7.5. Лабораторна робота № 5 Тема: Запити з агрегованими функціями
- •Лабораторне завдання №5
- •Індивідуальні завдання
- •7.6. Лабораторна робота № 6 Тема: Використання мови sql для розробки багатотабличних запитів
- •Лабораторне завдання №6
- •7.7. Лабораторна робота № 7 Тема: Використання мови sql для створення структури нової таблицї бази даних
- •Лабораторне завдання №7
- •8. Питання до контролю
- •Додаток а. Приклад реляційної моделі даних
- •Додаток б. Послідовні нормальні форми та вимоги до них
- •Додаток в.Приклади використання інструкцій sql для організаціїDde із інших додатків
- •Контрольні питання
- •Література
7.7. Лабораторна робота № 7 Тема: Використання мови sql для створення структури нової таблицї бази даних
Мета:
Навчитись створювати структуру нової таблиці засобами SQL.
Зауваження. Сучасні технології висувають нові вимоги до якості інформаційного забезпечення. Вказані вимоги ініціюють модифікацію, а інколи і нову розробку програмних продуктів. SQL надає засоби для зміни структури бази даних, наприклад – створення нової таблиці бази даних на основі декомпозиції існуючої таблиці.
Лабораторне завдання №7
Модифікувати структуру бази даних.
Створити нову (порожню ) таблицю.
Розробити запит до бази даних нової структури бази даних.
Хід виконання роботи:
Повторити теоретичний матеріал підрозділів 3.1., 5.2.6. - 5.3. Ознайомитись з теоретичним матеріалом, див.розділ 6.1.
Відкрити індивідуальну базу даних;
Розробити нову структуру бази даних з врахуванням висунутих вимог до якості проектування бази даних.
Перейти в режим SQL (вкладка Запрос, <Cоздать>, Конструктор, <Создать> , Вид, Режим SQL);
Розглянути задачу “Підготувати нову таблицю бази даних”
Розробити концептуальну модель нової версії індивідуальної бази даних.
Скласти інструкцію CREATE ТADLE . Ввести текст інструкції, запустити запит на виконання, перевірити правильність виконання. Записати запит SQL.
Розглянути схему даних для модифікованої бази даних.
Підготувати звіт з виконання лабораторної роботи № 7. У звіт включити:
Титульну сторінку;
Вимоги до нової бази даних;
Концептуальну модель структури модифікованої бази даних;
Синтаксис інструкції CRETE TABLE;
Текст розробленої інструкції;
Схему даних.
Відповісти на контрольні запитання.
Тривалість виконання лабораторної роботи №7 – 2 академічні години.
Контрольні запитання до лабораторноїроботи № 7
В чому полягає правило встановлення відповідності записів, що вибираються із різних таблиць?
Назовіть операції з’єднання, які ви знаєте.
Яким чином вказується тип даних для нового поля.?
8. Питання до контролю
Завдання: Визначити призначення запитів за навединими інструкціями SQL.
1. SELECT [Довідник несправностей].Контролер, Count([Результати тестування].[Код_несправності#]) AS Кількість, Avg([Довідник несправностей].[Ціна тестування]) AS [Avg_Ціна тестування]
FROM [Довідник несправностей] INNER JOIN [Результати тестування] ON [Довідник несправностей].[Код_несправності#] = [Результати тестування].[Код_несправності#]
GROUP BY [Довідник несправностей].Контролер
HAVING (((Avg([Довідник несправностей]![Ціна тестування]))<50))
ORDER BY [Довідник несправностей].Контролер;
2. SELECT [Системи двигуна].Назва_системи, [Довідник несправностей].Контролер, [Довідник несправностей].Назва_несправності, Count([Результати тестування].Код_автомобіля) AS Count_Код_автомобіля, [Довідник несправностей].[Ціна тестування]
FROM [Системи двигуна] INNER JOIN ([Довідник несправностей] INNER JOIN [Результати тестування] ON [Довідник несправностей].[Код_несправності#] = [Результати тестування].[Код_несправності#]) ON [Системи двигуна].[Код_системи_двигуна#] = [Результати тестування].[Код_системи_двигуна#]
GROUP BY [Системи двигуна].Назва_системи, [Довідник несправностей].Контролер, [Довідник несправностей].Назва_несправності, [Довідник несправностей].[Ціна тестування];
3. SELECT [Довідник несправностей].Назва_несправності, Count([Результати тестування].[Код_несправності#]) AS Кількість, [Довідник несправностей].[Код_несправності#], [Довідник несправностей].Контролер, [Довідник несправностей].[Ціна тестування], [Результати тестування].[Код_несправності#], Count([Результати тестування]![Код_несправності#])*([Довідник несправностей]![Ціна тестування]) AS [Вартість тестування]
FROM [Довідник несправностей] LEFT JOIN [Результати тестування] ON [Довідник несправностей].[Код_несправності#] = [Результати тестування].[Код_несправності#]
GROUP BY [Довідник несправностей].Назва_несправності, [Довідник несправностей].[Код_несправності#], [Довідник несправностей].Контролер, [Довідник несправностей].[Ціна тестування], [Результати тестування].[Код_несправності#]
ORDER BY [Довідник несправностей].[Код_несправності#];
4.(Запит 1.) SELECT TOP 4 [Довідник несправностей].[Код_несправності#], [Довідник несправностей].[Ціна тестування], [Запит14]![Кількість]*[Довідник несправностей]![Ціна тестування] AS Вартість
FROM [Довідник несправностей] RIGHT JOIN Запит14 ON [Довідник несправностей].[Код_несправності#] = Запит14.[Код_несправності#]
ORDER BY [Запит14]![Кількість]*[Довідник несправностей]![Ціна тестування] DESC;
(Результати тестування Запит)
SELECT DISTINCTROW [Результати тестування].[Код_несправності#], Count(*) AS Кількість
FROM [Результати тестування]
GROUP BY [Результати тестування].[Код_несправності#]
ORDER BY Count(*) DESC;
5. (Запит 10) SELECT DISTINCTROW [Результати тестування].[Код_несправності#], Count(*) AS Кількість
FROM [Результати тестування]
GROUP BY [Результати тестування].[Код_несправності#]
ORDER BY Count(*) DESC;
6. (Запит 11)
SELECT [Довідник несправностей].Назва_несправності, [Довідник несправностей].Контролер, [Довідник несправностей].[Ціна тестування]
FROM [Довідник несправностей]
WHERE ((([Довідник несправностей].Назва_несправності) Like "З*"));
7.(Запит12)
SELECT [Довідник несправностей].Назва_несправності, [Довідник несправностей].Контролер, [Довідник несправностей].[Ціна тестування]
FROM [Довідник несправностей]
WHERE ((([Довідник несправностей].Назва_несправності) Like "З*"));
8. (Запит 13)
SELECT [Довідник несправностей].Контролер, Avg([Довідник несправностей].[Ціна тестування]) AS Середня_ціна_тестування, Min([Довідник несправностей].[Ціна тестування]) AS [Min_Ціна тестування]
FROM [Довідник несправностей]
GROUP BY [Довідник несправностей].Контролер
HAVING (((Avg([Довідник несправностей].[Ціна тестування]))>50)) OR (((Min([Довідник несправностей].[Ціна тестування]))>50));
9 (Запит 14)
SELECT [Результати тестування].[Код_несправності#], Count([Результати тестування].[Код_несправності#]) AS Кількість
FROM [Результати тестування]
GROUP BY [Результати тестування].[Код_несправності#];
10. (Запит 15)
SELECT [Довідник несправностей].Назва_несправності, [Довідник несправностей].[Код_несправності#], IIf([Довідник несправностей]![Код_несправності#]=[Запит14]![Код_несправності#],[Запит14]![Кількість],0) AS Кількість, [Довідник несправностей].[Ціна тестування], IIf([Довідник несправностей]![Код_несправності#]=[Запит14]![Код_несправності#],[Запит14]![Кількість]*[Довідник несправностей]![Ціна тестування],0) AS Вартість
FROM [Довідник несправностей] LEFT JOIN Запит14 ON [Довідник несправностей].[Код_несправності#] = Запит14.[Код_несправності#]
ORDER BY IIf([Довідник несправностей]![Код_несправності#]=[Запит14]![Код_несправності#],[Запит14]![Кількість]*[Довідник несправностей]![Ціна тестування],0) DESC;
11.(Запит 16)
SELECT [Результати тестування].[Код_несправності#], Count([Результати тестування].[Код_несправності#]) AS Кількість
FROM [Результати тестування]
GROUP BY [Результати тестування].[Код_несправності#];
12 (Запит 17)
SELECT [Довідник несправностей].Назва_несправності, [Результати тестування].[Код_системи_двигуна#], [Довідник несправностей].[Ціна тестування], [Довідник несправностей].Контролер
FROM [Довідник несправностей] INNER JOIN [Результати тестування] ON [Довідник несправностей].[Код_несправності#] = [Результати тестування].[Код_несправності#]
ORDER BY [Довідник несправностей].Контролер;
13.(Запит 19)
SELECT [Довідник несправностей].Назва_несправності, [Довідник несправностей].[Ціна тестування]
FROM [Довідник несправностей]
WHERE ((([Довідник несправностей].[Ціна тестування]) In (30,50,34)));
14. (Запит 2)
SELECT *
FROM [Результати тестування]
WHERE ((([Результати тестування].[Код_несправності#])=3)) OR ((([Результати тестування].[Код_системи_двигуна#])=4));
(Запит 21)
SELECT [Довідник несправностей].Назва_несправності, Count([Результати тестування].[Код_несправності#]) AS Кількість, [Довідник несправностей].[Код_несправності#], [Довідник несправностей].Контролер, [Довідник несправностей].[Ціна тестування], [Результати тестування].[Код_несправності#], Count([Результати тестування]![Код_несправності#])*([Довідник несправностей]![Ціна тестування]) AS [Вартість тестування]
FROM [Довідник несправностей] LEFT JOIN [Результати тестування] ON [Довідник несправностей].[Код_несправності#] = [Результати тестування].[Код_несправності#]
GROUP BY [Довідник несправностей].Назва_несправності, [Довідник несправностей].[Код_несправності#], [Довідник несправностей].Контролер, [Довідник несправностей].[Ціна тестування], [Результати тестування].[Код_несправності#]
ORDER BY [Довідник несправностей].[Код_несправності#];
(Запит 3)
SELECT Max([Довідник несправностей].[Ціна тестування]) AS Найдорогше, Avg([Довідник несправностей].[Ціна тестування]) AS Середня_ціна
FROM [Довідник несправностей]
WHERE ((([Довідник несправностей].Контролер) Not Like "І*"));
(Запит 4)
SELECT *
FROM [Результати тестування]
WHERE ((([Результати тестування].Код_автомобіля)=5));
(Запит 5)
SELECT [Результати тестування].[Код_несправності#], Count(*) AS Кількість
FROM [Результати тестування]
GROUP BY [Результати тестування].[Код_несправності#]
ORDER BY Count(*) DESC;
19 .( Запит 6)
SELECT [Результати тестування].Код_автомобіля, Count([Результати тестування].[Код_несправності#]) AS [Кількість протестованих авто групи#]
FROM [Результати тестування]
GROUP BY [Результати тестування].Код_автомобіля
HAVING ((([Результати тестування].Код_автомобіля)=[Введіть код автомобіля]));
20.(Запит 7)
SELECT [Довідник несправностей].Назва_несправності, [Результати тестування].[Код_системи_двигуна#], [Довідник несправностей].[Ціна тестування], [Довідник несправностей].Контролер
FROM [Довідник несправностей] INNER JOIN [Результати тестування] ON [Довідник несправностей].[Код_несправності#] = [Результати тестування].[Код_несправності#]
ORDER BY [Довідник несправностей].Контролер;
(Запит 8)
SELECT [Системи двигуна].*
FROM [Системи двигуна];
21. (Запит 9)
SELECT [Довідник несправностей].Назва_несправності, [Результати тестування].Код_автомобіля
FROM [Довідник несправностей] RIGHT JOIN [Результати тестування] ON [Довідник несправностей].[Код_несправності#] = [Результати тестування].[Код_несправності#];
22. (Запит Л2впр1)
SELECT Count([Довідник несправностей].[Ціна тестування]) AS [Кількість несправностей у групі тестування], Int([Довідник несправностей]![Ціна тестування]/25)*25 AS Вилка, Int([Довідник несправностей]![Ціна тестування]/25)*25+25 AS Вилка_ДО
FROM [Довідник несправностей]
GROUP BY Int([Довідник несправностей]![Ціна тестування]/25)*25;
23.(Підсумковий)
SELECT [Довідник несправностей].[Код_несправності#], [Довідник несправностей].Назва_несправності, [Довідник несправностей].Контролер, [Довідник несправностей].[Ціна тестування], Запит15.Кількість, [Запит15]![Кількість]*[Довідник несправностей]![Ціна тестування] AS Вартість
FROM [Довідник несправностей] INNER JOIN Запит15 ON [Довідник несправностей].[Код_несправності#] = Запит15.[Код_несправності#]
ORDER BY [Довідник несправностей].[Код_несправності#];
24. (Пр1_5_1_2)
SELECT [Результати тестування].Код_автомобіля, [Результати тестування].[Код_несправності#], [Довідник несправностей].Назва_несправності, Контролер.Пр, [Результати тестування].[Код_системи_двигуна#], [Довідник несправностей].[Ціна тестування], [Результати тестування].Довідка
FROM Контролер INNER JOIN ([Довідник несправностей] INNER JOIN [Результати тестування] ON [Довідник несправностей].[Код_несправності#] = [Результати тестування].[Код_несправності#]) ON Контролер.[Код контролера] = [Довідник несправностей].Контролер
WHERE ((([Результати тестування].Код_автомобіля)<=3) AND ((Контролер.Пр)<"П*") AND (([Результати тестування].[Код_системи_двигуна#])<4));
25.(розширення стовпчика)
SELECT [Довідник несправностей].[Код_несправності#], IIf([Довідник несправностей]![Код_несправності#]=[Запит14]![Код_несправності#],[Запит14]![Кількість],0) AS Кількість
FROM [Довідник несправностей] LEFT JOIN Запит14 ON [Довідник несправностей].[Код_несправності#] = Запит14.[Код_несправності#]
ORDER BY [Довідник несправностей].[Код_несправності#];