Лабораторна робота №3. Конструювання запитів.
Запит - це вираз, який визначає, яку інформацію користувачеві потрібно Знайти в одній або кількох таблицях. За допомогою запиту також можна виконувати деякі дії з даними таблиці (таблиць) і узагальнювати дані таблиці. Запити можуть використовуватися як джерела інформації для форм і звітів. У цьому випадку в запиті використовуються дані з кількох таблиць. МS Access виконує запит кожного разу, коли користувач відкриває форму або звіт, і, відповідно, користувач може бути впевнений, що інформація, яку він бачить на екрані, завжди “найсвіжіша”.
MS Access дозволяє створювати наступні типи запитів.
Запит-вибірка. Використовується для вибірки даних з таблиць на основі певної умови. Це найбільш простий тип запиту. Запит-вибірку, наприклад, можна використовувати для отримання списку всіх студентів, які проживають у Львові.
• Запит-дія. Використовується для виконання дій з записами, які задовольняють певному критерію. Цей тип запиту дозволяє змінювати чи переміщати дані, створювати нові таблиці або знищувати непотрібні записи в таблиці. Користувач може, наприклад, використовувати запит-дію для знищення записів про студентів, які вже не вчаться в університеті.
• Перехресний запит. Використовується для узагальнення даних в форматі електронної таблиці на основі критерій, визначеного в запиті. Перехресні запити найчастіше використовуються для відображення даних у вигляді діаграм.
• Запит-об’єднання, Використовується для об'єднання полів з кількох таблиць. Наприклад, можна створити запит, який буде вибирати інформацію про студентів з таблиці Студент і їхні оцінки з таблиці Успішність
• Запит до сервера. Використовується для того, щоб посилати команди віддаленій базі даних, використовуючи мову структурованих запитів SQL (Structured Query Language).
• Керуючий запит. Використовується для виконання дій з записами баз даних за допомогою інструкцій мови SQL.
Для кожного З цих типів можна вказати параметри запиту, які підкажуть користувачу, як визначити умови запиту.
Результати запиту або операції фільтрації MS Access розміщує в динамічному наборі записів, який ззовні виглядає і працює як звичайна таблиця, але насправді відображає дані однієї або кількох таблиць в динамічному режимі. Користувач може вводити і обновляти дані в динамічному наборі записів. Після закінчення редагування, МS Access автоматично обновляє дані у відповідних таблицях.
3.1. Основи конструювання запитів
Для створення запиту потрібно клацнути на закладці Запроси вікна бази даних, а потім на кнопці Создать (див. мал.3.1).
EMBED Visio.Drawing.6
Мал.3.1. Створення запиту
На екрані з'явиться діалогове вікно Новый запрос (див. мал.3.2). Для створення запиту можна використати Майстер або Конструктор. Майстер запиту створює запити одного з чотирьох основних типів (мад.3.2). • Простий запит. При створенні Простого запроса (Simple Query Wizard) Майстер дає можливість вибрати поля із взаємозв'язаних таблиць та запитів. Причому в підготовленому бланку запиту не формуються умови відбору і обчислювальні поля. Єдине, що може створити Майстер - це підточувати підсумковий запит , згрупувавши записи та підрахувавши для цих груп суму, середнє значення, мінімум, максимум, число записів в групі.
EMBED Visio.Drawing.6
Мал.3.2. Вибір способу створення запиту.
• Перехресний запит. Узагальнює дані у вигляді електронної таблиці. У Перекрестном запросе (Crosstab Query Wizard) Майстер формує таблицю, в якій лівий стовпець утворюють значення з одного поля, верхній рядок утворюють значення другого поля, а на перетині рядків і стовпців розміщені підсумкові значення, обчислені за значеннями третього поля. При цьому значення третього поля групуються за полями, які використовуються як заголовки, і для отриманих групових значень застосовується і одна із вибраних статистичних функцій.
•. Пошук записів, які повторюються. Майстер створення запиту повторяющихся записей (Find Dublicates Query Wizard ) будує запит, що визначає, чи містить таблиця значення, що повторюються, в одному чи декількох полях. Майстер дозволяє вибрати таблицю, задати поля, в яких потрібно перевірити чи повторюються значення, вибрати поля, які потрібно вивести разом з повторюваними.
• Пошук записів, які не мають підпорядкованих. Майстер створення запиту записей без подчиненных (Find Unmatched Query Wizard) дозволяє знайти в таблиці записи, які не маюсь зв'язаних записів у підпорядкованій таблиці.
Для створення запитів на відбір записів з таблиці чи іншого запиту, що задовольняють певним умовам, необхідно використовувати Конструктор.
3.2. Створення запитів за допомогою конструктора.
Для створення запиту потрібно у вікні бази даних вибрати закладку Запросы (Queries) і нависнути кнопку Создать (New). Відкривається вікно, Новый запрос (New Queries). У ньому вибираємо Конструктор (Design View).
У вікні Добавление таблицы (Show Table) треба вибрати таблиці, щовикористовуються в запиті, і натиснути кнопку Добавить (Add). Потім кнопкою Закрыть (Close) вийти з вікна Добавление таблицы (Show Table). В результаті з'явиться вікно Конструктора запитів - <Имя запроса >: Запрос навыборку (Select Query).
Вікно Конструктора запитів розділене на дві панелі (див.мал. 3.3). Верхня Панель містить схему даних запиту, яка вкяючає вибрані.дня даного запиту таблиці. Таблиці представлені списками полів. Крім того, Ассеss встановлює зв'язки для об'єднання таблиць, якщо таблиці мають поля з однаковими назвами і типами даних, навіть коли вони не були визначені В схемі даних. Зв'язки-об'єднання, які не може встановити Ассеss автоматично, може створити користувач, перетягнувши зв'язані поля з одного списку в Інший.
Нижня панель - бланк запиту за зразком (Оиегу Ву Ехаmрlе), який
треба заповнити. До формування запиту цей бланк порожнин. При заповненні бланка запиту необхідно:
• у рядок Поле(field) включити назви полів, які використовуються в запиті;
• у рядку Вывод на экран(Shov) позначити поля, які мають включатися у ре- . зультуючу таблицю;
• у рядки Условие отбора (Criteria) задати умови відбору записів;
• у рядку Сортировка (Sort) вибрати порядок сортування записів результату.
Кожен стовпчик запиту відповідає одному з полів таблиць, на яких будується запит. Для включення потрібних полів з таблиць у відповідні стовпці запиту потрібно;
• в першому рядку бланка запиту Пояе(Field) клацанням миші викликати кнопку списку і, скориставшися нею, вибрати із списку потрібне поле. Список містить всі поля таблиць, які представлені в бланку запиту;
• або перетягнути потрібне поле із списку полів таблиці в схемі даних запиту в перший рядок бланка запиту.
У списку полів кожної таблиці на першому місці стоїть символ *, який означає "всі поля таблиці". Цей пункт виділяється, якщо в запит включаються всі поля.
EMBED Visio.Drawing.6
Мал. 3.3. Вікно Конструктора запитів
Для видалення поля в бланку запиту потрібно виділити стовпець, клацнувши в області його маркування, та натиснути клавішу <Del> або виконати команди Правка (Edit) Удалить столбец (Delit Column).
Умови відбору записів можуть задаватися для одного або декількох полів у відповідному рядку бланка запиту. Умовою відбору є логічний вираз, операндами якого можуть бути літерали, консіанти, ідентифікатори. У виразі умови відбору допускається використання операцій порівняння та логічних операцій з набору { =, <, >, о, <-, >=, Веtween, Іп, Likе, Оr, Апd, Not}. Якщо вираз в умові відбору не містить операції, то за "домовленістю використовується операція (=) Текстові значення у виразі вводяться е лапках, якщо вони містять пропуски або розділові знаки В протилежному випадку лапки можна не вводити, вони будуть додані автоматично. Допускається використання знаків шаблона — зірочка (*) та знак питання (?).
Оператор Веtwееп дозволяє задавати інтервал для числового значення Наприклад, Веtwееп 10 Апd 100 задає інтервал від 10 до 100. ~
Оператор /її дозволяє виконати перевірку на рівність будь-якому значенню зі списку, який задається в круглих дужках .""Наприклад,
In ("Математика", "Інформатика", "Історія") Оператор Like дозволяє використовувати зразки, що використовують символи шаблона, при пошуку в текстових полях. Наприклад, Like "Іванов* ". Умови відбору, задані в одному рядку, зв'язуються за допомогою логічної операції "И", задані в різних рядках за допомогою логічної операції "ИЛИ". Ці операції можуть бути також задані явно у виразі умови відбору за допомогою операторів] АND і ОR відповідно. Сформувати умови відбору можна з допомогою Конструктора виразів. Перейти у вікно Построитель виражений (Expression Builder) можна, натиснувши кнопку Построить (Build) на панелі інструментів, або вибравши команду Построить (Build) в контекстно-залежному меню.
В залиті над полями можуть проводитися обчислення. Результат обчислення утворює обчислювальне поле в таблиці, що створюється після запиту. При обчисленнях можуть використовуватися арифметичні вирази і вбудовані функції Ассеss. Вираз вводиться в бланк запиту в порожню комірку рядка Поле(Field) У цій комірці після натиснення клавіші <Enter > чи переведення курсору на другу комірку формується назва поля ВыражениеN (EnterN). N- ціле число, яке збільшується на одиницю для кожного нового обчислювального поля в запиті. Назва обчислювального поля виводиться перед виразом і відділяється від нього двокрапкою. Наприклад,
Выиражение : [Цина] *[Кількість].
де Ціна і Кількість - назви полів. Назва обчислювального поли – Выражение1- стає заголовком стовпця в таблиці з результатами виконання запиту. Цю назву можна легко змінити: в бланку запиту замість Выражение N(ЕxрrN) ввести потрібну назву.
Параметри запиту. Конкретне значення поля в умові відбору може вводитися в бланк запиту чи задаватися користувачем при виконанні залиту в діалоговому вікні. Щоб виводилось вікно для введення конкретного значення поля в умови відбору, потрібно визначити параметр запиту. Назва параметра запиту може вводитися безпосередньо в рядок Условие отбора (Criteria) в квадратних дужках. При виконанні запиту ця назва з'являється в, діалоговому вікні Введите значение параметра (Еnter Parameter Value). Якщо в запит вводиться декілька параметрів, то порядок їхнього введення через діалогові вікна визначається порядком розташування полів з параметрами в бланку запиту.
Приклад створення запиту-вибірки на основі однієї таблиці. Нехай потрібно вибрати предмети, в яких загальне число годин вивчення не більше 100 або більше 150 і для обох випадків число семестрів не більше двох. Результат повинен містити назву предмета (Назва предмета), загальне число гадин з предмета (Годин всього) і кількість семестрів (Числа семестрів}. Сформульовані умови потребують заданий логічною виразу
((Гадин всього <=100) ОR (Годин всього >150) And (Числи семестрів <=2).
~——І-!р • -^£
,:-:-^
Умову з першої дужки запишемо у полі Годин всього першого рядка Условия отбора (Criteria). Умову з другої дужки запишемо у цьому ж полі у другому рядку Условия отбора (Criteria). В обох рядках Условия отбора (Criteria) у полі Число семестрів запишемо "<=2". Сформований запит, що виконає поставлену задачу пошуку необхідних записів, показано на малюнку 3.4.
EMBED Visio.Drawing.6
Мал. 3.4. Запит на вибірку на основі однієї таблиці
Виконаємо запит, натиснувши на панелі Конструктора запитів кнопку Запуск (Кип), чи кнопку Представление запроса (Query View). На екрані з'явиться вікно запиту к режимі таблиці із записами з таблиці Предмет які відповідають умовам відбору. Збережемо запит, натиснувши кнопку Сохранить (Save) та ввівши назву запиту. Закриємо запит, натиснувши кнопку закриття вікна запиту.
Багатотабличний запит використовується для вибірки інформації з декількох взаємозв'язаних таблиць. Нехай, наприклад, треба вибрати інформацію про оцінки, отримані всіма студентами по всіх предметах. Результат повинен містити прізвище та ім'я студента, назви зданих предметів, оцінки (мал. 3.5). У вікні Добавление таблицы (Show Table) виберемо таблиці:
• Студент - для вибірки прізвища, імені та по-батькові студента;
• Успішність - для визначення кодів предметів, по яких студент здав екзамени, і вибірки оцінок цих предметів;
• Предмет – для вибірки назв предметів, представлені кодами в таблиці Успішність.
EMBED Visio.Drawing.6
Мал.3.5. Багато табличний запит.
У результаті виконання даного залиту буде таблиця, що міститиме дуже велику кількість запитів. Тому вона, як правило, використовується для наступних запитів. Складні задачі пошуку та відбору даних потребують послідовного виконання декількох запитів. Кожний із запитів мас свої вхідні та вихідні дані. В найпростішому випадку вихідні дані попереднього запиту є вхідними для наступного за ним запиту.
3.3. Запит на оновлення
Для оновлення даних в полях таблиць може бути використаний Запрос на обновление (Update Query. Зміни вносяться в групу записів, які вибираються за допомогою вказаних користувачем умов відбору. Значення для змін в полях визначаються в бланку запиту в стрічці Обновление (Update to).
Спочатку Запрос па обновление (Update Query) створюється як Запрос на выборку (Select Query), а потім у вікні конструктора запитів перетворюється в запит на оновлення з допомогою кнопки Обновление (Update Query), яка вибирається з випадаючого меню Тип запроса на панелі інструментів, чи команд меню Запрос (Query) Обновление (Query update). Після виконання цих команд у бланку запиту з’являється новий рядок Обновление (Update to).
Для відбору записів, які оновлюються, потрібно включити у бланк запиту поля, що потребують оновлення, а також ті, за допомогою яких задаються умови відбору. Умови відбору записуються так само, як і при створенні запиту на вибірку.
Для поля, що оновлюється в рядок Обновление (Update to) потрібно ввести значення чи вираз, які визначають нове значення поля.
Після виконання команд 3аорос Запуск (Run) відкривається діалогове вікно з повідомленням про кількість запитів, які оновлюються та запитанням про продовження операції оновлення.
3.4. Запит на добавку
За допомогою запиту на добавку проводиться додавання записів із таблиці запит)' в іншу таблицю. Тому потрібно, щоб у запиті були сформовані записи з полями, що відповідають полям у другій таблиці. Допускається невідповідність типів, якщо є можливим перетворення типу даних одного поля в тип даних другого поля.
Спочатку Запрос на добавление (Append Query) створюється як Запрос на выборку (Select Query) на одній чи декількох взаємозв'язаних таблицях. Потім у вікні Конструктора запитів він перетворюється в запит на добавку за допомогою кнопки Добавление (Append Query), яка вибирається з випадаючого меню Тип запроса на панелі інструментів, чи команди меню 3апрос Добавление (Append). При цьому відкривається діалогове вікно Добавление (мал. 3.6). У цьому вікні в полі Имя таблицы (Table Name) вводиться чи вибирається назва таблиці, в яку потрібно добавити записи. Якщо таблиця знаходиться в відкритій базі даних, потрібно відмітити В текущей базе данных (Current Database). Для таблиці в іншій базі даних - В другой базе данных (Another Database)...
EMBED Visio.Drawing.6
Мал.3.6. Діалогове вікно добавки
Після виконання цієї команди в бланку запиту з'явиться рядок Добавление (Append to). Для формування записів, які додаються, потрібно включити в бланк запиту поля, які відповідають відповідним полям таблиці, в яку буде проводитись додавання. Крім цього, в бланк запиту можуть бути включені поля, за якими задаються умови відбору. Умови відбору вносяться в комірки рядка Условие отбора (Criteria).
Для вказання в рядку Добавление (Append to) назв полів таблиці-результату, в які будуть додаватися значення з відповідних полів таблиці запиту, потрібно в кожній комірці відкрити список і вибрати потрібну назву. Якщо вибрані поля мають одні і ті ж назви в обох таблицях, то назви полів у рядок Добавление (Append to) вносяться автоматично. Для попередньою перегляду записів, які! планується додати в таблицю, потрібно натиснути кнопку Представление запроса (Query view) на панелі інструментів. Повернення в режим Конструктора запитів проводиться за допомогою цієї ж кнопки.
Для добавки записів потрібно натиснути кнопку Запуск (Run) на панлі інструментів. З'являється діалогове вікно з повідомленням про кількість записів, що оновлюються, і запитанням про продовження оновлення.
Якщо таблиця, в яку додаються записи, містить ключове поле, то записи, які додаються, повинні містити таке ж поле.
3.5. Запит на видалення (знищення)
Запит на видалення дозволяє знищити записи з однієї таблиці чи м декількох взаємозв'язаних таблиць. Спочатку Запрос на удаление (Delete Query) створюється як Запрос на выборку (Select Query), що містить таблиці. з яких потрібно видалити записи. Потім у вікні Конструктора запитів він перетворюється в Запрос на удаление (Dlete Query) за допомогою кнопки Удаление (Dlete Query), яка вибирається з випадаючого меню Тип запроса на панелі інструментів, або команди меню Запрос Удаление (Delete) Після виконання цій команди в бланку запиту з'явиться рядіж Удаленис (І)еіеіе).
За допомогою миші потрібно перемістити символ зірочки (*) із списку полів таблиці, записи якої потрібно видалити, в бланк запиту. В рядку Удаление (Delete) в стовпці цього поля з'явиться значення Из (From).
Для того, щоб задати умови відбору записів, які видаляються, потрібно перемістити за допомогою миші в бланк запиту поля, для яких встановлюються умови відбору. В стрічці Удаление (Delete) під назвами цих полів появиться значення Условие (Where). Рядок Условие отбора (Criteria) для цих полін потрібно заповнити необхідними умовами.
Для попереднього перегляду записів, що видаляються можна натиснути кнопку Представлене запроса (Query view) на панелі інструментів. Для повернення в режим конструктора використовується ця ж кнопка. Для видалення записів потрібно натиснути кнопку Запуск (Run) на панелі інструментів.
Результати робити запиту залежать під встановлених в схемі бази даних відношень між таблицями та параметрів цілісності. У наведеному прикладі (мал, 3.7) між таблицями Кафедри і Викладачі встановлений зв'язок типу один до багатьох.
EMBED Visio.Drawing.6
Мал. 3.7. Вікно формування запиту на видалення
В бланку запиту вказане видалення тільки записів підпорядкованої таблиці Викладачі. Якщо для зв'язку не встановлений параметр Каскадное удаление связных записей (Cascade Delete Related Records), то в результаті виконання цього запиту будуть видалені тільки записи з підпорядкованої таблиці Викладачі. Підпорядковані записи найнижчого рівня можуть бути видалені незалежно від параметрів цілісності Якщо для зв'язку встановлений параметр Каскадное удаление связных записей (Cascade Delete Related Records), то незважаючи на те, що й бланку не вказане видалення записів і таблиці Кафедри, вони будуть, видалені разом з підпорядкованими записами таблиці Викладачі.
Нехай в бланк запиту включені на видалення тільки поля головної таблиці Кафедри і не встановлений параметр Каскадное удаление связных записей (Cascade Delete Related Records). Видалення записів таблиці Кафедра можливе тільки, коли в підпорядкованій таблиці Викладачі немає зв'язаних записів Якщо цей параметр встановлений, то будуть видалені всі вибрані записи головної таблиці і зв'язані з ними записи підпорядкованої.