
- •1.Основні поняття. Бази даних, банк даних, інформаційна система. Традиційні файлові системи. Бази даних. Системи управління базами даних (субд). Компоненти банку даних.
- •2.Розподіл обов'язків в системах з базами даних. Історія розвитку субд. Класифікація банків даних. Переваги та недоліки субд.
- •3.Середовище бази даних. Трьохрівнева архітектура ansi-spark. Зовнішній рівень. Концептуальний рівень.
- •4.Внутрішній рівень. Мови баз даних. Моделі даних і концептуальне моделювання. Функції субд. Компоненти субд.
- •5.Етап концептуального проектування. Основні поняття концептуального проектування. Концептуальне проектування. Об'єкти і їх властивості. Взаємовідношення об'єктів.
- •6.Слабкі та складні сутності. Проведення етапу концептуального проектування субд.
- •8. Реляційна модель бази даних. Історія розвитку реляційної моделі. Структура реляційних даних. Відношення в базі та їх властивості. Типи даних.
- •9. Нормалізація відношень баз даних. Нормальні форми. Цілі нормалізації. Надлишковість даних і аномалії оновлення.
- •Шоста нормальна форма.Таблиця знаходиться у 6nf, якщо вона знаходиться у 5nf та задовольняє вимозі відсутності нетривіальних залежностей. Зазвичай 6nf ототожнюють з dknf.
- •10. Аномалії вставки. Аномалії вилучення.
- •11. Функціональні залежності. Процес нормалізації. Перша нормальна форма (1нф)
- •12. Друга нормальна форма (2нф).
- •14. Нормальна форма Бойса — Кодда
- •Null-значення
- •19 Мова sql. Формат sql-операторів. Маніпулювання даними
- •1. Формат sql-операторів
- •2. Маніпулювання даними
- •2.1. Вибірка всіх рядків
- •20. Вибірка всіх рядків. Вибірка рядків (речення where). Сортування результату (фраза order by).
- •2.2. Вибірка рядків (речення where)
- •2.3. Сортування результату (фраза order by)
- •21. Використання узагальнюючих функцій мови sql
- •22. Групування результатів (фраза Group), Обмеження на виконання групування (фраза having)
- •2.6. Обмеження на виконання групування (фраза having)
- •23. Підзапити
- •25. Особливості і синтаксис речень модифікації. Речення delete. Видалення одиничного запису. Видалення множини записів. Видалення з вкладеним підзапитом.
- •26 .Речення insert.
- •1. Вставка єдиною записи в таблицю
- •2. Вставка безлічі записів
- •1. Оновлення єдиною записи
- •2. Оновлення безлічі записів
- •3. Оновлення з підзапитом
- •28.Етап фізичного проектування. Основні структури зберігання та методи доступу до даних. Основні поняття. Невпорядковані послідовні файли.
- •29. Впорядковані послідовні файли. Хешовані файли. Індексно-послідовні файли.
- •31. Розподілені бази даних. Концепція розподілених баз даних. Розподілені транзакції. Реплікація даних. Розподілена оптимізація запитів.
- •32. Експертні системи та бази знань. Призначення експертних систем. Структура експертних систем. Представлення знань в експертних системах. Поняття експертної системи. Властивості знань.
22. Групування результатів (фраза Group), Обмеження на виконання групування (фраза having)
Приведені в попередній лекції приклади зведених даних подібні підсумковим рядкам, звичайно розміщуваним в кінці звітів. В підсумках всі детальні дані звіту стискаються в одну узагальнюючу рядок. Проте дуже часто в звітах вимагається формувати і проміжні підсумки. Для цієї мети в операторі SELECT може указуватися фраза GROUP. Запит, в якому присутня фраза GROUP, називається групуючим запитом, оскільки в ньому групуються дані, одержані в результаті виконання операції SELECT, після чого для кожної окремої групи створюється єдиний сумарний рядок. Стовпці, перераховані у фразі GROUP, називаються групованими стовпцями. Стандарт ISO вимагає, щоб пропозиція SELECT і фраза GROUP були тісно зв'язані між собою. При використовуванні в операторі SELECT фрази GROUP кожний елемент списку в пропозиції SELECT повинен мати єдине значення для всієї групи. Більш того, пропозиція SELECT може включати тільки наступні типи елементів:
• імена стовпців;
• узагальнюючі функції;
• константи;
• вирази, що включають комбінації перерахованих вище елементів.
Всі імена стовпців, приведені в списку пропозиції SELECT, повинні бути присутні і у фразі GROUP — за винятком випадків, коли ім'я стовпця використовується в узагальнюючій функції. Зворотне правило не є справедливим — у фразі GROUP можуть бути присутні імена стовпців, відсутні в списку пропозиції SELECT. Якщо спільно з фразою GROUP використовується пропозиція WHERE, то воно обробляється першим, а групуванню піддаються тільки ті рядки, які задовольняють умові пошуку.
Стандартом ISO визначено, що при проведенні групування всі відсутні значення розглядаються як рівні. Якщо два рядки таблиці в одному і тому ж групованому стовпці містять значення NULL і ідентичні значення у всій решті непорожніх групованих стовпців, вони поміщаються в одну і ту ж групу.
Підрахувати, мінімальну, максимальну та середню зарплату по кожній професії
SELECT prof, MIN(zarpl) AS minimum, MAX(zarpl) AS maximum, AVG(zarpl) AS serednja
FROM spivrob
GROUP BY prof
ORDER BY prof;
2.6. Обмеження на виконання групування (фраза having)
Фраза Having призначена для використовування спільно з фразою GROUP для завдання обмежень, вказуваних з метою відбору тих груп, які будуть поміщені в результуючу таблицю запиту. Хоча фраза Having і пропозиція WHERE мають схожий синтаксис, їх призначення різне. Пропозиція WHERE призначена для фільтрації окремих рядків, що використовуються для групування або що поміщаються в результуючу таблицю запиту, тоді як фраза HAVING використовується для фільтрації груп, що поміщаються в результуючу таблицю запиту. Стандарт ISO вимагає, щоб імена стовпців, що використовуються у фразі HAVING, обов'язково були присутні в списку фрази GROUP або застосовувалися в узагальнюючих функціях. На практиці умови пошуку у фразі HAVING завжди включають, щонайменше, одну узагальнюючу функцію, інакше ці умови пошуку повинні бути поміщені в пропозицію WHERE і застосовуватися для відбору окремих рядків. (Не забувайте, що узагальнюючі функції не можуть використовуватися в пропозиції WHERE.)
Підрахувати, мінімальну, максимальну та середню зарплату по кожній професії із середньою зарплатою співробітника більше 4500.
SELECT prof, MIN(zarpl) AS minimum, MAX(zarpl) AS maximum, AVG(zarpl) AS serednja
FROM spivrob
GROUP BY prof
HAVING AVG(zarp) > 4500
ORDER BY prof;