Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теорiя по Access.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.99 Mб
Скачать

3. Робота із запитами до бд.

Після створення БД та заповнення таблиць даними, можна приступити до наступного етапу керування БД - задания запитів до даних в БД. В Access для задания запиту до бази даних використовується метод QBE (Query By Example - запит за зразком) - метод створення запитів, що розроблений IBM ще в 70-ті роки. Запити забезпечують простий доступ до певної сукупності полів і записів однієї або декількох таблиць і дозволяють вибрати з БД конкретні дані.

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

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

Д ля створення запиту потрібно у вікні бази даних (мал. 11.5) вибрати закладку Queries (Запросы), а тоді натиснути командну кнопку New (Создать). Відкривається діалогове вікно, схоже на вікно створення таблиці (мал. 11.6), де потрібно вибрати тип створюваного запиту:

Design View (Конструктор) - створення запитів в режимі конструктора таблиць;

Simple Query Wizard (Простой запрос) - створення простих запитів за допомогою майстра створення запиту;

Crosstab Query Wizard (Перекрестный запрос) - створення перехресних запитів за допомогою майстра створення запиту;

Find Duplicates Query Wizard (Повторяющиеся записи) - створення запитів які повторюються;

Find Unmatched Query Wizard (Записи без подчиненных) - створення запитів, які не мають підпорядкування.

Якщо вибрати режим створення запитів Design View (Конструктор), то відкривається наступне діалогове вікно Show Table (Добавление таблицы) (мал. 11.11), в якому є список таблиць, що входять в БД. В цьому вікні потрібно встановити для яких таблиць буде даватись запит. При цьому потрібно вибрати таблицю в списку і натиснути кнопку Add (Добавить). Цю ж операцію необхідно повторити для всіх наступних таблиць.

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

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

Для створення реляційних зв'язків між полями таблиць у вікні конструктора запитів (мал. 11.12) потрібно перетягнути поле однієї таблиці, яке слід зв'язати, на відповідне ім'я поля іншої таблиці (з яким необхідно зв'язати). В результаті цього між даними полями з'явиться лінія зв'язку (join lines).

Інколи, при добавлянні таблиць у вікно конструктора запитів, реляційні зв'язки між ними додаються автоматично. Це відбувається у випадку, коли зв'язки встановлено на рівні БД або коли дві таблиці мають однакові поля, сумісні за типом і одне з них є ключовим. Сам процес створення реляційних запитів нічим не відрізняється від створення звичайних запитів.

Вибравши всі необхідні таблиці зі списку, потрібно натиснути командну кнопку Close (Закрыть). При цьому відбувається перехід до вікна конструктора запиту (мал. 11.12). В цьому вікні потрібно вказувати умову, якій повинен відповідати запит, наприклад, так як це показано на малюнку 11.12.

Д ля цього потрібно встановити курсор миші на назву поля, для якого необхідно задати умову, в списку полів добавлених таблиць у верхній частині вікна конструктора. Тоді натиснути ліву клавішу миші і, не відпускаючи її, перетягнути відповідне поле в першу вільну комірку рядка Field (Поле), що знаходиться в спеціальній таблиці нижньої частини вікна (так, як це зроблено для полів Name і на мал. 11.12).

Якщо в комірку нижньої частини вікна перетягнути замість назви поля символ "*", який знаходиться над списком полів, то в комірку буде поміщено всі поля відповідної таблиці. Для даного набору полів неможливо буде встановити жодної умови.

В рядку Table (Имя таблицы) автоматично з'явиться назва таблиці БД, якій належить дане поле. Аналогічно потрібно повторити операції перетягування для наступних полів, для яких необхідно вказати умову.

У відповідній даному полю комірці рядка Sort (Сортировка) потрібно вказати порядок сортування записів по даному полю після виконання запиту. Для цього потрібно помістити курсор у відповідну комірку, в результаті чого з'являється випадаючий список, де можна вибрати: Ascending (по возрастанию) - сортувати в порядку зростання, Descending (по убыванию) - в порядку спадання, not sorted (отсутствует) - не сортувати.

В рядку Show (Вывод на экран) потрібно встановити чи буде дане поле виводитись на екран при перегляді таблиці БД. Якщо необхідно, щоб дане поле відображалось в таблиці БД, то потрібно відмітити опцію у відповідній комірці (так, як це зроблено для полів Name та Vul на мал. 11.12).

