Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекцій ЕКОНОМІЧНА ІНФОРМАТИКА.doc
Скачиваний:
26
Добавлен:
28.10.2018
Размер:
24 Mб
Скачать

3.6. Створення запитів

Існує чотири типи запитів на зміну: на видалення, на відновлення й додавання записів, а також на створення таблиці.

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

Запит на відновлення записів вносить загальні зміни в групу записів однієї або декількох таблиць. Наприклад, на 10 відсотків піднімаються ціни на всі молочні продукти або на 5 відсотків збільшується зарплата співробітників певної категорії. Запит на відновлення записів дозволяє змінювати дані в існуючих таблицях.

Запит на додавання додає групу записів з однієї або декількох таблиць у кінець однієї або декількох таблиць. Запит на додавання також корисний при виконанні наступних дій:

- додавання полів на основі умов відбору;

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

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

- створення таблиці для експорту в іншу базу даних Microsoft Access;

- створення звітів, що містять дані декількох таблиць;

- створення резервної копії таблиці.

- створення архівної таблиці, що містить старі записи;

- підвищення швидкодії форм і звітів, що базуються на багатотабличних запитах або виразах SQL.

Вибір даних з однієї таблиці

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

Після виконання запиту на вибірку Microsoft Access створює набір записів, що містить відібрані дані, з якими можна працювати так само, як і з таблицею.

Найпростіше створити запит на основі однієї таблиці так: відкрити вікно бази даних, вибрати у вікні бази даних вкладку Запросы, нажати кнопку Создать, у новому вікні вибрати режим Конструктор, вибрати таблицю й Ok. У наступному вікні Добавление таблицы вибрати потрібну таблицю, а потім нажати кнопки Добавить й Закрыть.

Вікно конструктора запитів (рис.3.5) розділено на дві частини. У верхній частині перебувають списки полів таблиць або запитів, на основі яких створюється новий запит. У нижній - розташовується бланк QBE (запит за зразком), у якому виконується робота зі створення запиту. Кожний стовпець бланка представляє одне поле, використовуване в запиті.

Перший рядок бланка запиту служить для вибору полів, яким можна присвоюється імена, використовувані при висновку записів запитів. У другому рядку бланка запиту виводиться ім'я таблиці, з якої обране поле. У третьому рядку бланка можна вказати, для яких стовпців потрібно проводити сортування. Прапорці в рядку бланка Вывод на экран відповідають за виведення полів у наборі записів. За замовчуванням виводяться всі поля, включені в бланк запиту. Для уведення умови відбору записів використовується рядок Условие отбора.

Р ис.3.5 - Вікно конструктора запитів

Включення полів у запит. Щоб включити поле в бланк запиту, потрібно його виділити в таблиці й мишею перетягнути у відповідне поле бланка запиту.

Установка властивостей полів. У загальному випадку поля в запиті мають ті ж властивості, що й у таблиці, з якої вони перенесені. Однак можна задати інші значення властивостей. Для цього потрібно клацнути по будь-якому осередку відповідного стовпця в бланку запиту й нажати кнопку Свойства на панелі інструментів. Після цього вводяться властивості полів.

Уведення умов відбору. Якщо потрібно відібрати запис з конкретним значенням поля, його потрібно ввести в комірку Условие отбора цього поля. Текстове значення, як умова, береться в лапки. При завданні умови відбору можна користуватися знаками відношень <, >, >=, <=, =,<> і логічними операціями or, and.

Крім цього, Access надають спеціальні оператори для відбору даних, виведених у запиті:

between - визначає діапазон значень. Between 10 and 20 означає те ж саме, що й вираз >=10 and <=20;

in - задає використовуваний для порівняння список значень. Вираз in(“wa”,”ca”,”id”) означає те ж саме, що й вираження “wa” or “ca” or “id”;

