- •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 із інших додатків
- •Контрольні питання
- •Література
Багатотабличні запити
Зазначимо, що на практиці більш часто вирішуються задачі, що потребують даних, які зберігаються у кількох Таблицях бази даних і пройшли певну обробку.
У синтаксисі інструкції SELECT (див. Розділ 3, стр. 18) у реченні FROM допускається введення кількох таблиць, це означає, що можна створювати запити, що використовують дані кількох таблиць. Такі запити прийнято називати: “багатотабличними запитами”. Зазначимо, що у багатотабличних запитах, для таблиць бази даних можна використовувати псевдоніми.
5.2.1. Правило встановлення відповідності записів, що вибираються із різних Таблиць
Зазначимо, що просте перечислення Таблиць у реченні FROM відповідає реляційній операції декартового об’єднання, за допомогою якого число відібраних записів із вказаних Таблиць значно зростає і не відповідає вимогам користувача.
Тому потрібно вказувати правило встановлення відповідності об’єднання записів із різних таблиць.
Часто таким правилом може бути співпадання значень ключових полів. Вказане правило умови вибору відповідних даних з двох Таблиць (наприклад, імена таблиць будуть А та В) схематично можна представити наступним чином:
SELECT *
FROM А,В
WHERE a# =b#;
За таких умов об’єднуватись будуть тільки ті рядки, у яких співпадають значення ключових полів а# та b#. У процесі побудови логічної моделі умов доступа до даних можуть використовуватись і інші умови, але найчастіше використовується зазначена вище умова.
Розглянемо приклади:
Вибірка більше ніж з однієї таблиці
Приклад 1. Розв’яжемо задачу: “Підготувати дані про результати тестування перших трьох груп автомобілів, якщо тестування проводили контролери, прізвища яких починаються на літери від А до П, а коди частин двигуна, у яких виявлено несправності, можуть приймати значення 1, 2, 3”.
Для зручності викладу спочатку запишемо всю інструкцію, а потім розглянемо основні принципи побудови останньої.
SQL-інструкція для вирішення вказаної задачі може бути записана наступним чином:
SELECT [Результати тестування].[Код_автомобіля], [Довідник несправностей].Назва_несправності, [Результати тестування].[Код_несправності#], [Результати тестування].Довідка, [Результати тестування].[Код_системи_двигуна#], [Контролер].Пр
FROM [Контролер] INNER JOIN ([Довідник несправностей] INNER JOIN [Результати тестування] ON [Довідник несправностей].[Код_несправності#] = [Результати тестування].[Код_несправності#]) ON Контролер.[Код контролера] = [Довідник несправностей].Контролер
WHERE ((([Результати тестування].Код_автомобіля)<4) AND (([Результати тестування].[Код_системи_двигуна#])<4) AND ((Контролер.Пр)<"Р*"));
Результат відбору даних надано у наступній таблиці:
-
Код_автомобіля
Назва_несправності
Код несправності#
Довідка
Код_системи_двигуна
Контролер
1
Перегрівання двигуна
5
05.08.2010
1
Іваненко А. А.
1
Перегрівання двигуна
5
01.09.2010
1
Іваненко А. А.
2
Перегрівання двигуна
5
01.09.2010
2
Іваненко А. А.
2
Перегрівання двигуна
5
05.08.2010
2
Іваненко А. А.
2
Збільшення витрат масла
3
01.05.2010
1
Іванчук К. І.
3
Збільшення витрат масла
3
01.05.2010
1
Іванчук К. І.
Пояснення до задачі:
В запиті дані відбираються із трьох таблиць [Довідник несправностей] , [Результати тестування], [Контролер].
Відібрані записи використовують для формування результуючої таблиці.
Для нашого прикладу відібрані записи із таблиць вважаються відповідними, якщо співпадають значення ключових полів, тобто виконується умова:
[Довідник несправностей].[Код_несправності#]=[Результати тестування].[Код_несправності#].
Як слідує із вимог задачі, записи, що задовольняють вказаній вище умові, можуть бути відібраними у результуючу таблицю, але не усі, а лише ті із них, які відповідають “додатковим” умовам. Звичайно назва “додаткові умови “ є досить умовною і вказує лише на той факт, що за цими умовами записи відбираються лише із записів, для яких виконануються вказані умови відповідності .
Для нашого прикладу всі “додаткові” умови вибору виконуються одночасно і тому можуть бути записані наступним чином:
((([Результати тестування].Код_автомобіля)<=3) AND (([Довідник несправностей].Контролер)<"Р*") AND (([Результати тестування].[Код_системи_двигуна#])<4));
Як зазначалось раніше, вказані умови повинні виконуватись одночасно з основними умовами вибору відповідних записів із таблиць.
Об’єднання основних та “додаткових” умов логічним AND утворює предикат, який записуємо у реченні WHERE.
Якщо дані вибираються із двох (і більше) таблиць і встановлено правило відповідності вибраних записів, то говорять, що проведено операції з’єднання таблиць, а про таблиці говорять, що таблиці – є з’язаними.
Способи операцій з’єднання двох таблиць передбачено у синтаксисі SELECT.