Головна
Лекції
Завдання
Побажання
Гостьова
Лінки
Лекція №7 Лекція №5 Скачати лекцію

Лекція 6

Мова запитів за зразком

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

Для підготовки запитів за допомогою різноманітних СУБД частіше за все використовуються 2 мови опису запитів.

  • Мова QBE – “запити за зразком”
  • SQL – “структурована мова запитів”

Головна відмінність між ними полягає в засобах формування запитів: мова QBE полягає в засобах формування запитів: мова QBE припускає ручне або візуальне формування запиту.

Характеристика мови QBE

Мова QBE дозволяє задавати складні запити до БД, шляхом заповнення пропонуємої СУБД запросної форми. Такий спосіб задання запитів забезмечує наочність та не потребує вказівки алгоритму виконання операції – досить описати зразок очікуваного результату.

На мові QBE можна задавати запити однотабличні та багатотабличні (які вибирають або обробляють дані з декількох зв’язаних таблиць.

За допомогою запитів на мові QBE можна виконувати наступні основні операції:

  • Вибірку даних;
  • Обчислення над даними;
  • Вставку нових записів;
  • Видалення записів;
  • Модифікацію ( зміну ) даних.

Результатом виконання запита є нова таблиця, що називається відповідною (від слова “відповідь” – перші 2 операції ), або поновлена вихідна таблиця (інші операції).

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

Запитна форма має вигляд таблиці, ім’я та назва полів якої, співпадає з іменем та назвами полів відповідної вихідної таблиці. Щоб взнати імена доступних таблиць БД, в мові QBE передбачений запит на вибірку імен таблиць. Назви таблиць вихідної таблиці можуть вводитись в шаблон вручну або автоматично.

Для прикладу візьмемо таблиці БД, яка відноситься до торгової сфери та використовується в фірмі, що продає товари кількох видів. База даних включає в себе 4 насткпні таблиці:

  • EMP (службовці): ПІБ – прізвище, ініціали службовця, ЗАРПЛАТА- розмір посадового окладу, КЕРІВНИК – Прізвище та ініціали керівника, ВІДДІЛ – назва відділу, в якому працює службовець;
  • SALES (продажі): ВІДДІЛ – назва відділу, ТОВАР – назва товару;
  • SUPPLY(поставки): ТОВАР – назва товару, який постачається, ПОСТАЧАЛЬНИК – назва організації, яка постачає товар;
  • TYPE (типи товарів): ТОВАР – назва товару, КОЛІР – його колір, ВАРТІСТЬ – вартість товару.

Для опису змінних в умовах відбору записів, а також для звязування шаблонів в записах використовується елементи прикладу.

Елемент прикладу грає роль ідентифікатора змінноі (як в мові програмування) та задаєтьсяза допомогою симовольно-цифрової послідовності. Елементи прикладу в шаблонах виділятимемо підкреслюванням. Вигляд (довжина та склад) елементу прикладу ролі не грають: головне, щоб при використанні в декількох місцях шаблона він був однаковий. Таким чином, як елементи прикладу, зокрема, можна використовувати ідентифікатори example, x або y.

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

Приклад 1. Запит на вибірку.

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

 

TYPE

ТОВАР

КОЛІР

ВАРТІСТЬ

 

Р.ХХ

зелений

 

 

Словесно запит можна сформулювати таким чином: “Вивести товари ХХ , колір яких зелений”. Пусті колонки можна видаляти із запису.

 

Приклад 2. Видалення колонок.

У нас не використовуваним стовпчиком є ВАРТІСТЬ. Виходячи з цього, для наведеного шаблону можна записати такий еквівалентний шаблон

TYPE

ТОВАР

КОЛІР

 

Р.ХХ

зелений

Після заповнення шаблону для отримання результату нажимаємо відповідну клавишу, наприклад, <Enter> та починаємо виконання запиту. Результатом виконання вищенаведеного запиту буде таблиця.

TYPE

ТОВАР

 

ручка

 

чорнило

 

Приклад 3. Проста вибірка.

Прикладом простої вибірки є запит: “ Вивести всі можливі кольори товарів з таблиці TYPE”. Заповнений шаблон матиме вигляд:

 

TYPE

ТОВАР

КОЛІР

ВАРТІСТЬ

   

Р.

 

 

Таблиця відповіді має один стовпчик КОЛІР, в якому містяться значенн: білий, червоний, пусто (значення не задане), зелений,синій. Дублююмі значення при цьому пропадають.

Якщо потрібно вивести дані з кількох полів вихідної таблиці, в кожному з відповідних стовпчиків шаблону записуємо “Р.”. Занесення “Р.” у всі стовпчики шаблона можна замінити записом ”Р” в першому стовпчику шаблона під іменем таблиці.

Проста вибірка з упорядкуванням. Дляупорядкування вибраних значень по зростанню та спаданню використовуються конструкції “АО.” Та “DO.” відповідно. Якщо потрібно виконати по декількох стовпчиках, застосовуються конструкції “АО(1).”, “АО(2).”

Вибірка з кваліфікаторами (умовами). Вибір записів з вихідної таблиці в загальному випадку може бути оснований на: точному співпаданні, частковому співпаданні, порівнянні.

  1. Точне співпадання задається введенням констант у відповідних полях шаблона, як у випадку запита по товарах зеленого кольору.
  2. Часткове співпадання задається за допомогою елементів прикладу. Зокрема для формулювання запиту про вивід всіх видів товарів, назви яких починаються з літери "і” можна скористатись конструкцією “Р.іke”, записаної в поле ТОВАР таблиці TYPE. В цьому випадку “Р.” задає вивід, “і”- константа, “ke” –елемент прикладу, який відіграє роль змінної. Використовуючи елементи прикладу, можна задавати різноманітні варіанти часткового співпадання із значеннями даних із таблиць: на початку “іke”, в кінці “ха”, всередині “х1ох2”. Оскільки елементу приклада відподіє будь-який символ, а також пустий (відсутність символа”, то умові часткового співпадання “х1ох2” відповідають слова, які мають символ “о” не тільки всередині, але й на початку та в кінці.
  3.  

    Приклад 4. Часткове співпадання

     

    Шаблон запиту з вибором товарів синього кольору, всередині назви яких є буква “р”, виглядає таким чином,

     

    TYPE

    ТОВАР

    КОЛІР

    ВАРТІСТЬ

     

    Р.xpy

    синій

     

    Результат в цьому випадку буде таким:

     

    TYPE

    ТОВАР

     

    олівець

     

    чорнило

  4. Умови порівняння записується за допомогою операцій порівняння: дорівнює (=), більше (>), менше (<), більше або дорівнює (>=) менше або дорівнює (<=), не дорівнює(!=), не більше (!>), не менше (!<).

Приклад 5. Умови порівняння

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

EMP

ПІБ

Зарплата

Керівник

Відділ

 

Р.

>360

 

іграшки

 

Результатом запиту є таблиця вигляду:

EMP

ПІБ

 

Григорєв А.Н.

 

Томілов А.Н.

Приклад 6. Порівняння з елементами прикладу

Створимо шаблон запиту вибору імен та зарплат співробітників, які отримують більше ніж Левін П.Г. Інакше запит можна сформулювати так: “Нехай Левін П.Г. отримує зарплату в кількості s. Знайти всіх співробітників, які отримують зарплату більше, ніж s, та вивести їх зарплати. Порядок рядків в шаблоні значення не має.

 

EMP

ПІБ

Зарплата

 

Р.

Р.>s

 

Левін П.Г.

s

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

 

EMP

ПІБ

Зарплата

     

Умови в запиті можуть задаватись по одному або декільком стовпчиках.

 

Приклад 7. Об’єднання умов

 

Для формулювання запиту вибірки імен та зарплат службовців, що отримують більше, ніж Левін П.Г. та працюють у відділі іграшок, достатньо в попередню запитну форму в перший рядок стовпчика ВІДДІЛ вставити слово “іграшки”.

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

 

EMP

ПІБ

Зарплата

Керівник

Відділ

 

Р.

Р.>s

 

department

 

Бєлкін Б.Н.

s

   

 

SALES

Відділ

Товар

 

department

ручка

 

Результатом виконання цього запиту буде таблиця вигляду:

 

EMP

ПІБ

Зарплата

 

Левін П.Г.

440

 

Сьомін С.В.

440

 

Тут елемент прикладу department звязує дві вихідні таблиці по полю ВІДДІЛ, а елемент прикладу s використовується для звязування умов вибору в рамках однієї вихідної таблиці EMP.

 

Приклад 8. Запит в шаблоні якого 2 зв’язки

 

Нехай потрібно знайти всіх службовців, які отримують зарплату більшу, ніж їх керівники. Цей запит за допомогою елементів прикладів можна сформулювати таким чином: “ знайти всіх службовців, чиї керівники є head та отримують зарплату, більшу, ніж s, де s зарплата head “ Шаблон відповідного запиту має вигляд:

EMP

ПІБ

Зарплата

Керівник

Відділ

 

Р.

.>s

head

 
 

head

s

   

 

Елемент head використовується для зв’язку керівника в першому рядку шаблону та імені в другому рядку, а елемент s використовується для порівняння зарплат. В цьому прикладі результуюча таблиця виявиться такою:

 

EMP

ПІБ

 

Гофман В.Е.

 

 

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

 

Приклад 9. Відбір з операцією заперечення

 

Нехай необхідно вивести всі відділи, що продають товари, які не постачаються компанією Pencraft. Цей запит можна перефразувати: “Вивести назви відділів, що продають товари t, такі, що компанія Pencraft не постачає товари t.

 

SALES

ВІДДІЛ

Товар

Р.

t

 

supply

товар

постачальник

8 t

Pencraft

 

Відповідна таблиця для сформульованого запиту має вигляд:

 

SALES

ВІДДІЛ

хозтовари

косметика

іграшки

 

У випадках, коли умови відбору записів для вибірки є великими виразами, які незручно або важко задавати в запросі, можна використовувати блок умов. За виглядом він нагадує один шаблон з пустим полем та іменем CONDITIONS. Блок умов призначений для запису логічних виразів. Записані в одному шаблоні логічні вирази, в загальному випадку можуть включати в себе операції логічного множення (AND) та логічного додавання (OR).

Приклад 10. Використання блоку умов.

Шаблон запиту виводу прізвищ співробітників, чия зарплата складає від 400 до 500, але не дорівнює 460, матиме вигляд:

EMP

ПІБ

Зарплата

 

Р. Jon

>400

 

Jon

<500

 

Jon

!=460

 

Використовуючи блок умов з явним заданням операції AND (&), цей запит можна сформулюват так:

 

EMP

ПІБ

Зарплата

 

Р.

s

 

CONDITIONS

S=(>400&<500&!#460)

 

Шаблон запиту виводу прізвищ співробітників, чия зарплата 400, 460 або 520, можна сформулювати так:

EMP

ПІБ

Зарплата

 

Р. Jon

400

 

P.Mak

500

 

P.Nik

520

 

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

EMP

ПІБ

Зарплата

 

Р.

s

 

CONDITIONS

S=(400|500|460)

 

При запису логічних виразів на QBE можуть застосовуватись вбудовані функції , такі як: CNT.( лічильник або кількість), SUM. (сума), AVG. (середнє), MIN. (мінімум), MAX.(максимум), UN. (унікальний) та ALL (всі значення, втому числі ті, що повторюються ). Перші 5 є статистичними, а 2 останні визначають чи включати у вибір ці значення.

Приклад 11. Використання функцій

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

EMP

ПІБ

Відділ

 

ALL.Employee

P.Toy

 

CONDITIONS

CNT.ALL. Employee >2

Конструкція Toy означаэ операцію групування, функція ALL.Employee формує множину всіх імен по кожному з відділів. Запис CNT.ALL. Employee >2 забезпечує перевірку логічної умови. Тут зустрілася нова операція – формування групи (яка записується жирним шрифтом елементу прикладу). Результуюча таблиця матиме вигляд:

EMP

Відділ

 

іграшки

 

косметика

Інший приклад. Вивести назви відділів, в яких продаються тільки товари зеленого кольору.

SALES

ВІДДІЛ

Товар

Р.Toy

aLL. lnk

 

TYPE

ТОВАР

КОЛІР

 

aLL. lnk

зелений

Таблиця відповіді для цього запиту буде порожньою.

EMP

ПІБ

Зарплата

Керівник

Відділ

 

Кисельов В.М.

360

Белкін Б.Н.

госптовари

 

Гурський С.І.

320

Томілов А.Н.

іграшки

 

Андрєєва Є.А.

400

Петров А.С.

косметика

 

Левін П.Г.

440

Петров А.С.

канцтовари

 

Носов А.П.

320

Томілов А.Н.

іграшки

 

Гофман В.Е.

520

Андрєєва Є.А.

косметика

 

Сорокіна Т.В.

340

Андрєєва Є.А.

косметика

 

Белкін Б.Н.

360

Петров А.С.

госптовари

 

Сьомін С.В.

440

Левін П.Г.

канцтовари

 

Григорєв А.Н.

380

Томілов А.Н

іграшки

 

Томілов А.Н

400

Петров А.С.

іграшки

 

 

SALES

Відділ

Товар

 

канцтовари

папір

 

госптовари

мило

 

канцтовари

олівець

 

косметика

помада

 

іграшки

літак

 

іграшки

машина

 

іграшки

лялька

 

косметика

парфуми

 

канцтовари

чорнила

 

госптовари

посуд

 

канцтовари

ручка

 

SUPPLY

ТОВАР

ПОСТАЧАЛЬНИК

 

ручка

Pencraft

 

папір

Pencraft

 

мило

Procter&Gamble

 

олівець

Flic

 

чорнило

Pencraft

 

парфуми

Beautex

 

чорнило

Flic

 

посуд

Cremco

 

помада

Beautex

 

літак

Signal

 

машина

Signal

 

лялька

Signal

 

посуд

Flic

 

ручка

Beautex

 

олівець

Pencraft

 

 

 

TYPE

ТОВАР

КОЛІР

ВАРТІСТЬ

 

посуд

білий

30

 

помада

червоний

17

 

парфуми

 

42

 

ручка

зелений

6

 

олівець

синій

2

 

чорнило

зелений

4

 

чорнило

синій

3

 

олівець

червоний

2

 

олівець

синій

2

Лекція №7 Лекція №5 Скачати лекцію

 

 
Hosted by uCoz