Iphone
shpora.me - незаменимый помощник для студентов и школьников, который позволяет быстро создавать и получать доступ к шпаргалкам или другим заметкам с любых устройств. В любое время. Абсолютно бесплатно. Зарегистрироватся | Войти

* данный блок не отображается зарегистрированым пользователям и на мобильных устройствах

Бази даних. Запити -mike

Запити QBE в MS Access – побудова та використання Наведений матеріал дозволяє познайомитися з основними особливостями мови QBE (Query-by-Example – мова запитів за зразком) на прикладі відповідних функціональних можливостей СКБД Microsoft Access.Мова QBE використовує візуальний підхід для організації доступу до інформації в базі даних, побудована на застосуванні шаблонів запитів, запропонованих Злуфом (Zloof) в 1977 р. Робота в QBE здійснюється за допомогою задання зразків значень у шаблоні запиту, що передбачає той тип доступу до бази даних, який потрібен в даний момент, – наприклад, одержання відповіді на деяке питання.Мова QBE була розроблений компанією IBM в 70-і роки й призначалася для користувачів, зацікавлених у вибірці інформації з баз даних. Ця мова одержала в користувачів настільки широке визнання, що в цей час тією чи іншою мірою вона реалізований практично у всіх популярних СКБД, включаючи й Microsoft Access. Засоби підтримки мови QBE у СКБД Microsoft Access досить прості в експлуатації й у той же час надають користувачам досить широкий спектр можливостей роботи з даними.Засоби мови QBE можуть бути використані для вводу запитів до інформації, що зберігається в одній або більше таблицях, а також для визначення набору полів, які повинні бути присутнім у результуючій таблиці. Відбір записів може проводитися по конкретному або загальному критерію й передбачати виконання необхідних обчислень на основі інформації, що зберігається в таблицях. Крім того, засоби мови QBE можна використати для виконання різних операцій над таблицями – наприклад, для вставки й видалення записів, модифікації значень полів або створення нових полів і таблиць. Для демонстрації всіх цих можливостей скористаємося відповідними практичними прикладами.При створенні запиту з використанням засобів QBE, СКБД Microsoft Access неявно конструює еквівалентний оператор мови SQL, призначений для виконання зазначених дій. Мова SQL широко використається для виконання запитів, відновлення й обслуговування реляційних баз даних. 1 Знайомство із засобами генерації запитів СКБД Microsoft AccessПри створенні або відкритті бази даних у середовищі СКБД Microsoft Access у вікні Database відображаються всі об'єкти цієї бази даних – таблиці, форми, запити й звіти. Так, при відкритті бази даних DreamHome у цьому вікні буде представлений набір таблиць, що входять у згадану базу даних – як показано на рисунку 1. Рисунок 1 – Вікно Database СКБД Microsoft Access з об'єктами бази даних Запит до інформації, що міститься в базі даних, необхідно сконструювати таким чином, щоб вказати СКБД, які саме дані нас цікавлять. Найчастіше використовується тип запитів, що прийнято називати запитами на вибірку. Запити на вибірку дозволяють переглядати, аналізувати або вносити зміни в дані, що зберігають в одній або декількох таблицях.При виконанні запиту на вибірку СКБД Microsoft Access поміщає обрані дані в динамічний набір даних (dynaset). Динамічний набір являє собою динамічно створюване представлення (вид), що містить дані, які отримуються з однієї або більше таблиць. Дані вибираються й сортуються відповідно до зазначених в запиті вимог. Інакше кажучи, динамічний набір являє собою обновлюваний (не завжди) набір записів, визначений таблицею або запитом, який можна розглядати як окремий об'єкт.Крім запитів на вибірку, у середовищі СКБД Microsoft Access може бути створено і ряд інших типів запитів. У таблиці 1 наведений короткий огляд різних типів запитів, підтримуваних СКБД Access. Всі ці варіанти запитів докладно обговорюються нижче. Виключенням є лише запити, що використають специфічні можливості мови SQL, відсутні в мові QBE.На початку процедури створення нового запиту СКБД Microsoft Access виводить діалогове вікно New Query, показане на рисунку 2.Представлений у цьому вікні перелік доступних варіантів подальших дій дозволяє або приступити до створення нового запиту з нуля й виконати всі необхідні дії власними силами (варіант Design View), або скористатися для створення запиту допомогою одного з майстрів СКБД Access, назви яких становлять частину списку, що залишилася. Таблиця 1 – Типи запитів, підтримувані в СКБД Microsoft AccessТип запитуОписЗапити на вибіркуМістять формулювання запиту до бази даних, обумовлену як набір критеріїв для вибірки потрібних даних з однієї або більше таблицьЗапити з узагальненнямПередбачають виконання обчислень узагальнюючих характеристик (підрахунок кількості, суми, мінімального, максимального значення, середнього арифметичного) із використанням даних з деякої групи записівПараметричні запитиВиконання цих запитів супроводжується виводом одного або більше діалогових вікон, призначених для вводу користувачем конкретних значень параметрів запитуЗапити на вибірку дублікатівВиконують пошук записів, що дублюються, у межах єдиної таблиціЗапити на вибірку записів, що не має відповідностіПрацюють зі зв'язаними таблицями й виконують пошук записів однієї таблиці, що не мають відповідників у іншийПерехресні запитиЗ їхньою допомогою великий обсяг даних може бути просумовано і представлено у форматі невеликої електронної таблиціЗапити з автопідстановкоюПри виконанні запиту виконується автоматична підстановка певних значень у знову створювані записиАктивні запити (включають запити на видалення, додавання, поновлення (редагування) й створення таблиць)Дозволяють за одну операцію внести зміни в множину записів. Зміни передбачають видалення, додавання або поновлення (редагування) записів у таблиці, а також створення нових таблицьСпецифічні SQL-запити (включають функції з'єднання, передачі, визначення даних, а також підзапити)Цей тип запитів використовується для модифікації запитів, описаних вище типів і для визначення властивостей форм і звітів. У цих запитах допускається застосовувати специфічні засоби мови SQL – наприклад, операції з'єднання, оператори визначення даних і підзапити, а також передані запити. Переданими запитами називаються запити, що містять SQL-оператори, що пересилаються у бази даних СКБД SQL Server компаній Microsoft або SybaseРисунок 2 –  Діалогове    вікно    New   Query   СКБД Microsoft Access Майстри являють собою один з варіантів допоміжних програм СКБД. Вони задають користувачеві ряд питань про створюваний запит, після чого генерують його текст на підставі отриманих відповідей. Як видно з рисунка 2, можна скористатися відповідним майстром для створення простого запиту на вибірку, перехресного запиту й запитів на пошук дублікатів або записів, що не мають відповідників в деякій таблиці. На жаль, цим список доступних майстрів вичерпується, тому при створенні більш складних запитів на вибірку або інших типів запитів (параметричних, активних або з автопідстановкою) доведеться використовувати режим конструктора. 2 Використання QBE для створення запитів на вибірку данихЗапити на вибірку даних є найпоширенішим типом запитів. Вони призначені для добування даних з однієї або більше таблиць і відображення отриманих результатів у вигляді сітки з обраними даними, що допускають оновлення записів, які містяться в ній (з деякими обмеженнями). У сітці з вибраними даними отримана з таблиці інформація відображається у вигляді набору стовпців і рядків – подібно звичайній електронній таблиці. Запити на вибірку допускають групування записів, а також обчислення сум, кількості, середніх значень і застосування узагальнюючих функцій інших типів.Як уже вказувалося вище, простий оператор вибірки може бути створений за допомогою майстра простих запитів, що може бути викликаний з діалогового вікна, показаного на рисунку 2. Однак ми розглянемо приклад побудови простого запиту в режимі Design View – тобто починаючи з нуля, без допомоги яких-небудь майстрів.На початку створення нового запиту до бази даних відкривається вікно Select Query і на екран виводиться діалогове вікно, що у нашому випадку буде містити список таблиць і запитів, що існують у базі даних. У цьому вікні користувачеві необхідно вказати таблиці й/або запити, що містять потрібні дані.Вікно Select Query являє собою графічний інструмент мови QBE. Для формування зразка записів, що нас цікавлять, у графічному середовищі цього вікна для вибірки, перетягування або маніпулювання об'єктами, що містяться в ньому, можна використати мишу. Визначення полів і записів, які повинні бути включені в результати запиту, виконується в сітці мови QBE.При створенні запиту в сітці конструювання QBE-запиту СКБД Microsoft Access неявно генерує для нього еквівалентний SQL-оператор. Переглянути й відредагувати цей SQL-оператор можна у вікні SQL. Далі еквівалентний SQL-оператор буде приводитися для кожного запиту, створеного в сітці QBE або за допомогою відповідного майстра. Відзначимо, що багато з наведених SQL-операторів, згенерированих СКБД Microsoft Access, не відповідають вимогам стандарту SQL2. 2.1 Задання критеріїв відборуКритерієм відбору називають обмеження, які накладаються на результати виконання запиту з метою вибірки тільки тих полів або записів даних, які становлять інтерес для користувача. Наприклад, для добування з таблиці Property_for_Rent (Власність для оренди) тільки стовпців номера об'єкта (Pno), міста (City), типу об'єкта (Type) і суми орендної плати (Rent) у сітці QBE може бути підготовлений запит, показаний на рисунку 3, а. Після виконання цього запиту отримані результати будуть відображені в сітці даних, містячи тільки зазначені стовпці таблиці Property_for_Rent – як показано на рисунку 3, б. Текст еквівалентного SQL-оператора для даного запиту показаний на рисунку 3, в.Зверніть увагу, що на рисунку 3,а показане заповнене вікно Select Query зі списком полів цільової таблиці (у цьому випадку – Property_for_Rent), відображеною над сіткою QBE. У деяких з наведених нижче прикладах буде показана тільки сітка QBE, оскільки склад полів цільової таблиці можна легко визначити по набору полів, поміщених в сітку.Припустимо, що в запит, показаний на рисунку 3,а, необхідно додати новий критерій, що дозволить нам вибирати відомості тільки про об'єкти нерухомості, розташовані у місті 'Glasgow', тобто варто обумовити критерій, що обмежить результуючий набір даних тільки тими записами, у яких поле City має значення 'Glasgow'. Для цього досить ввести в сітці QBE вказане значення в комірку Criteria стовпця City. Рисунок 3 – Запит на вибірку: а) сітка QBE із запитом на вибірку полів Pno, City, Type й Rent з таблиці Property_for_Rent; б) результуюча сітка з даними цього запиту; 
в) еквівалентний SQL-оператор запиту Можна продовжити ускладнення умов відбору, вводячи додаткові критерії для того ж самого поля або для інших полів. Якщо помістити деякі вирази в більш ніж одну комірку рядка Criteria, СКБД Access з'єднає їх, використовуючи логічний оператор AND (І) чи OR (АБО). Якщо вирази в різних комірках будуть введені в той самий рядок сітки QBE, СКБД Access використає для їхнього з'єднання оператор AND. Це означає, що в результуючий набір будуть поміщені тільки ті записи, які відповідають одночасно всім зазначеним критеріям відбору. Якщо вирази будуть поміщені в різні рядки сітки QBE, СКБД Microsoft Access використає для їхнього з'єднання логічний оператор OR. У цьому випадку в результуючий набір потраплять будь-які записи, що відповідають хоча б одній із зазначених умов відбору.Наприклад, для виводу відомостей про розташовані в місті Глазго об'єкти нерухомості, у яких щомісячна орендна плата перебуває в діапазоні від 350 до 450 грн, досить помістити значення 'Glasgow' в комірку Criteria стовпця City й ввести вираз 'Between 350 And 450' в комірку Criteria стовпця Rent. Приклад відповідним чином заповненої сітки QBE наведений на рисунку 4, а. Після виконання даного запиту буде виведена сітка даних, яка містить тільки ті записи, які відповідають зазначеному критерію – як показано на рисунку 4, б. Еквівалентний SQL-оператор для даного запиту представлений на рисунку 4, в. Рисунок 4 – Запит на вибірку з критеріями відбору рядків: а) сітка QBE із запитом на вибірку даних про розташовані в місті Глазго об'єкти нерухомості, для яких орендна плата встановлена в діапазоні від 350 до 450 грн.; б) результуюча сітка з даними цього запиту; в) еквівалентний SQL-оператор запиту Припустимо, що тепер потрібно так змінити даний запит, щоб одночасно вибиралися і відомості про всі об'єкти нерухомості, розташовані у місті 'Aberdeen', причому встановлений для них розмір орендної плати не має значення. Для цього досить помістити значення 'Aberdeen' в комірку рядка or під коміркою зі значенням 'Glasgow' стовпця City. Вид сітки QBE з даним розширеним варіантом запиту представлений на рисунку 5,а. Після виконання цього запиту буде виведена сітка даних, що містить записи, які відповідають зазначеному критерію, – вона показана на рисунку 5,б. Еквівалентний SQL-оператор для даного запиту представлений на рисунку 5, в. Зверніть увагу, що в цьому випадку вважаються такими, що задовільняють встановленому критерію, всі записи, у яких поле City містить значення 'Glasgow' та (оператор And) значення в полі Rent розташоване в діапазоні від 350 до 450 грн., або (оператор Or) записи, у яких значення в полі City дорівнює 'Aberdeen'.При визначенні значень, які варто вибирати, можуть використовуватися символи підстановки або оператор LIKE. У цьому випадку відбір буде вестися по заданій початковій частині значення або у відповідності зазначеному більш складному шаблону. Наприклад, припустимо, що необхідно вибрати відомості про об'єкти нерухомості, розташовані у місті 'Glasgow', однак написання назви цього міста англійською мовою викликає у вас сумнів. У цьому випадку можна скористатися конструкцією з оператором LIKE і помістити в клітинку Criteria стовпця City вираз 'LIKE Glasgo'. В альтернативному варіанті для досягнення того ж самого результату можна використати символи підстановки й помістити в ту ж комірку значення 'Glasg*', якщо точна кількість букв у назві міста нам невідома. Символ підстановки (*) вказує місце розташування довільної кількості символів. Якщо ми точно знаємо довжину необхідного значення, можна ввести як критерій значення 'Glasg??'. Символ підстановки (?) вказує місце розташування єдиного невідомого символу. Рисунок 5 – використання складних критерії відбору рядків: а) сітка QBE із запитом на вибірку даних про розташовані в місті Глазго об'єкти нерухомості, для яких орендна плата встановлена в діапазоні від 350 до 450 грн., і про всі об'єкти в місті Абердин, незалежно від розміру орендної плати; б) результуюча сітка з даними запиту; в) еквівалентний SQL-оператор запиту 2.2 Створення багатотабличних запитівУ коректно нормалізованій базі даних зв'язані дані можуть зберігатися відразу в декількох таблицях. Тому дуже важливо, щоб при обробці запитів СКБД підтримувала можливість об'єднання зв'язаної інформації, що зберігається в різних таблицях.Для того, щоби вибрати необхідні дані відразу з декількох таблиць, варто підготувати запит на вибірку даних; у вікні запиту будуть представлені всі необхідні таблиці, а критерій відбору буде визначений у сітці QBE. Наприклад, для вибірки імені й прізвища власників об'єктів нерухомості із вказанням облікових номерів належних їм об'єктів, а також назв міст, у яких ці об'єкти розташовані, варто створити запит, показаний на рисунку 6,а. Списки полів цільових таблиць запиту (а саме таблиць Owner й Property_for_Rent) розміщені у вікні запиту над сіткою QBE. У результуючу таблицю запиту з таблиці Owner вибираються стовпці FName та LName, а з таблиці Property_for_Rent – стовпці Pno й City. Після виконання даного запиту буде виведена сітка даних, що містить записи, які відповідають зазначеному критерію, – вона показана на рисунку 6,б. Еквівалентний SQL-оператор для даного запиту представлений на рисунку 6, в.Рисунок 6 – запит на вибірку до двох таблиць: а) сітка QBE із багатотабличним запитом, призначеним для вибірки імен і прізвищ власників об'єктів нерухомості із зазначенням облікових номерів належних їм об'єктів і назв міст, у яких ці об'єкти розташовані; б) результуюча сітка з даними запиту; в) еквівалентний SQL-оператор запиту Багатотабличний запит, показаний на рисунку 6, являє приклад запиту із внутрішнім (природним) з'єднанням, яке докладно обговорювалося у відповідній лекції з матеріалом про реляційну алгебру.Якщо у вікно запиту поміщається більше однієї цільової таблиці, варто переконатися, що списки їхніх полів зв'язані між собою лініями з'єднання – тобто СКБД Microsoft Access знає, як з'єднати таблиці одну з одною. Зверніть увагу, що на рисунку 6,а СКБД Access помістила над верхньою частиною лінії з'єднання символ 1, що вказує на одиничну сторону зв'язку типу "один до багатьох". Над нижньою частиною лінії з'єднання поміщений символ ∞, що відзначає множинній стороні цього ж зв'язку. Це означає, що в нашому прикладі один власник може володіти багатьма об'єктами нерухомості, які здаються в оренду.Якщо СКБД Access не виконала з'єднання таблиць автоматично або якщо між даними таблицями ще не був описаний який-небудь зв'язок, то таблиці у вікні запиту не будуть зв'язані лінією з'єднання. Можливість вибірки зв'язаних даних із двох таблиць зберігається, але буде потрібно вказати спосіб з'єднання цих таблиць безпосередньо при створенні запиту у вікні сітки QBE. Однак, для того, щоби дві таблиці можна було з'єднати безпосередньо в запиті, в обох таблицях повинні існувати зв'язані поля. У прикладі, показаному на рисунку 6, поле Ono (Особистий номер власника) є загальним для обох таблиць – Owner й Property_for_Rent. Для того щоб з'єднання працювало коректно, обидва стовпці повинні містити однакові значення у зв'язаних записах даних. 2.3 Запити з узагальненнямДосить часто з'являється необхідність узагальнення тієї або іншої групи даних. Наприклад, скільки здаваних в оренду об'єктів є в кожному з місті? Чому дорівнює середня заробітна плата працівників компанії? Скільки разів оглядався кожен зі здаваних в оренду об'єктів з початку поточного року?Операцію узагальнюючих обчислень над групою записів можна виконати за допомогою запитів з підведенням підсумків (іноді їх називають узагальнюючими запитами). СКБД Microsoft Access дозволяє робити різні типи підсумкових обчислень, включаючи функції підсумовування (Sum), обчислення середнього значення (Avg), пошуку мінімального (Min) або максимального (Max) значення, а також підрахунку екземплярів (Count). Щоб одержати доступ до цих функцій, варто змінити тип запиту на Totals, у результаті чого в сітці QBE буде відображений додатковий рядок з назвою Total. Після виконання узагальнюючого запиту відображається таблиця, що містить моментальний знімок стану даних – набір рядків, який не допускає внесення змін.Як й у випадку запитів інших типів, у запиті з підведенням підсумків може бути зазначений деякий критерій відбору записів. Наприклад, припустимо, що потрібно визначити загальну кількість об'єктів нерухомості, здаваних в оренду в кожному з міст. Для цього необхідно спочатку згрупувати дані про об'єкти за значенням поля City, для чого використовується функція Group By, після чого виконати для кожної групи обчислення підсумкового значення за допомогою функції Count. Загальний вид сітки QBE з подібним запитом показаний на рисунку 7,а, а результуюча сітка даних представлена на рисунку 7,б. На цьому ж рисунку показаний еквівалентний SQL-оператор даного запиту. Рисунок 15.7 – Запит з узагалненнями: а) сітка QBE з узагальнюючим запитом, призначеним для визначення кількості об'єктів нерухомості, які здаються в оренду в кожному з міст; б) результуюча сітка даних цього запиту; в) еквівалентний SQL-оператор запиту Для виконання деяких обчислень може знадобитися підготувати власний вираз. Наприклад, припустимо, що потрібно обчислити суму річної орендної плати для кожного з об'єктів нерухомості, відомості про який є в таблиці Property_for_Rent, із зазначенням значень номера об'єкта (Pno), міста (City) і типу об'єкта (Type). Сума річної орендної плати для кожного з об'єктів обчислюється за допомогою множення суми місячної орендної плати на кількість місяців у році. Для проведення цих обчислень в окремий стовпець сітки QBE варто помістити вираз 'Yearly Rent: [Rent]*12', як показано на рисунку 8,а. У цьому виразі частина 'Yearly Rent:' являє собою ім'я нового стовпця, а частина, що залишилася, – '[Rent]*12' – задає формулу обчислення значень, що поміщають у нього, як добуток значення поля Rent кожного запису на число 12. Результуюча сітка даних запиту показана на рисунку 8,б. На рисунку 8,в представлений еквівалентний SQL-оператор цього запиту. Рисунок 8 – Запит з обчисленнями: а) сітка QBE із запитом на вибірку, що передбачає обчислення суми річної орендної плати для кожного здаваного в оренду об'єкта нерухомості; б) результуюча сітка даних цього запиту; в) еквівалентний SQL-оператор запиту 3 Більш складні типи QBE-запитів 3.1. Параметричні запитиПараметричні запити дозволяють вивести одне або більш заздалегідь визначених діалогових вікон, призначених для вводу користувачем конкретних значень параметрів запиту (критеріїв). Параметричні запити створюються за допомогою вводу в комірку Criteria тексту звертання до користувача, поміщеного в квадратні дужки. Ці дії виконуються для кожного стовпця, значення якого повинне вказуватися як параметр. Наприклад, припустимо, що потрібно так доробити запит, показаний на рисунку 6,а, щоб користувач міг ввести ім'я й прізвище власника об'єктів нерухомості, для якого необхідно вибрати відомості про приналежні йому об'єкти. Сітка QBE з подібним параметричним запитом представлена на рисунку 9,а. Для вибірки відомостей про об'єкти нерухомості, що належать власникові з іменем 'Carol Farrel', необхідно ввести відповідні значення імені й прізвища власника в перші й друге діалогові вікна, показані на рисунку 9,б. Вміст отриманої в результаті виконання даного запиту сітки даних представлено на рисунку 9, в, а еквівалентний SQL-оператор запиту – на рисунку 9, г. Рисунок 9 – Параметричний запит: а) сітка QBE з визначенням параметричного запиту; б) діалогові вікна для уведення значень імені й прізвища власника об'єктів нерухомості; в) сітка з даними, вибраними в результаті виконання запиту; г) еквівалентний SQL-оператор запиту 3.2 Перехресні запитиПерехресні запити можуть використатися для узагальнення оброблюваних даних і відображення їх у форматі компактної електронної таблиці. Цей формат дозволяє більш наочно представити великий обсяг даних з метою виявлення існуючих тенденцій і проведення порівняльного аналізу. Результуюча сітка перехресного запиту являє собою моментальний знімок стану даних і не дозволяє виконувати їхнє оновлення.Для створення перехресних запитів можна скористатися майстром CrossTab Query Wizard або ж визначити його власними силами в сітці QBE. Створення перехресного запиту нагадує створення запитів з підведенням підсумків, однак тепер додатково буде потрібно вказати поля, які будуть використатися як заголовки стовпців і рядків, а також поля, що містять вихідні значення даних.Наприклад, припустимо, що для кожного працівника компанії необхідно визначити кількість об'єктів нерухомості, розташованих у кожному з районів міста Глазго, за які він відповідає. Для підвищення наочності результатів виконання даного запиту ми помістили в таблицю Property_for_Rent кілька нових записів про об'єкти нерухомості. При підготовці даного запиту насамперед варто створити запит з підведенням підсумків, показаний на рисунку 10,а. У результаті його виконання буде отримана сітка даних, представлена на рисунку 10,б; еквівалентний SQL-оператор цього запиту показаний на рисунку 10,в. Однак формат подання результатів запиту незручний для проведення порівняльного аналізу даних по кожному із працівників. Зверніть увагу,  що на рисунку 10,а відмітка опції в комірці Show стовпця City не встановлена, тому даний стовпець відсутній у сітці з результатами запиту, представленій на рисунку 10,б. Рисунок 10 – Узагальнюючий запит як перша стадія підготовки перехресного запиту: а) сітка QBE, що містить   приклад запиту з підведенням підсумків; б) результуюча сітка даних запиту; в) еквівалентний SQL-оператор запиту Для перетворення запиту на вибірку даних у перехресний запит варто змінити тип запиту на Crosstab, у результаті чого в сітку QBE буде поміщений додатковий рядок Crosstab. Тепер у нас з'явилася можливість вказати поля, значення яких будуть використовуватися як заголовки стовпців і рядків або ж як вихідні дані для підсумовування. Модифікований варіант вихідного запиту показаний на рисунку 11,а. Після виконання нової версії запиту сітка з результатами буде більш компактною – як показано на рисунку 11,б. Її формат дозволяє легко проводити порівняльний аналіз показників окремих співробітників компанії. Текст еквівалентного SQL-оператора запиту показаний на рисунку 11, в.Рисунок 11 – Перехресний запит: а) сітка QBE із прикладом перехресного запиту; б) результуюча сітка даних запиту; в) еквівалентний SQL-оператор запиту 3.3 Запити на вибірку дублікатівЗа результатами запиту типу Find Duplicates (Пошук дублікатів) можна зробити висновок про наявність у таблиці записів, що дублюються, а також визначити, які записи таблиці містять те саме значення в деякому стовпці. Наприклад, можна виконати пошук значень, що дублюються, у полі адреси, що дозволить визначити наявність у базі декількох записів про одиного і того ж власника об'єктів нерухомості. У той же час можна виконати пошук дублікатів значень у полі City, що дозволить одержати відомості про власників нерухомості, що проживають у тому самому місті.Припустимо, що в якийсь момент ненавмисно був повторно створений запис про власника об'єктів нерухомості з іменем 'Carol Farrel', причому цьому запису був присвоєний власний унікальний номер власника. У результаті в базі даних з'явилося два записи з різними унікальними номерами власника, що описують  ту  саму  людину.   Для  виявлення  подібної  ситуації  можна скористатися запитом на вибірку дублікатів, створеним за допомогою майстра Find Duplicates Query Wizard, доступ до якого можна одержати в діалоговому вікні, показаному на рисунку 2. У цьому запиті відбір записів буде вестися за співпадаючим значенням у зазначених полях (у нашому прикладі ми для простоти обмежимося полями FName й LName). Як уже згадувалося вище, майстер створює запит на основі відповідей, наданих користувачем на задані цим майстром питання. Перш ніж запустити знову створений запит, має сенс подивитися на сітку QBE з даним запитом на вибірку продубльованих значень, показану на рисунку 12,а. Результуюча сітка даних запиту, що містить два рядки про власника по імені 'Carol Farrel', представлена на рисунку 12,б, а текст еквівалентного SQL-оператора – на рисунку 12,в. Зверніть увагу, що в останньому випадку SQL-оператор відображено повністю, включаючи й вкладений SQL-запит SELECT, який у рядку Criteria стовпця FName сітки QBE показаний лише частково. Рисунок 12 – Запит на знаходження дублікатів: а) сітка QBE із прикладом запиту на вибірку дублікатів; б) результуюча сітка даних запиту; в) еквівалентний SQL-оператор запиту 3.4 Запити на вибірку записів, що не мають відповідниківЗа допомогою майстра Find Unmatched Query Wizard, доступ до якого здійснюється з діалогового вікна, показаного на рисунку 2, можна відшукати всі записи зазначеної таблиці, які не мають зв'язаних записів в іншій таблиці. Наприклад, можна вибрати відомості про тих орендарів, які ще не оглядали які-небудь здавані в оренду об'єкти нерухомості – за допомогою порівняння записів таблиць Renter й Viewing. Майстер створить запит на основі наданих йому відповідей. Перш ніж аналізувати результати виконання запиту на вибірку невідповідних рядків, подивіться на його сітку QBE, загальний вид якої показаний на рисунку 13,а. Результуюча сітка даних запиту представлена на рисунку 13,б. Її вміст показує, що в таблиці Renter існує тільки один запис, для якого в таблиці Viewing немає ніодного зв'язаного запису. Він відноситься до орендаря з іменем 'Mike Ritchie'. Еквівалентний SQL-оператор запиту представлений на рисунку 13,в. Рисунок 13 – Запит на пошук рядків без відповідників у зв’язаній таблиці: а) сітка QBE із прикладом запиту на вибірку записів, що не має відповідності; б) результуюча сітка даних запиту; в) еквівалентний SQL-оператор запиту Запити з вибіркою рядків, які не мають відповідностих собі у підлеглій таблиці, являють приклад запитів з лівим зовнішнім з'єднанням, мова про які йшла відповідній лекції. 3.5 Запити з автопідстановкоюЗапити з автопідстановкою можуть використовуватися для автоматичного поміщення значень у певні поля знову створюваних записів. При введенні у вікні запиту або у вікні створеної на базі цього запиту форми деякого значення в поле, використовуване для з'єднання двох таблиць, СКБД Microsoft Access автоматично відшукає й помістить у зазначене місце інформацію, що відповідає введеному користувачем значенню. Якщо нам відоме значення, яке повинно бути поміщене в поле, використовуване для з'єднання таблиць, – наприклад, поле особистого номера працівника (Sno), використовуване для з'єднання таблиць Property_for_Rent та Staff, – то після вводу необхідного особистого номера працівника СКБД автоматично заповнить поля, що залишилися, інформацією про даного працівника. Якщо для введеного значення не буде знайдено відповідного запису, СКБД виведе повідомлення про помилку.Для створення запиту з автопідстановкою варто помістити в сітку QBE дві таблиці, між якими існує зв'язок типу "один до багатьох", після чого вказати поля, які повинні бути поміщені в результуючу сітку запиту. Поле з'єднання повинне бути обране з таблиці, що відповідає множинній стороні зв'язку. Наприклад, у запиті, що містить поля таблиць Property_for_Rent й Staff, поле Sno (зовнішній ключ) варто вибрати з таблиці Property_for_Rent. Вид сітки QBE з подібним запитом показаний на рисунку 14,а. Рисунок 14 – Запит з автопідстановкою: а) сітка QBE із прикладом запиту з автоподстановкой; б) результуюча сітка даних запиту; в) еквівалентний SQL-оператор запиту Ще раз зверніть увагу на те, що поле з'єднання таблиць Sno обрано з таблиці, що представляє множинну частину зв'язку. На рисунку 14,б показана результуюча сітка даних цього запиту, що дозволяє вводити номер об'єкта нерухомості, який добавляється, назву вулиці й місто, у якому він розташований. Далі можна буде ввести особистий номер працівника (наприклад, 'SG37'), що призначається відповідальним за цей об'єкт. Як тільки це поле буде заповнено, СКБД Microsoft Access автоматично виконає пошук у таблиці Staff і помістить ім'я й прізвище зазначеного працівника у відповідні поля форми. На рисунку 14,в показаний еквівалентний SQL-оператор даного запиту з автопідстановкою. 4 Зміна вмісту таблиць за допомогою активних запитів При створенні запиту СКБД Microsoft Access звичайно створює запит на вибірку даних, якщо тільки в меню Query не буде обраний який-небудь інший тип запиту. Після виконання запиту на вибірку СКБД відображає його результуючу сітку даних. Якщо ця сітка допускає відновлення даних, що містяться в ній, то необхідні зміни можна вносити безпосередньо в результати виконання запиту, однак у цьому випадку записи можна буде модифікувати тільки поодинці, послідовно, один за одним.У випадку, якщо необхідно виконати велику кількість подібних змін, час виконання завдання можна істотно скоротити, використовуючи активний запит. Активний запит дозволяє вносити зміни відразу в кілька записів. Існує чотири типи активних запитів: запити створення таблиць, запити видалення, запити оновлення й запити додавання записів. 4.1 Активні запити створення таблицьАктивні запити створення таблиць дозволяють створювати нові таблиці на базі всіх або частини даних однієї або декількох уже існуючих таблиць. Знову створена таблиця може бути збережена в поточній відкритій базі даних або експортована в іншу базу даних. Відзначимо, що дані в новій таблиці не успадковують властивостей полів вихідних таблиць, включаючи й визначення первинного ключа. Вся ця інформація повинна додатково вводитися вручну, як було описано в лабораторній роботі №2. Запити створення таблиць можуть бути корисні в багатьох випадках – наприклад, для збору історичної інформації, створення моментальних знімків стану даних або для збільшення продуктивності програм форм і звітів, що використовують багатотабличні запити.Припустимо, що потрібно створити нову таблицю StaffCut, що повинна містити стовпці Sno, FName, LName, Position й Salary, заповнені даними з існуючої таблиці Staff. Насамперед необхідно підготувати запит, призначений для вибору зазначених полів з таблиці Staff. Потім у режимі Design View варто змінити тип створеного запиту на Make-Table, у результаті чого на екран буде виведене діалогове вікно, показане на рисунку 15,а. Рисунок 15 – Запит на створення таблиці: а) діалогове вікно Make Table; б) сітка QBE із прикладом запиту створення таблиці; в) вид вікна попереджуючого повідомлення; г) результуюча сітка даних запиту; д) еквівалентний SQL-оператор запиту Це діалогове вікно містить пропозицію вказати ім'я й місце розташування нової таблиці. На рисунку 15,б показана сітка QBE з підготовленим активним запитом створення таблиці. Після запуску запиту на виконання СКБД виведе попереджуюче повідомлення із пропозицією вказати, чи варто продовжити операцію створення нової таблиці. Вид цього повідомлення представлений на рисунку 15,в. Якщо створення таблиці буде продовжено, СКБД створить нову таблицю з іменем StaffCut, вміст якої показано на рисунку 15,г. Еквівалентний SQL-оператор запиту представлений на рисунку 15,д. 4.2 Активні запити видаленняАктивні запити видалення призначені для видалення груп записів з однієї або більше таблиць. Один запит видалення може використатися для видалення записів з однієї таблиці; з декількох таблиць, між якими існує зв'язок типу "один до одного"; з декількох таблиць, між якими існує відношення "один до багатьох", але тільки в тому випадку, якщо встановлені правила підтримки цілісності посилань дозволяють каскадне оновлення.Наприклад, припустимо, що потрібно видалити всі відомості про об'єкти нерухомості, розташовані у місті Глазго, а також всі пов'язані з ними записи про огляди об’єктів нерухомості. Для виконання цієї операції насамперед варто створити запит, призначений для вибірки відповідних відомостей з таблиці Property_for_Rent. Потім у режимі Design View тип запиту повинен бути змінений на Delete. Сітка QBE зі створеним активним запитом видалення показана на рисунку 16,а. Оскільки між таблицями Property for_Rent й Viewing існує зв'язок типу "один до багатьох", причому для неї встановлене правило підтримки цілісності посилань Cascade Delete Related records, будуть вилучені всі рядки таблиці Viewing, що містять відомості про огляди об'єктів, розташовані у місті Глазго. При запуску запиту на виконання система виведе попереджуюче повідомлення, яке пропонує підтвердити необхідність продовження операції видалення. Загальний вид вікна цього повідомлення показаний на рисунку 16,б. Якщо виконання операції видалення буде продовжено, система видалить всі записи таблиці Property_for_Rent, що відповідають заданій умові, а також всі пов'язані з ними записи таблиці Viewing – як показано на рисунку 16,в і г. Еквівалентний SQL-оператор запиту представлений на рисунку 16, д. Рисунок 16 – Запит на видалення рядків: а) сітка QBE із прикладом активного запиту видалення; б) вид попереджуючого повідомлення; в) вміст таблиці Property_for_Rent після видалення записів; г) вміст таблиці Viewing після видалення записів; д) еквівалентний SQL-оператор запиту 4.3 Активні запити оновленняАктивні запити оновлення виконують глобальні оновлення в групах записів однієї або більше таблиць. Наприклад, припустимо, що орендну плату за всі здавані в оренду об'єкти необхідно збільшити на 10%. Для виконання подібного оновлення насамперед треба створити запит на вибірку даних з таблиці Property_for_Rent. Потім у режимі Design View варто змінити тип запиту на Update. В комірку Update To стовпця Rent необхідно помістити вираз '[Rent]* 1.1' – як показано на рисунку 17,а. Після запуску запиту на виконання система виведе попереджуюче повідомлення, показане на рисунку 17,б, що містить пропозицію підтвердити необхідність виконання операції оновлення. Якщо виконання операції буде продовжено, система обновить значення в стовпці Rent таблиці Property_for_Rent, як показано на рисунку 17,в. Еквівалентний SQL-оператор запиту представлений на рисунку 17,г. Рисунок 17 – Запит на оновлення даних: а) сітка QBE із прикладом активного запиту відновлення; б) вид вікна попереджуючого повідомлення; в) результуюча сітка даних запиту; г) еквівалентний SQL-оператор запиту 4.4 Активні запити додавання записівАктивні запити додавання записів призначені для вставки записів з однієї або більше вихідних таблиць у єдину цільову таблицю. Записи можуть бути додані в кінець таблиці, що належить тій же самій або іншій базі даних. Запити додавання записів можуть бути корисні при додаванні рядків (виходячи із заданого критерію) або навіть у тих випадках, коли деяких полів в іншій таблиці не існує. Наприклад, припустимо, що необхідно помістити в таблицю Owner докладні відомості про нових власників об'єктів нерухомості, які здаються в оренду. Припустимо також, що відомості про цих нових власників перебувають у таблиці з іменем NewOwner, що містить тільки стовпці Ono, FName, LName й Address. Більше того, у таблицю Owner потрібно помістити відомості тільки про тих нових власників, які проживають у місті Глазго. У цьому прикладі таблиця Owner є цільовою таблицею запиту, а таблиця NewOwner – вихідною.Створення активного запиту додавання записів варто почати з підготовки звичайного запиту, призначеного для добування необхідної інформації з вихідних таблиць – у нашому випадку це таблиця NewOwner. Потім тип знову створеного запиту варто змінити на Append, у результаті чого на екран буде виведене діалогове вікно, показане на рисунку 18,а. Рис. 15.18: а) діалогове вікно Append; б) сітка QBE із прикладом активного запиту додавання записів; в) вид вікна з попереджуючим повідомленням; г) уміст таблиць NewOwner й Owner після виконання запиту; д) еквівалентний SQL-оператор запиту Це діалогове вікно призначене для вказівки імені й розташування цільової таблиці створюваного запиту додавання. Сітка QBE з підготовленим активним запитом додавання записів показана нарисунку 18,б.  Після запуску запиту на виконання  система виведе попереджуюче повідомлення, вид якого показано на рисунку 18,в. У цьому повідомленні користувачеві пропонується підтвердити необхідність виконання операції додавання записів. Якщо виконання запиту буде продовжено, у таблицю Owner будуть додані два нові записи з даними про власників об'єктів нерухомості з міста Глазго, вибрані з таблиці NewOwner, як показано на рисунку 18,г. Еквівалентний SQL-оператор запиту представлений на рисунку 18,д.


