Запити на вибірку даних

Дані у базу вносяться для того, щоб була можливість їхньої обробки, часто це передбачає пошук відповідей на питання, на кшталт «Скільки учнів у кожному із класі?» «Який середній бал учнів у вчителя Іваненка?» «Скільки учнів навчає кожен із вчителів?» «Які вчителі викладають математику в 11 класах?» і т.д.


Відповіді на деякі з цих питань можна отримати з однієї таблиці, тоді як інші передбачають обробку даних кількох таблиць.

Якщо дані містяться в одній таблиці, можна застосовувати фільтрацію записів, що мають відповідати умові. Наприклад, відбирати дані про хлопців, котрі навчаються в 11х класах. Для цього додамо фільтр на поля Стать та Клас. Можна застосовувати різні умови текстових, числових, часових фільтрів. Зауважимо, що результати такого фільтрування неможливо зберегти, тож щоб ще раз отримати відповідь на задане питання доведеться створювати фільтр знову.

Дещо інакше працюють запити – які дозволяють сформувати умови відбору та зберегти їх. При повторному запуску запиту можна заново отримати відібрані дані, що відповідають умові.

Запит можна складати на основі однієї або кількох таблиць.

На стрічці Створити можна обрати режим конструктора запитів, де на першому етапі роботи потрібно вказати таблиці, на основі яких буде здійснюватись відбір даних. Наприклад, для запиту «Прізвища та імена хлопців, котрі народились після 1 січня 2000 року», достатньо однієї таблиці Учні. У вікні конструктора запитів заповнюємо поля, вказуємо умови відбору та чи потрібно сортувати і показувати певне поле у результаті запиту. Для запуску – знак оклику і перевіряємо. Якщо все гаразд, запит можна зберігати. Зверніть увагу, що щойно створений запит зображено під таблицею Учні, адже він стосується даних саме цієї таблиці. 

Можна також переглядати об’єкти бази даних за типами.

Розглянемо дещо складніший запит: «Хто є класним керівником 11А класу?». Потрібна для пошуку інформація міститься у таблицях Класи та Учителі. Додаючи таблиці можна зауважити, що зв’язок між ними доданий автоматично. Накладаємо умову – клас 11А і отримуємо результат. Зберігши запит бачимо, що його віднесено і до таблиці Класи, і до таблиці Учителі.

І ще один запит «Визначити прізвища та імена учнів, котрих навчає Кушнір Сергій Іванович». Для цього запиту потрібні будуть усі таблиці: Прізвища та імена учнів – у таблиці Учні, вчитель Кушнір Сергій Іванович – у таблиці Вчителі. Вчителі з учнями напряму не пов’язані, а лише через таблицю Класи,а факт викладання міститься у таблиці Викладання. Додавши усі таблиці, бачимо, що відображені усі зв’язки: навчається, викладає, є керівником, хоча для даного запиту потрібні лише перші два. Тож видаляємо зайвий зв'язок з конструктора запитів та накладаємо відповідні умови.


Розглянемо ще запит «Які вчителі викладають інформатику?» - зверніть увагу, умову можна накладати як на Предмет, так і на Предмет.value – порівняємо як виглядають ці значення, виводячи їх разом з прізвищем та іменем вчителя без умови.

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

Існують запити на оновлення та видалення даних із таблиць. Спробуємо видалити інформацію про одного з учнів, наприклад Мельник Максим вибув у іншу школу. Створюємо запит до таблиці Учні, вказуємо умову відбору – прізвище Мельник. На стрічці інструментів позначаємо тип запиту – на видалення, зберігаємо і запускаємо запит. Діалогове вікно потребує підтвердження видалення певної кількості записів.

Ще одна типова ситуація – додавання записів, наприклад, додамо інформацію про учнів 9 класів. По перше, потрібно додати класи у таблиці класи. Оскільки у базі даних є перевірка забезпечення цілісності, неможливо вказати, що учень навчається у класі, котрого немає у таблиці Класи. Отже, оновивши таблицю Класи, виконаємо імпорт попередньо підготованих даних з електронної таблиці Ексель. Можна імпортувати дані до наявної таблиці або нової. Якщо імпортуємо до існуючої таблиці, потрібно забезпечити точний збір назв стовпців, а також унікальність ключів.

Можна імпортувати дані у нову таблицю, а потім виконати запит на додавання даних у таблицю Учні.

Цих 9-класників потрібно перевести у новий 10В клас. Знову додаємо клас і створюємо запит на оновлення даних: для усіх учнів 9А та 9Б класу (умова відбору) потрібно змінити назву класу на 10В. Запускаємо запит, перевіряємо його роботу, підтверджуючи зміни у цих записах


І останній тип запиту, який ми розглянемо – створення таблиці. Наприклад, створимо таблицю Випускники, в яку скопіюємо дані про 11-класників за умовою 11* (або 11А та 11Б).

 

Ще один режим перегляду та редагування запитів – режим SQL – спеціальної структурованої мови запитів. Саме вона універсально визначає запит і передає його на виконання системі керування базами даних. Конструктор запитів є зручним інструментом, котрий значно полегшує укладання запитів, проте його можливості не дозволяють створювати довільно складні запити. Тож у режимі SQL можна складати запити, чи змінювати ті, що створені у конструкторі. Структура запиту досить проста: вказано які поля показувати, з яких таблиць їх брати (і як саме вони пов’язані), і за якою умовою здійснювати відбір.

Наприклад, для запиту «Визначити прізвища та імена учнів, котрих НЕ навчає Кушнір Сергій Іванович» можна використати попередньо створений «Визначити прізвища та імена учнів, котрих навчає Кушнір Сергій Іванович» і вказати, що потрібно вибрати тих учнів, котрі не містяться у результаті цього запиту.