8. 5. Використання бази даних „Навчальний процес” засобами sql
Метою будь-якої бази даних є введення, зміна, видалення і вибірка даних. Засоби мови SQL, призначені для введення, зміни, видалення даних, описані в розділі 6.4. Основним інструментом вибірки даних в мові SQL є команда SELECT (див. Розділ 6.5). Розглянемо, як з допомогою цієї команди можна отримати доступ до даних, представлених в таблицях бази даних „Навчальний процес”.
Нехай необхідно сформувати список студентів-пільговиків. Це можна зробити з допомогою наступної команди:
select student.prizv, student.ima, student.pob, pilgy.nazva_pilgy
from student, pilgy
where student.kod_ pilgy is not null and
student.kod_ pilgy = pilgy.kod_pilgy
Для формування списку студентів групи 202-БС, які навчаються на комерційній основі, необхідно виконати команду:
select student.prizv, student.ima
from student, zamov, grup
where student.kod_ zamov = zamov.kod_zamov and
student. kod_ grupa = grup.kod_grupa and
zamov.nazva_zamov = „Комерційна основа” and
grup. nazva _grupa = „202-БС”
Запити можуть керувати іншими запитами. Це робиться шляхом вміщення запиту всередину умови іншого запиту. Зазвичай, внутрішній запит генерує значення, яке перевіряється в умові зовнішнього запиту, яка визначає правильне воно чи ні. Наприклад, нам відоме прізвище студента, але нам потрібен його код для отримання даних з таблиці Успішність:
select usp.*
from usp
where kod_ st = (
select kod_ st
from student
where prizv = „Білан”
)
Вибрати з бази даних студентів, які отримали під час сесії незадовільну оцінку, можна з допомогою запиту:
select prizv, ima
from student
where kod_ st = (
select kod_ st
from usp
where ocinka = 2
)
Такий запит повертає список студентів, у якому можуть повторюватися прізвища та імена, оскільки студент під час сесії може отримати декілька негативних оцінок. Щоб уникнути цього запит слід доповнити описувачем DISTINCT.
Для того, щоб сформувати відомість рейтингу студентів, можна скористатися таким запитом:
select student.prizv, usp.avg(rating)
from student, usp
where student.kod_st = usp. kod_st
group by kod_st
order by usp.rating desc
Щоб вибрати з бази даних студента з найвищим рейтингом, потрібно виконати наступний запит:
select student.prizv, student.ima, usp.avg(rating)
from student, usp
where student.kod_st = usp. kod_st
group by kod_st
order by usp.rating desc
Для формування екзаменаційної чи залікової відомості з конкретної дисципліни використовується такий запит:
8. 6. Задачний практикум
Задача 1
Постановка задачі
Засобами MS SQL Server створити базу даних штату працівників рекламного агенства. Ця база складається з двох таблиць „Штат рекламних агентів”, „Обсяг операцій рекламного агенства”.
Поля таблиці 1 „Штат рекламних агентів”:
№ п/п;
Код працівника;
Прізвище
Ім’я
По-батькові
Адреса
Телефон
Дата народження
Освіта
Стаж роботи
Поле „Код працівника” повинно бути ключовим (співпадіння не допускаються). Це поле призначене для однозначної ідентифікації кожного працівника та буде використовуватись в інших таблицях.
Поля таблиці 2 „Обсяг операцій рекламного агенства”:
№ п/п;
Код працівника;
Дата здійснення операції
Сума операції
Назва рекламодавця
Розробити структуру таблиць. Створити зв’язок між таблицями. Головною таблицею вважати „Штат рекламних агентів”. Для зв’язування використати поля „Код працівника” обох таблиць.
Заповнити таблиці даними. В таблиці „Штат рекламних агентів” повинно бути не менше 10 записів. В таблицю „Обсяг операцій рекламного агенства” вноситься кожна здійснена операція рекламними агентами.
Створення запитів
Для таблиці „Штат рекламних агентів” створити запит „Список працівників”. Виводити наступні поля таблиці:
Код працівників,
Прізвище,
Ім’я,
По-батькові.
Для таблиці „Штат рекламних агентів” створити запит „Алфавітний список працівників”. Виводити наступні поля таблиці:
Прізвище,
Ім’я,
По-батькові,
Адреса,
Телефон.
Виконати сортування за „Прізвищем” в алфавітному порядку.
Для таблиці „Штат рекламних агентів” створити запит „Досвідчені працівники”. Вивести перелік працівників, стаж роботи яких більший або рівний 10 рокам, а освіта – вища. Виводити поля:
Прізвище,
Ім’я,
Стаж роботи,
Освіта.
Для таблиці „Штат рекламних агентів” створити запит „Молоді працівники”. Вивести список працівників, які народилися в період з 01.01.70 по 01.01.82. Виводити наступні поля таблиці:
Прізвище,
Ім’я,
Дата народження.
Для таблиці „Штат рекламних агентів” створити запит „Список працівників”. Вивести список працівників, прізвища яких починаються з літери „К”. Виводити наступні поля таблиці:
Прізвище,
Ім’я,
По-батькові.
6) Для таблиці „Штат рекламних агентів” створити запит „Кількість працівників з вищою освітою”
Вивести поле „Освіта” і поле, в якому обчислюється кількість. Назвати це поле „Кількість працівників”.
7)Для таблиць „Штат рекламних агентів” та „Обсяг операцій рекламного агентства” створити запит „Операції рекламних агентів”
Умови запиту.
Вивести список рекламних агентів в алфавітному порядку. Виводити наступні поля таблиці:
Прізвище
Ім’я
По-батькові
Сума операції
8)Для таблиць „Штат рекламних агентів” та „Обсяг операцій рекламного агентства” створити запит „Загальна сума операцій рекламних агентів”
Умови запиту.
Вивести список рекламних агентів в алфавітному порядку з обчисленням загальної суми операцій, яку здійснив рекламний агент за весь період своєї роботи. Виводити наступні поля таблиці:
Прізвище
Ім’я
По-батькові
Сума операції
9)Для таблиць „Штат рекламних агентів” та „Обсяг операцій рекламного агентства” створити запит „Кількість проведених операцій рекламних агентів”
Умови запиту.
Вивести список рекламних агентів з обчисленням кількості проведених операцій, яку здійснив рекламний агент за весь період своєї роботи. Виводити наступні поля таблиці:
Прізвище
Ім’я
По-батькові
Сума операції
Задача 2
Постановка задачі
Розробити базу даних за темою "Операційний відділ банку", передбачивши в ній декілька таблиць. Виконати нормалізацію бази даних, визначити ключові поля таблиць, встановити зв’язки між таблицями. Наповнити таблиці даними. Виконати запити до бази даних.
База даних складається з таблиць-довідників „Тип операції”, „Тип документа” і таблиць облікового характеру „Клієнти банку”, „Рахунки клієнтів”, „Розрахункові документи”. Структура таблиць та зв’язки між ними зображені на рис. 21..
Рис.21. Схема бази даних "Операційний відділ банку"
Розробити структуру таблиць бази даних, визначивши назви полів, типи полів, первинні та вторинні ключі. Створити структуру бази даних і наповнити її даними.
Створення запитів
Сформувати довідник рахунків клієнтів банку.
Вибрати операції, які були здійснені клієнтом банку протягом поточного банківського дня.
Вибрати операції, які були здійснені клієнтом банку протягом останнього місяця.
Вибрати операції, які були здійснені клієнтами банку на суму, яка перевищує 10 000 грн.
Вибрати прихідні касові операції, які були здійснені клієнтами протягом банківського операційного дня.
Сформувати відомість видатків та надходжень в касу банку за останній квартал поточного року.
Визначити загальну кількість операцій, виконаних операційним відділом банку за поточний день (за поточний місяць).
Визначити загальну суму операцій, виконаних операційним відділом банку за поточний день.
Сформувати особовий рахунок клієнта банку.
Контрольні запитання
Охарактеризуйте аналіз предметної області як перший етап проектування бази даних.
Розкрити суть логічного проектування реляційної бази даних.
В чому полягає фізичне проектування бази даних.