Политология. Универсальная шпаргалка

перейти к оглавлению

1. Место политологии среди гуманитарных наук

Политология развивается в тесном взаимодействии с другими гуманитарными науками. Их всех объединяет общий объект исследования — жизнь общества во всем многообразии ее конкретных проявлений.

Сегодня невозможно изучать сложные политические процессы, не учитывая взаимодействие общественных (гуманитарных) наук.

1) Политология тесно связана с экономикой. Экономика дает соответствующее обоснование реализации экономических...

Русский язык и культура речи

перейти к оглавлению

1. ЭЛЕМЕНТЫ И УРОВНИ ЯЗЫКА

Характеризуя язык как систему, необходимо определить, из каких элементов он состоит. В большинстве языков мира выделяются следующие единицы: фонема (звук), морфема, слово, словосочетание и предложение. Единицы языка неоднородны по своему строению: простые (фонемы) и сложные (словосочетания, предложения). При этом более сложные единицы всегда состоят из более простых.

Самая простая единица языка – это фонема, неделимая и сама по себе...

законы диалектики

Основные законы диалектики.

1)Закон единства и борьбы противоположностей.

Этот закон является «ядром» диалектики, т.к. определяет источник развития, отвечает на вопрос, почему оно происходит.

Содержание закона: источник движения и развития мира находится в нем самом, в порождаемых им противоречиях.

Противоречие – это взаимодействие противоположных сторон, свойств и тенденций в составе той или иной системы или между системами. Диалектическое противоречие есть только там, где...

Идеология

1.Идеология как социальный феномен, её сущность. Содержание идеологииСоциально-исторической системой представлений о мире стала идеология как система рационально- логического обоснования поведения людей, их ценностей, норм взаимоотношений, целей и т.д. Идеология как явление во многом сходна с религией и с наукой. От науки она восприняла доказательность и логичность своих постулатов, но, в отличие от науки, идеология призвана давать оценку явлениям действительности (что хорошо, что...