like - цей оператор дозволяє при відборі текстових полів використовувати символи: ?, *,#. Символ # указує, що в даній позиції повинна стояти цифра, символи ? і * мають те ж призначення, що й в іменах файлів OC MS DOS.

Наприклад, like “B*” - означає, що потрібно вибрати поля, що починаються з букви В.

Умови відбору для дат і часу Access обробляє в будь-якому форматі. При введенні дату або час необхідно містити в символи #. Наприклад, #15 Квітень 1998#, #15/04/98# визначають ту саму дату.

Access надає кілька функцій, які можна використовувати при завданні умов відбору для дат і часу:

day(дата) - повертає значення дня місяця в діапазоні від 1 до 31. Якщо потрібно відібрати записи з певними днями місяця - задається обчислюється поле, наприклад, day([Дата_замовлення]) і вводиться умова відбору, наприклад, >10. У цьому випадку вибираються всі записи поля після числа місяця >10;

month(дата) - повертає значення місяця року в діапазоні від 1 до 12;

year(дата) - повертає значення року в діапазоні від 100 до 9999;

weekday(дата) - повертає ціле число від 1(Неділя) до 7(Субота), що відповідає дню тижня;

date() - повертає поточну системну дату.

Поля, що обчислюються. Можна виконати обчислення з будь-якими полями таблиці. При цьому можна використовувати будь-які функції, убудовані в Access, і виконувати над полями таблиці арифметичні операції за допомогою операторів: +, -, *, /, \, ^, mod, &. Наприклад, нехай є ім'я поля з іменем“ Кількість”, де записана кількість одиниць товару й поле “Ціна, де записана вартість одиниці товару. Тоді для підрахунку вартості товару в порожнє поле бланка запиту потрібно ввести вираження Кількість*Ціна й значення цих полів буде перемножено.

Завдання імен полів, що обчислюються. При створенні будь-якого виразу в бланку запиту Access поміщає стандартне ім'я поля Виражение1:”. Можна змінити або призначити імена полів, що є важливим, якщо їх потрібно використовувати у звіті або інших запитах. Це робиться за допомогою вікна властивостей. Для цього потрібно клацнути по будь-якому осередку відповідного стовпця, нажати кнопку Свойства на панелі інструментів і вибрати Подпись.

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

Для цього в рядок "Условие отбора" вводиться фраза у квадратних дужках, що буде виводитися "підказк" у процесі діалогу, наприклад [Введіть прізвище]. Таких параметрів може бути декілька, кожний для свого поля, при цьому ім'я кожного параметра повинно бути унікальним.

Сортування даних. Звичайно Access виводить записи в тому порядку, у якому вони вибираються з бази даних. Можна змінити послідовність виведення даних, задавши порядок сортування По возрастанию або По убыванию.

Підсумкові запити. Іноді нас цікавлять не окремі записи таблиці, а підсумкові значення за групами даних. Наприклад, потрібно довідатися середній обсяг продажів по кожному місяцю окремо. Це можна зробити за допомогою підсумкового запиту. Для цього потрібно нажати на кнопку Групповые операции на панелі інструментів і в бланку з'явиться новий рядок із цим ім'ям. При цьому ведеться угруповання по всіх занесених у бланк полях, але підсумок не підводиться. Для одержання підсумків потрібно замінити Группировка в рядку Групповые операции на конкретні підсумкові функції.

Access надає кілька функцій для забезпечення групових операцій. Основні з них:

sum - обчислює суму всіх значень заданого поля в кожній групі. Використовується тільки для числових і грошових полів;

avg - Обчислює середнє арифметичне значення всіх значень даного поля в кожній групі;

min, max - обчислює найменше (найбільше) значення поля усередині групи;

count - обчислює число записів, у яких значення даного поля відмінні від Null.

Вибір записів, що формують групи. У групи підсумкового запиту можна не включати деякі записи. Для цього потрібно додати в бланк запиту одне або кілька полів для фільтра. Для створення фільтра в рядку Групповые операции вибирають установку Условие, знімають прапорець Вывод на экран для цього поля й уводять умову відбору.

