Тема: cтворення програмного проекта простої бази даних «Учні» з даними про прізвище, ім'я, успішність, забезпечення виведення даних про учнів за зазначиними критеріями.
Мета: навчити основам роботи з базами даних SQL з використанням мови програмування Ruby.
Учні повинні знати:
Учні повинні мати уявлення про можливості комплексу Ruby + MariaDB.
Учні повинні вміти:
Обладнання: комп'ютери зі встановленими ОС, Ruby, XAMPP.
Структура уроку
Примітка. Цей урок проводять лише після успішного опанування матеріалом уроків щодо вивчення SQL і виконання усіх його практичних завдань.
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку.
2. Актуалізація опорних знань
Дати відповідь на питання і порівняти з очікуваним.
3. Вивчення нового матеріалу
Під'єднання бази даних і здійснення запиту мовою SQL мовою Ruby за допомогою бібліотеки Ruby-mysql2 (її встановлюють за допомогою менеджера програм), може мати такий вигляд:
require 'mysql2' # під'єднання бібліотеки mysql2 c = Mysql2::Client.new( # створення сполучення :host => '127.0.0.1',# адреса локального сервера (localhost) :username => 'root', # обліковий запис користувача базами даних :password => '', # пароль до облікового запису користувача БД :database => "school", # назва бази даних :port => 3306) # порт сполучення r = c.query ("SELECT * FROM pupils WHERE form = '11Б';") # запит r.each do | row | # виведення результатів запиту: puts row # кожний рядок таблиці у вигляді end # словника (асоціативного масиву) r.each do | row | # виведення результатів запиту: print row['sename'],' ', # для кожного рядка таблиці - row['name'],' ', # значення полів 'sename', 'name', row['form'],' ', # 'form' i 'no' через пробіл row['no'],"\n" end
Тут замість назв змінних c, r, row можуть бути довільні інші назви. Поданий вище код програми є змістовним прикладом для бази даних school, побудованої раніше у середовищі XAMPP, для якої він дає такий результат у консолі:
{"sename"=>"ЛИСЕНКО", "name"=>"ДМИТРО", "form"=>"11Б", "no"=>"113"} {"sename"=>"РУДЕНКО", "name"=>"ОЛЕГ", "form"=>"11Б", "no"=>"114"} {"sename"=>"САВЧЕНКО", "name"=>"ВАЛЕРІЙ", "form"=>"11Б", "no"=>"115"} {"sename"=>"ПЕТРЕНКО", "name"=>"ЛЕОНІД", "form"=>"11Б", "no"=>"116"} {"sename"=>"ШУЛЬГА", "name"=>"ГАЛИНА", "form"=>"11Б", "no"=>"117"} {"sename"=>"РАДЧЕНКО", "name"=>"ТЕТЯНА", "form"=>"11Б", "no"=>"118"} {"sename"=>"КОРОЛЬ", "name"=>"НАДІЯ", "form"=>"11Б", "no"=>"119"} {"sename"=>"ОСТАПЕНКО", "name"=>"ЛЮДМИЛА", "form"=>"11Б", "no"=>"120"} ЛИСЕНКО ДМИТРО 11Б 113 РУДЕНКО ОЛЕГ 11Б 114 САВЧЕНКО ВАЛЕРІЙ 11Б 115 ПЕТРЕНКО ЛЕОНІД 11Б 116 ШУЛЬГА ГАЛИНА 11Б 117 РАДЧЕНКО ТЕТЯНА 11Б 118 КОРОЛЬ НАДІЯ 11Б 119 ОСТАПЕНКО ЛЮДМИЛА 11Б 120
4. Інструктаж з ТБ
5. Закріплення вивченого матеріалу
На початку виконання завдань середовище XAMPP повинне бути активним і містити порожню базу даних school. При виконанні завдань використати демонстраційні розв'язання a, b, c завдань уроку 1 щодо SQL.
Завдання 1. Створити програму мовою Ruby, яка засобами SQL:
виконає запити створення структури й наповнення таблиць згідно з вказівками, записаними у файлах structure.txt і data.txt (результат перевіряють засобами phpMyAdmin);
виведе у консоль назви усіх наявних баз даних;
для усіх наявних таблиць бази даних school виведе у консоль назви цих таблиць і результати запиту щодо їхньої структури у вигляді асоціативного масиву (без опрацювання запиту).
Порівняти з очікуваними кодом і виведенням.
Завдання 2. Використовуючи попередньо апробований код SQL, створити програму мовою Ruby для виведення у консоль у вигляді асоціативних масивів таких даних:
всі поля з таблиці pupils про учнів 11Б класу (поле form);
всі поля з таблиці classroom про аудиторії корпусу A (поле building, латиниця), ємність яких (поле capacity) менше 24 і більше від 16 (2 варіанти);
з таблиці pupils про прізвище (поле sename) та ім'я (поле name) усіх тих записів, у яких прізвище закінчується на 'УК';
з таблиці pupils про прізвище (поле sename) та ім'я (поле name) усіх тих записів, у яких ім'я (поле name) 'Андрій' або 'Григорій';
з таблиці pupils про загальну кількість учнів;
з таблиці teachers про категорії (поле quality) та кількість учителів цієї категорії;
з таблиці teachers про категорії (поле quality) та кількість учителів цієї категорії, що перевищує 1;
з таблиці marks про прізвище (поле sename) й оцінку (поле mark) за день 2020-09-24 у порядку зростання оцінки;
з таблиці marks про прізвище (поле sename) й оцінку (поле mark) за день 2020-09-24 у порядку спадання оцінки;
з таблиці marks про прізвище (поле sename) й оцінку (поле mark) за день 2020-09-24 у порядку спадання оцінки лише тих, хто посів 4, 5 і 6 місце у цьому списку з підписами стовпчиків 'Прізвище' й 'Оцінка';
з таблиці courses список всіх дисциплін (поле course) і відповідну інформацію про кафедри з таблиці department у режимах;
Виконати запити й порівняти з очікуваними кодом мовою Ruby і результатом.
Завдання 3. Використовуючи попередньо апробований код SQL, створити програму мовою Ruby для такого:
створити віртуальну таблицю own_view усіх полів усіх записів таблиці marks, у яких оцінка (поле mark) менша ніж 7;
вивести у консоль у вигляді асоціативних масивів даних own_view.
Виконати запити й порівняти з очікуваними кодом і результатом.
Завдання 4. Використовуючи попередньо апробований код SQL, створити програму мовою Ruby для такого:
Виконати запити й порівняти з очікуваними кодом і результатом.
6. Підбиття підсумків уроку
Дати відповідь на питання і порівняти з очікуваним.
Виставлення оцінок.
7. Домашнє завдання
У разі потреби доробити завдання. Вивчити систаксис під'єднання бази даних і здійснення запиту мовою SQL з програми мовою Ruby. Написати програму мовою Ruby, яка:
Текст упорядкував Олександр Рудик.