Урок 13 Інформатика 11(ІКТ)
Поняття запиту до реляційної бази даних. Створення простих вибіркових запитів. Параметризовані запити.
Мета.
Навчальна. Ознайомити з поняттям запиту до реляційної бази даних, навчитися створювати прості вибіркові запити, параметризовані запити.
Розвиваюча. Розвивати логічне та алгоритмічне мислення.
Виховна. Виховувати культуру мовлення.
Тип уроку. Урок засвоєння нових знань.
Учні повинні знати:
Учні повинні уміти:
Матеріали для роботи з учнями:
План
Хід уроку
1. Організація початку уроку.
3. Актуалізація опорних знань.
Тестування “Основи баз даних”
4. Мотивація навчальної діяльності.
Клієнти баз даних — люди або програми — часто потребують інформації, яку неможливо знайти в якійсь одній таблиці. Припустимо, потрібно дізнатися прізвища та імена вчителів, які викладають в НА класі. Очевидно, що цю інформацію не вдасться відобразити за допомогою фільтра, застосованого до таблиці вчителів, адже в ній немає жодної інформації про класи. З іншого боку, у таблицях Класи та Викладання немає інформації про прізвища та імена вчителів, тому фільтрація цих таблиць також не допоможе.
5. Вивчення нового матеріалу.
У подібних випадках стануть у нагоді запити — універсальний засіб виконання майже будь-яких завдань з обробки даних у БД. Словом «запит» називають також саму задачу на кшталт «визначити, які вчителі викладають в 11А класі»; результатом її розв’язання буде список учителів, а також текст розв’язання, записаний мовою або поданий у спеціальній екранній формі.
Схема роботи з запитом
Роботу з будь-яким запитом можна поділити на три основні етапи:
Запит створюють один раз, а виконують багаторазово. Кожен раз результати виконання можуть бути різними, залежно від того, які дані введено в таблиці, що ними оперує запит.
Зазначимо, що результатом виконання запиту в реляційній БД також є таблиця. Однак це не одна з тих таблиць, які входять до складу БД. Це так звана віртуальна таблиця, що існує нетривалий час, а саме стільки, скільки потрібно клієнту, але не довше, ніж протягом одного сеансу роботи з СКБД. Ця таблиця зберігається лише в оперативній пам’яті, і коли ви завершуєте роботу з СКБД, усі віртуальні таблиці видаляються, проте зберігаються SQL-тексти запитів і для отримання віртуальної таблиці під час наступного сеансу роботи з СКБД достатньо просто виконати запит.
Для допитливих.
Той факт, що результат виконання запиту є таблицею, — вкрай важливий, адже це означає, що одні запити можна використовувати як параметри інших, тобто будувати запити на основі запитів, а не таблиць. Інакше кажучи, як віртуальні таблиці, так і ті, що зберігаються в БД постійно, можна вважати однаковими з точки зору конструювання запитів. У теорії реляційних баз даних така властивість мов маніпулювання даними називається реляційною замкненістю.
Створення запитів у СКБД Microsoft Access
У Microsoft Access передбачено два засоби автоматизованого створення запитів: майстер і конструктор. Можливості першого із них вкрай обмежені, тому ми розглядатимемо тільки другий і зробимо це на прикладі запиту визначити прізвища та імена вчителів, які викладають в 11А класі.
Отже, для створення запиту у MS Access 2003 необхідно у головному вікні бази даних вибрати в меню об’єктів пункт Запросы і двічі клацнути посилання Создание запроса в режиме конструктора, а в MS Access 2007/2010 — клацнути кнопку Конструктор запросов в області Другие на вкладці Создание. Буде відображено вікно конструктора запиту, що називається Запрос 1: запрос на выборку, а також вікно Добавление таблицы (рис. 8.6).
У вікні Добавление таблицы потрібно, утримуючи клавішу СІгІ, вибрати назви таблиць, дані з яких використовуватимуться в запиті, клацнути кнопку Добавить, а потім — Закрыть. Для нашого запиту достатньо двох таблиць, Учителі та Викладання, оскільки назви класів містяться в таблиці Викладання, а прізвища та імена вчителів, які в цих класах викладають, — у таблиці Учителі. Якщо додати таблицю Класи, це не буде помилкою, але призведе до зайвого ускладнення запиту, оскільки класи зв’язані з учителями через таблицю Викладання, яку доведеться додавати все одно.
У верхній частині вікна конструктора запиту відображається фрагмент схеми БД, що містить ті таблиці, які використовуються в запиті (рис. 8.7). У нижній частині вікна розміщено бланк запиту — прототип таблиці, яка відображатиметься в результаті виконання запиту (рис. 8.7). У стовпцях цієї таблиці розміщують поля, перетягуючи їх з верхньої частини, а також задають параметри відображення полів та умови відбору їхніх значень.
Призначення рядків бланка запиту таке:
Бланк нашого запиту має виглядати так, як на рис. 8.7: відображаються поля прізвище та ім'я таблиці Учителі, а значенням поля клас таблиці Викладання має бути НА.
Щоб виконати цей запит, потрібно клацнути кнопку ! (Запуск) на панелі інструментів. Яким має бути результат, показано на рис. 8.8.
Після того як ви переглянете результати запиту, вікно таблиці результатів потрібно закрити кнопкою х . Буде відображено запитання, чи зберігати зміни макету або структури об’єкта Запрос 1. Клацніть кнопку Да і у вікні, що з’явиться, введіть назву запиту, наприклад Учителі 11А. Коли ви клацнете кнопку OK, запит відобразиться в розділі запитів у головному вікні бази даних (рис. 8.9) або в категорії Все объекты Access в області переходів.
Редагування запитів
Якщо в головному вікні бази даних Access 2003 вибрати в мето об’єктів команду Запросы, у правій частині цього вікна відобразяться всі наявні в базі запити. У MS Access 2007/2010 усі запити можна побачити в групі Запросы категорії Все объекты Access в області переходів. За потреби змінити якийсь запит клацніть його правою кнопкою миші та виберіть з контекстного меню команду Конструктор. Відкриється знайоме вам вікно конструктора запиту, у якому можна змінити як набір таблиць, що використовуються в запиті, так і його бланк.
Завдання 8.2
Створіть та виконайте запит «Визначити прізвища та імена вчителів, які викладають в НА класі».
Завдання 8.3
Створіть та виконайте запит «Визначити прізвище та спеціальність класного керівника 11Б класу».
Приклади запитів
Приклад 1
Розглянемо трохи складніший запит: визначити імена та прізвища учнів, яким викладає Сошко Катерина Миколаївна. У цьому запиті потрібно використати всі чотири таблиці, які є в базі даних школа: з таблиці Учні взяти прізвища та імена, на значення полів таблиці Учителі накласти умову прізвище = Сошко, ім'я = Катерина, по батькові = Миколаївна, а скориставшись таблицями Викладання та Класи, з’єднати вчителя з учнями.
Який вигляд матиме вікно конструктора цього запиту, показано на рис. 8.10. Зауважте, що зв’язок «один-до-одного» між таблицями Класи та Учителі було видалено, оскільки його зміст — «учитель є класним керівником» — ніяк не відображається в умові запиту. Якби ми цей зв’язок залишили, то реалізували б інший запит, а саме «Визначити імена та прізвища учнів, у яких викладає та є класним керівником Сошко Катерина Миколаївна». Нагадаємо, що зв’язок з бланка запиту видаляють так само, як і зі схеми БД: на зв’язку потрібно клацнути правою кнопкою миші та вибрати у меню, що з’явиться, команду Удалить.
Якщо ви правильно реалізували цей запит і ввели в базу дані, вказані у завданнях до розділів 4 і 5, то в результаті його виконання маєте отримати Максим Шпак та Хоменко Ірина.
Приклад 2
Визначити, у яких класах навчаються хлопці, що народилися у 1996 році.
Для створення цього запиту достатньо однієї таблиці — Учні, у якій міститься інформація і про класи. Тому цей запит загалом можна реалізувати за допомогою фільтра. Щоправда, нам потрібно відобразити значення одного поля — класи, а після фільтрації відображатимуться всі поля. Вікно конструктора цього запиту наведено на рис. 8.11.
Зверніть увагу на такі обставини:
Приклад З
Відобразити всю інформацію про класних керівників 10А та 11Б класів.
Для реалізації цього запиту знадобляться таблиці Класи та Учителі, а таблиця Викладання буде зайвою, оскільки про викладання в умові запиту не йдеться. Вікно конструктора запиту зображено на рис. 8.12.
І в цьому запиті варто звернути увагу на дві обставини: «Всю інформацію» означає «значення всіх полів», але на бланку запиту всі поля таблиці Учителі перелічувати не потрібно. Замість цього достатньо записати в імені поля символ *, який і означає «всі поля».
Умову запиту можна переформулювати так: «Відобразити всю інформацію про вчителів, які є класними керівниками 10А або 11Б класу». Тобто, хоча в умові вжито сполучник та, насправді її частини з’єднані сполучником або і тому записані в різних рядках: Условие отбора та или.
Завдання 8.4
Створіть та виконайте запит «Отримати всю інформацію про вчителів, які викладають учням, що народилися після 1 січня 1996 року».
Для допитливих.
Існують засоби автоматизованого створення запитів, значно потужніші, ніж конструктор у СКБД Microsoft Access. Так, у СКБД Paradox реалізовано графічну мову маніпулювання даними, що називається QBE (Query by Example — запит за зразком). Її можливості навіть ширші за можливості мови SQL.
6. Завдання для самостійного виконання.
7. Питання для роздумів.
Чим відрізняється запит «Визначити класи, у яких не викладає Сошко Катерина Миколаївна» від запиту «Визначити класи, у яких викладає не Сошко Катерина Миколаївна»? Наведіть приклади даних, на яких ці запити даватимуть різні результати.
8. Висновки.
9. Домашнє завдання.
10. Завдання для досліджень.