Наступні рядки таблиці конструктора запиту (Criteria (Условие отбора)) використовуються для вказання критерію (умови) відбору даних у відповідному полі. При цьому тип умови залежить від типу поля, для якого ця умова встановлюється. При цьому часто використовуються текстові, числові умови та умови для роботи із датами. В ролі текстової умови вказується текст із вмістом поля потрібних записів. Наприклад, на малюнку 11.12 створено запит на представлення лише записів, в яких поле Name містить текст - "Тарасенко І.М". Цю умову можна вводити в наступних форматах: "Тарасенко І.М", Тарасенко І.М., =Тарасенко І.М., ="Тарасенко І.М". В будь-якому випадку програма Access автоматично переводить цей текст в формат "Тарасенко І.М".

Якщо користувачу зовсім або частково невідомий текст потрібного поля, то можна скористатись шаблонами: * - заміняє будь-яку кількість будь-яких символів, ? - заміняє не більше одного символу (наприклад, "Та*о" - будь-який текст, що починається на "Та" і закінчуються на "о"). Інколи в текстових умовах використовують логічний оператор not, який заперечує наявність, в полі таблиці тексту вказаного справа від оператора (наприклад, not "К*" - будь-який текст крім такого, що починається на літеру "К").

Числова умова та умова типу дата записується в форматі:

<логічний оператор><вираз>,

де в якості логічного оператора можна використовувати:

= дорівнює виразу,

< менше виразу,

> більше виразу,

<= менше або рівне виразу,

>= більше або рівне виразу,

<> не дорівнює виразу,

between в діапазоні між (наприклад - between 2.20 and 10.20).

Приклади задания умов:

"Київ" - записи, для яких текстове поле містить текст "Київ".

Not "Львів" - записи, для яких текстове поле містить будь-який текст крім "Київ".

Like [А-К]* - записи, для яких текстове поле починається з будь-яких літер, які ідуть в алфавіті від "А" до "К".

"Тк??"-записи, для яких текстове поле починається з літер "Тк", а далі в слові може бути ще до двох літер.

>=300 - записи, для яких вміст числового поля більший ніж 300.

Between 1/5/99 and 1/10/99 - записи, для яких поле дати лежить в межах від 1 травня 1999 року до 1 жовтня

1999 року.

<=Date()-60 - записи, для яких вміст поля дати відрізняється від поточної не більше як на 60 днів.

Досить часто запит не обмежується однією простою умовою, а об'єднує відразу кілька умов, які відносяться до різних полів. Такі запити використовують для об'єднання простих умов в комплексну, за допомогою логічних операцій AND (И) - логічне "і" та OR (ИЛИ) - логічне "або".

О перація логічного об'єднання "і" використовується в тому випадку, коли потрібно, щоб виконувались одночасно обидві прості умови. В запитах це використовується переважно тоді, коли умова створюється по двох полях одночасно (тобто коли потрібно щоб задовольнялись умови одночасно для двох полів). В Access логічне "і" між умовами запитів реалізується шляхом їх введення в комірки одного рядка Criteria (Условие отбора). Наприклад, на малюнку 11.12 встановлюється запит на відфільтровування записів де поле Name містить текст "Тарасенко І.М", а поле Vul - "Бандери". Записи, для яких вміст хоча б одного з перерахованих полів не містить відповідного тексту, не відповідають умові, а тому не відфільтровуються.

Операція логічного об'єднання "або" використовується в тому випадку, коли потрібно, щоб виконувалась хоча б одна з перерахованих умов. В запитах це використовується переважно тоді, коли прості умови створюються по одному і тому ж полю. При цьому прості умови записуються у рядки Criteria (Условие отбора) в одну колонку (яка відповідає потрібному полю). Наприклад, на малюнку 11.12 запит відфільтровує записи, для яких поле Name містить текст "Тарасенко ЇМ" або "Тарасенко MM".

На практиці запит складається із комбінації одночасно двох логічних операцій, як AND (И) так і OR (ИЛИ) (так, як це показано на мал. 11.12).

