- понимать, зачем нужны реляционные бд
- отличать субд друг от друга
- проектировать простые базы данных
- использовать клиенты для подключения к субд
- подключать базы данных к приложению
- писать простые запросы к базе данных (select, select + join)
- Хранение данных, SQLite - прочитать, без установки
(до "Установка Dev-Kit" + раздел "Язык SQL — кратко") - установите DBeaver (раздел "установка Dbeaver")
- зачем нужны базы данных? Почему бы просто не хранить данные в файлах?
- что такое СУБД?
- что такое модель данных?
- почему реляционные бд так называются?
- почему именно sqlite?
DBeaver - бесплатный клиент для работы с базами данных. Предоставляет графический интерфейс для просмотра и редактирования структуры базы данных, для выполнения sql-запросов.
Вы можете поставить DBeaver как в Windows, так и в ubuntu в wsl.
Можно установить и там, и там.
Для работы на занятии рекомендую поставить в ubuntu (wsl):
- заходим в консоль wsl
- ставим swt:
sudo apt install libswt-gtk-4-java- скачиваем dbeaver
- перемещаем файл в home wsl
- устанавливаем:
sudo dpkg -i dbeaver-ce_24.0.3_amd64.deb- запускаем
dbeaver-ceПри запуске согласитесь на создание тестовой базы данных (sample database).
Задания на мини-лекции.
- обсуждение опыта работы с базами данных
- проектируем простую бд (таблица комментариев, связи с пользователями и постами)
- пишем простой select, select с джойном
Откройте dbeaver:
dbeaver-ceИзучите тестовую базу данных (DBeaver sample database).
Напишите запросы для:
- выбора альбомов (все поля, прямая и обратная сортировка по названию)
- выбора альбомов и их исполнителей (название альбома и их исполнителя) (Artist)
Т.к. база данных sqlite будет в виде файла, удобно создать отдельную папку для практики:
mkdir week8
cd week8Создадим свою базу данных (у меня список дел):
sqlite3 todo.dbСоздадим таблицу:
create table if not exists tasks (
task varchar(255),
done integer,
id integer primary key autoincrement
);Добавить данные:
insert into tasks(task, done) values ("Разработать урок", 0);- добавьте свои дела с помощью insert
- напишите запрос, чтобы выбрать все дела :)
Обновить данные можно с помощью update:
update tasks set done = 1 where id = 1;Удаление:
Удалит все:
delete from tasks;Удалит по условиям:
delete from tasks where id = 1;
delete from tasks where task = 'сделать уроки';Select с условием:
select task, iif(done, "сделано", "не сделано") from tasks;Склонируйте игру себе:
git clone git@github.com:lightalloy/five-letters.git# перейдём в директорию
cd five-letters
# установим необходимое
bundle install
# запустим
bundle exec ruby play.rbМожно поиграть :)
Демо игры и обсуждение на занятии:
- шаги разработки
- подключение базы данных
- откроем бд в dbeaver
- откроем бд в клиенте sqlite3
Создайте директорию для вашего проекта и положите туда файл с базой данных.
Если ваша бд уже лежит в отдельной директории, можно работать в ней.
Создайте Gemfile и пропишите туда гем sqlite3-ruby (пример в репозитории
Установите: bundle install
Создайте файл (у меня тудулист todo.rb), подключите туда sqlite3-ruby, подключитесь к бд и выведите список записей.
Пример:
require "sqlite3"
DB_NAME = "todo.db"
db = SQLite3::Database.new DB_NAME
rows = db.execute("select id, task, done from tasks")
puts rows # rows - массив массивов (рядов таблицы)Можно добавить больше данных в вашу бд (с помощью консольного клиента sqlite3 или графического - dbeaver, с помощью insert)
Напишите разные варианты запросов (select) (набор полей, сортировка, ограничение количества).
Вы можете использовать inspect, чтобы посмотреть структуру массива, к-й вернулся из db.execute:
puts rows.inspectВыведите на экран поля id, текст дела, сделано или нет. Используйте итератор each для обхода массива.
Можно добавить логику, например, условия if-else.
Также можно добавить разделители для красоты. Пример:
rows.each do |row|
if row[2] == 0
puts "не "
end
puts "сделано - #{row[1]}"
puts "-------"
endНапишите свой вариант.
Доработайте ваше приложение, чтобы можно было принимать данные от пользователя (STDIN.gets) и записывать их в базу данных.
Также можно сделать редактирование и удаление "дел" (записей в соотв. с темой вашей программы).
Бесплатный курс на Яндекс-практикуме «Основы работы с базами данных и SQL» (на 5 часов)
Мой урок для code sisters: основы реляционных СУБД
Обзор истории и видов СУБД для цикла занятия с использоваением метода ажурной пилы (jigsaw)
