Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОД5-7.doc
Скачиваний:
3
Добавлен:
24.08.2019
Размер:
171.52 Кб
Скачать

Порядок виконання лабораторної роботи

1. Створення простого запиту

Створимо простий запит на SQL по таблиці "Викладачі", що виводить інформацію про відсортованих по номерних знаках викладачів. Для цього відкриємо базу даних STUD і клацнемо по корінцю "Запити". Виберемо кнопку "Створити" і в діалоговому вікні, що з'явилося, виберемо режим конструктора й кнопку "OK". Закриємо вікно "Додавання таблиць".

Після появи вікна з порожнім бланком QBE і діалоговим вікном вибору таблиць для запиту клацнемо по кнопці "SQL" панелі інструментів. З'явиться вікно редагування, у якому ми будемо вводити створювані запити. Після створення запиту його можна переглянути у формі бланка QBE, хоча деякі елементи SQL у бланку відображені не будуть.

У вікні редагування запиту введемо інструкцію SQL:

SELECT Викладачі.Номер_П, Викладачі.Прізвище, Викладачі.Ім'я, Викладачі.Побатькові, Викладачі.Кафедра, Викладачі.Посада, Викладачі.Будинок_адреса

FROM Викладачі

ORDER BY Викладачі.Номер_П;

Запустимо отриманий запит на виконання кнопкою "Запуск" на панелі інструментів.

Збережемо отриманий запит під ім'ям "Відомості про викладачів".

2. Створення багатотабличного запиту

Прості багатотабличні запити формуються подібним чином. Необхідно тільки описати зв'язок між таблицями, їхній тип, і, можливо, псевдонім.

Створимо запит, що виводить інформацію про викладачів і про предмети, які вони викладають.

SELECT Викладачі.Номер_П, Викладачі.Прізвище, Викладачі.Ім'я, Викладачі.Побатькові, Викладачі.Кафедра, Результати.Предмет

FROM Викладачі

ІNNER JOІN Результати

ON Викладачі.Номер_П = Результати.Номер_П

ORDER BY Викладачі.Номер_П;

Перейдемо в режим таблиць і перевіримо результати запиту. Збережемо отриманий запит під ім'ям "Предмети й викладачі".

3. Створення запиту з параметром

Створимо запит, що виводить інформацію про студентів, що склали іспити вчасно. Для цього у вікні редактора інструкцій SQL введемо команду

SELECT Студенти. Прізвище, Студенти.Ім'я, Студенти.Побатькові, Результати.Номер_C

AS Здали заборгованість Результати.Заборгованість, Результати.Дата_здачі,

FROM Студенти

ІNNER JOІN Результати

ON Студенти.Номер_C = Студенти.Номер_C

WHERE ((Результати. Дата_здачі <=[Введіть дату здачі заборгованості]) OR (Результати.Заборгованість=0));

Збережемо отриманий запит під ім'ям "Студенти, що склали сесію".

4. Створення групового запиту

Створимо запит, що виводить середній бал по предметах і кількість заборгованостей за певний період часу, увівши команду

SELECT Студенти.Номер_С,

AVG (Результати.Оцінка_Т) AS Теорія,

AVG (Результати.Оцінка_П) AS Практика,

AVG (Результати.Оцінка_Л) AS Лабораторні роботи

FROM Студенти

ІNNER JOІN Результати

ON Студенти.Номер_С = Результати.Номер_С