При цьому відкривається вікно з динамічним набором даних, які отримані в результаті виконання запиту. Динамічний набір зовні схожий на звичайну таблицю БД (мал. 11.13). При роботі з динамічним набором можна змінювати порядок слідування полів, встановлювати нові поля і знищувати існуючі. Для виконання цих операцій необхідно спочатку виділити відповідні поля, натиснувши ліву клавішу миші на їх заголовку (при натиснутому Ctrl). Переміщення відмічених полів виконується за технологією Drag-and-Drop. Для знищення поля в динамічному наборі даних потрібно його виділити і натиснути клавішу Delete або вибрати команду Delete (Очистить бланк).

Всі запити, які користувач створює в Access візуально (за допомогою конструктора запитів та іншими способами), автоматично транслюються в текст спеціальних програм, написаних мовою баз даних SQL (Structure Query Language - структурована мова запитів). Ці програми завантажуються при виконанні запитів. Для того, щоб побачити текст програми запитів мовою SQL, потрібно в пункті меню View (Вид) вибрати команду SQL View (Режим SQL).

Крім вищеописаних запитів є на вибірку в Access можна створювати інші типи запитів: запити на змінювання (action queries), перехресний запит (crosstab queries) та запити з параметрами.

Запити на змінювання

Якщо запити на вибірку відфільтровують дані і відображають їх в динамічному наборі, запити на змінювання виконують певні дії над відфільтрованими даними (наприклад, на основі цих даних можна створити нову таблицю БД).

В Access запити на змінювання створюються аналогічно до запитів на вибірку. Але після того, як запит створено (до закриття конструктора запитів), потрібно в пункті головного меню Queries (Запрос) вибрати команду Crosstab Query (Запрос на изменение). В результаті чого запит на вибірку перетвориться в запит на змінювання.

Запити на змінювання, як і інші запити, відображаються в закладці Queries (Запросы) головного вікна БД. Але їх можна відрізнити від інших запитів за наявністю знаку оклику зліва від назви запиту. Запити на змінювання найчастіше використовуються для таких задач:

  • знищення або архівування записів. Можна створювати записи на змінювання для знищення груп записів або їх копіювання в іншу таблицю з їх видаленням з попередньої таблиці;

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

Для створення запиту на створення нової таблиці БД на основі існуючих таблиць, потрібно створити запит на вибірку для цих таблиць (у вікні конструктора запитів). Потім в пункті меню Query (Запрос) вибрати команду Make-Table Query... (Создание таблицы). При цьому з'являється однойменне діалогове вікно (мал.11.14), де в полі Table Name (Имя таблицы) потрібно вказати назву створюваної таблиці. Крім цього в даному вікні є дві опції-перемикачі:

  • Current Database (в текущей базе данных) - помістити створену таблицю в активну БД;

  • Another Database другой базе данных) - помістити створену таблицю в іншу БД. При цьому в полі File Name (Имя) потрібно вказати ім'я файлу іншої БД.

З апити на добавлення

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

Для створення запиту на добавлення спочатку в конструкторі запитів потрібно створити запит на вибірку, де вказати всі необхідні умови. Після цього в пункті меню Query (Запрос) потрібно вибрати команду Append Query... (Добавление). В результаті чого з'явиться вікно створення запиту на добавлення, яке повністю аналогічне до вікна представленого на малюнку 11.14.

Запити на оновлення

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

Для створення запитів на оновлення потрібно спочатку створити запит на вибірку, а тоді в пункті меню Query (Запрос) вибрати команду Update Query (Обновление). В заголовку вікна конструктора запитів з'явиться повідомлення Update Query (Запрос на обновление), а в самому бланку конструктора з'явиться рядок оновлення. Потім необхідно помістити курсор у відповідну потрібному полю комірку рядка Update To (Условие отбора) і вказати формулу, за якою будуть змінюватись дані (наприклад, [Ціна]*1,1 - значення в полі "Ціна" помножити на 1,1 (збільшити на 10%)).

П ісля цього, для виконання запиту потрібно в пункті меню Query (Запрос) вибрати команду Run (Запуск) або вибрати піктограму

Запити на знищення

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

Для створення запиту на знищення потрібно спочатку створити запит на вибірку, для вибору записів, які слід знищити. Після цього, необхідно в пункті меню Query (Запрос) вибрати команду Delete Query (Удаление).

Н а завершення потрібно завантажити цей запит на виконання, вибравши в пункті меню Query (Запрос) команду Run (Запуск) або ж вибрати піктограму