Багатотабличні запити

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

Приклад 1. З таблиці ПОСТАВЩИКИ вибрати записи, де ДатаПоставки – 2006 рік. Вікно конструктора запитів при цьому буде мати вигляд (рис.3.6).

3.6 - Запит на вибірку для рішення завдання (приклад 1)

Приклад 2. Скласти запит на видалення: з таблиці Товары видалити записи, де Стоимость товару менше 1000. Для цього викликається таблиця Товары, перетягується символ * і в рядку Удаление вибирається ИЗ (див. перший стовпчик рис.3.7). У другий стовпець перетягується ім'я поля, для якого установлюються Условие.

Рис.3.7 - Запит на видалення записів

Структурована мова запитів (SQL)

Запит, що створюється за допомогою бланка QBE, буде зберігатися в комп'ютері у вигляді директиви SQL, яка називається повідомленням. При роботі з Access сама мова SQL від нас звичайно прихована. Наприклад, всі операції із запитами виконуються з використанням SQL, але при цьому ми бачимо на екрані лише бланк запиту. Повідомлення SQL і вікно бланка запиту зв'язані динамічно: будь-яка зміна в одному з них автоматично приводить до зміни в іншому. Перехід від одного режиму до іншого здійснюється через пункти меню Вид.

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

Повідомлення SQL складається із ключових слів, а також ідентифікаторів і виразів Access. Найбільш важливі ключові слова в SQL:

select - перше слово всіх повідомлень SQL, за допомогою якого проводиться пошук даних в одній або декількох таблицях у базі даних. За ключовим полем select знаходяться імена всіх полів, які включаються у вибірку. Використовуючи знак * після select, можна автоматично включити в запит всі поля вихідної таблиці;

distinct – виключає повторювані значення з поля в наборі записів, які знайдені за допомогою SQL;

distinctrow – видаляє дублюючі записи з вибірки;

from – указує, яка таблиця (або таблиці) містять потрібні нам поля;

join - позначає зв'язок між записами, що містяться в різних таблицях;

where – позначає умови вибору, які повинні використовуватися при виборі записів для включення їх у вибірку;

order by – позначає режим сортування для набору даних (за замовчуванням сортування здійснюється по зростанню, для сортування значень по убуванню необхідно додати слово desc);

group by – означає, що буде повернутий один запис для кожного окремого значення в зазначеному полі. Якщо group by включається в select, список вибору повинен включати функції avg, count, sum і ін.

; - символ, що закінчує будь-яке SQL повідомлення.

При уведенні умов вибору записів можна використовувати знаки відношень, логічні операції and і or, оператори: between, in, like.

Для ілюстрації синтаксису мови SQL скористаємося таблицею "Продажи”.

Приклад 1. Записати повідомлення SQL, для заповнення поля “Стоимость”, значення якого обчислюється за формулою: Стоимость = Продано * Цена_Ед

Select distinctrow Продажи.Продано, Продажи.Цена_ед,

[Продано]*[Цена_ед] as Стоимость

from Продажи;

Приклад 2. Знайти записи з датою замовлення в березні місяці.

select *

from Продажи

where month(Дата_заказа) = 3;

Приклад 3. Записи таблиці, отримані в прикладі 2, розташувати за зростанням коду покупця.

select *

from Продажи

where month(Дата_заказа) = 3

order by Код_покупця;

Приклад 4. Підрахувати вартість товарів, зроблених кожним покупцем.

select distinctrow.Код_покупателя,

sum([Продано]*[Цена_ед]) as Стоимость

from Продажи

group by Код_покупателя;

Приклад 5. Вибрати записи з датою замовлення 31 березня 2006.

select *

from Продажи

where Дата_заказа = #3/31/06#;

Приклад 6. Запит з параметром на вибірку за назвою кафедри.

select *

from Кафедра

where Название=[Введите название кафедры];