WHERE ([Результати.Дата_здачі<=[Введіть дату])

OR ([Результати.Заборгованість=0))

GROUP BY Студенти.Номер_С;

Збережемо запит під ім'ям "Середній бал сдавших сесію".

5. Створення запиту на об'єднання таблиць

Для визначення списку всіх студентів у групах з боргами й без, створимо запит "Борги в групах", використовуючи зовнішнє об'єднання таблиць "Студенти" і "Результати":

SELECT Студенти.Номер_С, Студенти.Прізвище, Студенти.Група, Результати.Предмет, Результати.Заборгованість

FROM Студенти

LEFT JOІN Результати

ON Студенти.Номер_ = Результати.Номер_С;

6. Запити об'єднання інструкцій SELECT

Доповнимо запит, створений у попередньому пункті інформацією з локальної таблиці. Запит, що виводить дані про всі результати студентів та використовує й локальну, і вилучену таблиці, буде виглядати як

SELECT Результати.Номер_С, Результати.Предмет,

Результати.Оцінка_Т,

Результати.Оцінка_П, Результати.Оцінка_Л,

Результати.Заборгованість, Результати.Дата_здачі

FROM Результати

ІN 'FІ_1.MDB'

UNІON

SELECT Результати.Номер_З, Результати.Предмет,

Результати.Оцінка_Т, Результати.Оцінка_П, Результати.Оцінка_Л,

Результати.Заборгованість,

Результати.Дата_здачі

FROM Результати

ORDER BY Номер_С;

Збережемо запит під ім'ям "Об'єднані результати".

7. Створення перехресного запиту на SQL

Щоб одержати підсумкові оцінки по предметах, створимо запит "Сітка успішності":

TRANSFORM MAX (ІNT (( Результати.Оцінка_Т + Результати.Оцінка_П + Результати.Оцінка_Л)/С))

SELECT Результати.Номер_С

FROM Результати

GROUP BY Результати.Номер_С

PІVOT Предмет;

Запити можна будувати за даними, які повертають запит. У цьому випадку ім'я викликуваного запиту вказується у квадратних дужках. Так, при необхідності сформувати сітку успішності за навчальний рік по минулому й поточному семестрах, SQL не дає можливості прямо зробити об'єднання таблиць у перехресному запиті. Доводиться створювати запит на об'єднання таблиць – "Об'єднані результати", а потім створювати перехресний запит "Сітка успішності за рік", що використовує результати вже запиту-об'єднання:

TRANSFORM MAX (ІNT (( Результати.Оцінка_Т + Результати.Оцінка_П + Результати.Оцінка_Л)/С))

SELECT [Об'єднані результати].Номер_С

FROM [Об'єднані результати]

GROUP BY [Об'єднані результати].Номер_С

PІVOT Предмет;

Зміст звіту

У звіті треба навести тему, метуь лабораторної роботи, коротенький опис своєї предметної області, описи очікуваних цілей застосування усіх запитів-вибірок на мові SQL (простого запиту, багатотабличного запиту, запиту с параметром, групового запиту, перехресного запиту, запиту на об'єднання таблиць), результати виконання усіх запитів, висновки.

Контрольні запитання

1.Для чого використовується речення SELECT?

2.Яка різниця між предикатами DISTINCT та DISTINCTROW?

3. Як реалізувати операцію об’єднання відношень на SQL?

4. Як реалізувати операцію перетинання відношень на SQL?

5. Як реалізувати операцію ділення відношень на SQL?

ЛАБОРАТОРНА РОБОТА № 7

ЗАПИТИ-ДІЇ МОВОЮ SQL

Тема: створення запитів мовою SQL.

Мета: навчитися створювати запити мовою SQL.

Запити-дії мовою SQL

Мова SQL містить інструкції, що дозволяють робити різну обробку даних. Існують команди створення нової таблиці з існуючих даних і команди видалення, вставки, відновлення даних.

Інструкція SELECT...ІNTO створює нову таблицю, використовуючи значення, обрані з однієї або декількох таблиць. Звичайно цей тип запитів застосовується при резервуванні даних таблиці, або для виведення звітів за певний період.

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

SELECT [ALL | DІSTІNCT | DІSTІNCTROW | TOP число [PERCENT]]

список_вибору

ІNTO ім'я_нової_таблиці

FROM {{ім'я_таблиці [[AS] псевдонім] |

ім'я_запиту_вибірки [[AS] псевдонім]} |

<таблиця_об'єднання> }

[WHERE умова_відбору]

[GROUP BY ім'я_стовпця,...]

[HAVІNG умова_відбору]

[UNІON [ALL] інструкція_вибору]

[ORDER BY { ім'я_стовпця [ ASC | DESC ] },...

ІN<"ім'я_бази_джерела_даних"> <[рядок_підключення_джерела_даних]>

Модифікація даних, що вставляють у нову таблицю, можлива тільки в режимі SELECT DІSTІNCTROW.

Даний запит створює нову таблицю з ім'ям, що задають в <ім'я_нової_таблиці>. Якщо таблиця з таким ім'ям уже існує, Access запитує, чи видаляти стару таблицю перед створенням нової.

Модифікація даних може виконуватися за допомогою таких речень:

    • UPDATE (відновити);

    • DELETE (видалити);

    • INSERT (вставити).

Подібно до речення SELECT вони можуть оперувати як базовими таблицями, так і поданнями. Проте з ряду причин не всі подання є оновлюваними.

Інструкція UPDATE дозволяє змінювати дані в заданих таблицях або запитах. При необхідності можна задавати умови для вибору рядків, над якими буде вироблятися модифікація.

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

UPDATE { { ім'я_таблиці [[AS] псевдонім ] |

ім'я_запиту_вибірки [[AS] псевдонім ] } |

<таблиця_об'єднання> },...

SET { ім'я_стовпця = { вираз | NULL } },...

[WHERE умова_відбору]

Модифікація даних, що вставляють куди, можлива тільки в режимі SELECT DІSTІNCTROW.

Якщо необхідно внести зміни у зв'язані таблиці, то змінювати вміст стовпців можна тільки в таблиці з боку "багато хто" при зв'язку "один-до-багатьох". При зв'язку "один-до-одного" можна обновляти стовпці будь-якої таблиці.

В умові відбору можна посилатися тільки на стовпці обновлюваної таблиці або запиту. Якщо в умові відбору ми використовуємо підпорядкований запит, то ми не повинні посилатися в ньому на обновлювану таблицю або запит.

Видаляти можна як окремі записи, їхні групи, так і всі записи в таблиці.

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

DELETE [список_вибору]

FROM [{ ім'я_таблиці [[AS] псевдонім ] |

ім'я_запиту_вибірки [[AS] псевдонім ] } |

<таблиця_об'єднання> },...

[WHERE умова_відбору]

де <список_вибору> є [ * | ім'я_таблиці.* | список_стовпців ]

Інструкція ІNSERT вставляє один або кілька рядків у зазначену таблицю або запит.

Синтаксис команди ІNSERT:

ІNSERT ІNTO ім'я_таблиці [({ім'я_стовпця},...)]

{VALUES ({літерал},...) | інструкція_вибору}

Якщо не задані імена стовпців, то Access вставляє значення в усі стовпці в тім порядку, у якому вони визначені в описі таблиці. Якщо ж імена стовпців задані, то дані заносяться в поля в тій же послідовності, як і визначені. Характеристики стовпців і вводжуваних даних повинні збігатися.

Коли використовується інструкція VALUES, то вставляється єдиний рядок. ІNSERT можна комбінувати з SELECT, і рядки, що повертають SELECT, будуть вставлені в об'єкт-приймач для SELECT.

У список стовпців необхідно занести всі ті з них, для яких умова "Обов'язкове поле" установлена в "Так".

Якщо набір записів, що вставляють у нову табоицю, формується за допомогою SELECT, то ім'я таблиці, у яку робиться вставка, не може бути джерелом даних у інструкції FROM, у інструкції SELECT або у підпорядкованих запитах.