Практика
Соберите базу аптеки с нуля своими руками. Каждый шаг выполняется на настоящем сервере, а если ошибётесь — объясним почему.
- 1Начать
Первый рабочий день
\l · create database · \c
Вы пришли стажёром по базам данных в аптеку «Shifo». Учёт здесь пока ведут в тетради — перенести его в базу предстоит вам. Сначала познакомьтесь с сервером.
0/4 шагов - 2Начать
Первая полка
create table · primary key · identity
В аптеке лекарства расставлены по полкам по категориям. В базе каждая «полка» — это таблица. Ваша первая таблица — список категорий.
0/3 шагов - 3Начать
Первые записи
insert into · select *
Полка готова, но пуста. Теперь добавим записи. Запомните: текстовые значения всегда пишутся в одинарных кавычках.
0/3 шагов - 4Начать
Лекарства и внешний ключ
foreign key · references · date
Привезли лекарства. Каждое относится к какой-то категории. Чтобы не писать название категории снова и снова, в таблице лекарств хранится только её номер. Этот номер — внешний ключ.
0/4 шагов - 5Начать
Поиск
where · like · order by · limit
Приехала машина с товаром — на полках теперь восемь лекарств. Когда покупатель спрашивает, нужное надо находить быстро. Для этого разберём возможности `select`.
0/5 шагов - 6Начать
Правки и уборка
update · delete · where
База живая: цены меняются, просроченные лекарства убирают. Осторожно — без `where` команда затронет все строки. На этом этапе при ошибке тренажёр вернёт базу в прежнее состояние.
0/4 шагов - 7Начать
Соединение таблиц
join · count · group by
В таблице лекарств стоит номер категории, но покупателю нужен не номер, а название. Соединение двух таблиц по ключам называется `join`.
0/3 шагов - 8Начать
Итоговое испытание: первая продажа
M:N · join × 2 · sum
Последняя задача — учёт продаж. Один покупатель берёт много лекарств, а одно лекарство берут многие. Для такой связи «многие ко многим» между ними ставят третью таблицу. Шаблонов здесь нет — применяйте то, чему научились.
0/6 шагов
Свободный режим
Площадка без проверок: создавайте свои базы и пробуйте любые запросы. Одной кнопкой можно загрузить готовую базу аптеки из семи таблиц.