Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Інститут ІКНІ
Кафедра АСУ
ЗВІТ
До лабораторної роботи № 3
На тему: “Проектування запитів до бази даних”
Мета роботи: Вивчення засобів розроблення запитів RQBE, виглядів запитів, їхнього виконання та застосування для роботи з реляційними базами даних.
Теоретична частина
Запити застосовуються користувачем для вибірки з бази даних інформації, яка його цікавить, тобто відповідає певним критеріям. Наприклад, може йтися про пошук всіх клієнтів, що живуть в Україні, або про вибір відомостей про торгові операції, здійснені за останній квартал.
Якщо необхідно скласти запит на підставі декількох таблиць, то між цими таблицями попередньо необхідно встановити відношення, зв'язуючи поля одне з одним.
Результат роботи запиту Access являє собою таблицю яка називається Dynaset (динамічний, тимчасовий набір даних). Під час кожного виконання запиту заново здійснюється вибірка даних.
За способом побудови запити діляться на: QBE–запити (Query By Example - запит за зразком), користувач дає їм визначення, специфікуючи окремі параметри у вікні проектування з використанням підказок (зразків), та SQL–запити (Structured Query Language - структурована мова запитів). Формулюючи їх, користувач застосовує інструкції і функції, створюючи деякий описання. QBE–запит Access легко транслює у відповідний SQL–запит. Під час зворотної операції можливі деякі нюанси та неточності.
Запити можна поділити на певні категорії: запити на вибір інформації та виконання статистичних підрахунків, запити, що вносять зміни, параметричні та перехресні запити.
Запит на вибірку (Select Query)
Найпоширеніший запит, який здійснює вибірку даних з таблиці, таблиць та з інших запитів.
<Ім’я поля результуючої таблиці>: [<Назва таблиці>]![<Ім’я поля>]
Приклад: CustID: [Customers]![Customer ID]
Такий запис означає, що результуюча таблиця (результат роботи цього запиту) буде містити поле з іменем CustID, значеннями якого є значення поля CustomerlD з таблиці Customers, звичайно не всі, а лише ті, які задовольнили критерії запиту.
Якщо у вікні конструктора запитів натиснути кнопку меню з літерою S (або вибрати пункт Totals з меню View), то з’явиться ще одне поле - Total (Групова операція). Це поле призначене для виконання групових обчислень. Наприклад, необхідно підрахувати загальну суму всіх замовлень кожного з клієнтів. Для того, щоб здійснити обчислення, необхідно вибрати одну з опцій у списку.
Дванадцять опцій цього списку можна поділити на чотири категорії (див. табл. 12).
Таблиця 12.
Типи операцій у запитах
Категорія
Призначення
1
2
Group By
(Групування)
Збирає записи, що мають спільні ознаки, у групи, над якими потім виконуються операції
Набір операцій
Визначає математичну операцію, яка буде виконана над полем
Expression
(Вираз)
Об’єднує декілька операцій у вираз
Where
(Умова)
Накладає деяке обмеження
Категорія групування дає змогу вибрати певні поля, які пізніше будуть опрацьовуватись як група. Вибір категорії виразу вказує на те, що поле буде опрацьовано у декілька етапів. Під час вибору категорії умови встановлюються обмежувальні критерії для полів, над якими буде виконано статистичні розрахунки.
Зауваження. Враховуючи те, що Count пропустить всі порожні значення, якщо необхідно підрахувати всі поля (зокрема й ті, що містять порожні значення), треба вибирати поле первинного ключа для застосування цієї операції.
Перехресний запит (Crosstab Query)
У Access можна створювати особливі типи запитів - перехресні. Вони відрізняються тим, що відображають сумарну інформацію у компактному та у зручному для читання вигляді. Перехресний запит створює з таблиці звичайну матрицю, яка описує відповідність значень одного поля значенням іншого поля у таблиці. Він надає кінцеву інформацію для вказаних полів у формі розрідженого масиву. По вертикалі такого масиву відображаються значення першого поля, по горизонталі - другого. На перетині відповідних рядка та стовпчика розміщується підсумкове значення, яке розраховується для поєднання їх у таблиці. Підсумкове значення може бути вибране як агрегатна функція типу сума, кількість тощо. Для наочності нижче подано приклади перехресних запитів.
Запит на додавання (Append Query)
Запит на додавання застосовується для вміщення запису з таблиці у будь- яку іншу. Таблиця, в яку потрібно додати записи, вже повинна існувати. Записи можна додавати як у межах однієї бази даних, так і у таблицю будь-якої іншої бази даних Access.
Під час роботи із запитами на додавання необхідно дотримуватись таких правил:
Якщо таблиця, в яку додаються записи, містить первинний ключ, то значення записів, що додаються, обов’язково повинні бути задані і мати унікальний характер.
Додаючи записи, що містять поле AutoNumber, не варто вносити це поле у таблицю, яка вже містить інформацію. Не треба також використовувати поля AutoNumber, додаючи записи у порожню таблицю, якщо є потреба вказати нові значення для цього поля.
Під час виконання запитів на додавання копіюються тільки ті поля, імена яких у двох таблицях збігаються. Припустимо, є дві таблиці, в одній з яких шість, а у другій дев’ять полів, причому п’ять полів з першої таблиці мають відповідні поля у другій. Після додавання записів з першої таблиці у другу буде заповнено тільки п’ять полів.
Якщо необхідно додати записи до таблиці іншої бази даних, то спочатку треба приєднати таблицю-джерело до цієї бази за допомогою команди отримання зовнішніх даних і зв’язати таблиці (Get External Data^Link Tables).
Запит на видалення записів (Delete Query)
З усіх запитів, що вносять зміни, запит на видалення найнебезпечніший. На відміну від інших типів запитів, він видаляє записи з таблиці назавжди і без можливості відмінити зміни. Як і інші запити, що вносять зміни, запит на видалення обробляє групу записів, спираючись на критерії вибору. Такий запит може видаляти записи з декількох таблиць одночасно.
У разі відношення один-до-багатьох з вимкнутою опцією Каскадне видалення записів Access за один раз видаляє записи тільки з однієї таблиці. Точніше, спочатку видаляються записи з боку багато. Потім необхідно видалити з запиту таблицю, що містить частину багато, і видалити записи з таблиці, що містить частину один. Такий спосіб не дуже зручний і потребує багато часу. Видаляючи зв’язані запити з таблиць, що перебувають у відношенні один-до-багатьох, треба переконатись у тому, що опція Каскадне оновлення ввімкнута.
Запис на видалення дає змогу видалити записи повністю, а не очистити вказані поля. Якщо потрібно видалити дані тільки у вказаних полях, то необхідно скористатись запитом на оновлення.
Параметризований запит
За допомогою параметризованих запитів можна автоматизувати зміну критеріїв у часто використовуваних запитах. Параметризований запит, як випливає з його назви, кожен раз під час виконанні потребує введення певних параметрів. Це виключає потребу у постійній модифікації запиту у режимі конструктора запиту для зміни значень критеріїв. Параметризовані запити також зручно використовувати у формах та звітах, оскільки кожен раз під час відкриття Access вимагає від користувача ввести необхідний параметр. У побудові таких запитів обмежень на кількість параметрів немає, тобто можна побудувати запит, що вимагатиме введення декількох параметрів.
Опис виконаної роботи.
У лабораторній роботі засобами RQBE було створено запити у відповідності до вимог завдання. Всі запити будувались на основі таблиць бази даних, яка була створена у лабораторній роботі №2.
А) Опис запитів:
Запит на вибір даних з таблиць бази даних без критеріїв пошуку.
Необхідно отримати інформацію про назву книги, прізвище та ім’я автора, рік видавництва, жанр та кількість на складі, які занесені в базу. Для цього створюємо простий запит на вибір даних. З таблиці Книги вибираємо поля Назва книги, Рік, Жанр та Кількість на складі. З таблиці Автори вибираємо поля Прізвище т Ім’я. Результат роботи запиту проілюстровано на мал.1.
Мал1. Запит на вибір даних без критеріїв пошуку.
Простий запит на вибір даних за критерієм.
Необхідно отримати інформацію про ті книги, рік видавництва яких – 2011. Для цього створюємо простий запит на вибір даних з двох таблиць: Книги і Автори. В полі Рік таблиці Книги вказуємо критерій відбору даних (“2011”). Відбираємо дані з полів Прізвище, Ім’я таблиці Автори і полів Назва книги та Рік таблиці Книги по записах, які відповідають заданому критерію. Результат роботи запиту проілюстровано на мал.2.
Мал2. Простий запит на вибір даних за критерієм.
Параметричний запит на вибір даних за заданим критерієм із значенням заданим у вигляді параметра.
Необхідно отримати інформацію про кількість книг на складі, коди яких знаходяться від 3 до 5 номеру. Для цього створюємо запит на вибір даних з двох таблиць: Книги і Автори. У полі Коди книги задаємо критерій відбору інформації у вигляді зовнішнього параметра. Вибираємо записи з полів Назва книги, код книги і кількість на складі таблиці Книги, які відповідають заданому критерію (в даному випадку “ >=[Код книги з] And <=[до]”). Результат роботи запиту проілюстровано на мал.3.
Мал.3 Параметричний запит
Запит на модифікацію значень полів записів за заданим критерієм.
Необхідно замінити книги на складі, кількість яких <21, на 10. Для цього створюємо запит на модифікацію. В полі Кількість на складі таблиці Книги задаємо формулу за якою змінюється кількість книг на складі. В результаті роботи запиту змінюється інформаційне наповнення таблиці Книги. Вигляд таблиць до і після роботи запиту проілюстровано на мал.4.
Мал.4 Запит на модифікацію значень полів записів за заданим критерієм.
Запит на видалення записів за критерієм.
Необхідно видалити з бази дані про книгу, яка більше не видається і її немає на складі. Для цього створюємо запит на видалення даних з таблиці Кини. В полі Назва книги таблиці Книги вказуємо критерій за яким будуть видалятися записи (“назва книги”). В результаті роботи запиту змінюється інформаційне наповнення таблиці Книги. Вигляд таблиці до і після роботи запиту проілюстровано на мал.5.
Мал.5 Запит на видалення записів за критерієм.
Перехресний запит для відображення залежності значень одного поля таблиці від іншого.
Необхідно взнати інформацію про ціну книги. Для цього за допомогою Wizard будуємо перехресний запит. В результаті роботи запиту отримуємо таблицю, в першому стовпчику якої розміщено Назва книги, в дугому – Прізвище автора. В першій стрічці – Код книги, а на перетині стрічок і стовпчиків розміщена інформація ціну тої чи іншої книги. Результат роботи запиту проілюстровано на мал.6.
Мал.6 Перехресний запит.
Висновок: в ході виконання даної лабораторної роботи вивчив засоби розроблення запитів RQBE, вигляди запитів, їхнє виконання та застосування для роботи з реляційними базами даних.