Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Met_KursRob_OBD.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
4 Мб
Скачать
☆

1.4.10 Запити на зміну

Вище ми говорили про те, що усі види запитів на вибірку створюють тимчасові результуючі таблиці. Базові таблиці при цьому не змінюються. Проте, спеціально для розробників баз даних є особлива група запитів, що називаються запитами на зміну. Вони дозволяють автоматично створювати нові таблиці або змінювати вже наявні. Логіка використання запитів на зміну така:

  • створюється запит на вибірку, що відбирає дані з різних таблиць або сам створює нові дані шляхом обчислень;

  • після запуску запиту утвориться тимчасова результуюча таблиця;

  • дані з цієї тимчасової таблиці використовують для створення нових таблиць або зміни існуючих.

Є декілька видів запитів на зміну. Найпростіший і найзрозуміліший - це запит на створення таблиці. Розглянемо приклад з розрахунком середньої кількості забитих м'ячів.

Припустимо, що розробник таблиці “Підсумки по командах” захотів включити в неї поле “Результативнiсть”. Звичайно, він може розрахувати середню кількість м'ячів, забитих за гру кожною командою, але якщо ввести в таблицю таке поле, то доведеться заповнювати його вручну. Для таблиць, що містять багато записів, це рішення неприйнятне.

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

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

Ця команда знаходиться в меню “Зaпрос”, що доступно тільки в режимі “Конструктора”.

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

1.4.11 Обчислення в запитах

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

Перед тим, як ми навчимося створювати і використовувати поля, що обчислюються, варто звернути увагу на те, що поле, що обчислюється, є тільки в результуючій таблиці. У вихідних таблицях таке поле не створюється і при роботі звичайного запиту таблиці не змінюються. Чи не правда, це дуже розумно? Кожний, хто звертається до бази, може за допомогою запитів як завгодно маніпулювати даними й одержувати будь-які результати, але при цьому вихідні таблиці залишаються незмінно однаковими для всіх користувачів.

Для створення запиту, що виконує обчислення, служить той самий бланк запиту за зразком. Різниця тільки в тому, що в одному із стовпців замість імені поля записують формулу. У формулу входять поміщені в квадратні дужки назви полів, що беруть участь у розрахунку, а також знаки математичних операцій, наприклад такі:

Результативність : [Забито] / [Ігри]

тобто, назва нового поля : Поле_1 / Поле_2

У вузький стовпець непросто записати довгу формулу, але якщо натиснути комбінацію клавіш SHIFT+F2, то відкривається допоміжне діалогове вікно, що називається “Область ввода”. У ньому можна ввести яку завгодно довгу формулу, а потім натисненням лівої клавіші миші на кнопці ОК перенести її в бланк запиту за зразком.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]