База данных Querynomicon (SQLite): пингвины, таблицы и SQL-задачи
Querynomicon — небольшая база SQLite для изучения SQL с нуля: набор данных о пингвинах Палмера и крошечная лаборатория с сотрудниками, экспериментами и планшетами для анализов. На SQLtest.online с ней можно работать прямо в браузере: решать задачи с автоматической проверкой и писать свои запросы в песочнице, ничего не устанавливая.
- 13 таблиц
- 344 пингвина
- 50 экспериментов
- 49 SQL-задачи
Что такое Querynomicon
База взята из Querynomicon — бесплатного учебника Грега Уилсона «An Introduction to SQL for Wary Data Scientists». Главная таблица содержит пингвинов Палмера: измерения 344 пингвинов трёх видов с трёх островов в Антарктиде.
Данных немного, и они понятны, но в них есть особенности настоящих данных: пропуски (NULL) в измерениях и в столбце пола. Поэтому на базе удобно учиться фильтрации, сортировке, группировке, работе с NULL и основам DDL и DML.
Из чего состоит база
Таблицы делятся на две группы.
Пингвины
penguins со всеми 344 птицами и little_penguins — выборка из 10 строк для быстрых экспериментов.
Лаборатория
department, staff, experiment, performed (кто проводил какой эксперимент), plate и invalidated, а также machine, usage, person и contact.
В таблицах с пингвинами нет ключей: каждая строка — одна птица. Таблицы лаборатории связаны числовыми идентификаторами, а performed связывает сотрудников и эксперименты «многие ко многим».
Сколько данных в таблицах:
| Таблица | Строк | Что хранит |
|---|---|---|
| penguins | 344 | пингвины и их измерения |
| little_penguins | 10 | выборка из 10 пингвинов |
| department | 4 | отделы |
| staff | 10 | сотрудники |
| experiment | 50 | эксперименты |
| performed | 65 | сотрудники ↔ эксперименты |
| plate | 256 | планшеты с анализами |
| invalidated | 30 | забракованные планшеты |
| machine | 3 | приборы лаборатории |
| person | 15 | люди |
| usage | 8 | журнал использования приборов |
| contact | 8 | контакты |
Структура таблиц
Нажмите на таблицу, чтобы увидеть её столбцы, пример строки и ключи.
Список таблиц
- identID отдела
- nameНазвание отдела
- buildingНазвание здания
| ident | name | building |
|---|---|---|
| gen | Genetics | Chesson |
- speciesВид пингвина
- island Остров проживания
- bill_length_mmДлина клюва, мм
- bill_depth_mmГлубина клюва, мм
- flipper_length_mmДлина плавника, мм
- body_mass_gМасса тела, гр
- sexПол
| species | island | bill_length_mm | bill_depth_mm | flipper_length_mm | body_mass_g | sex |
|---|---|---|---|---|---|---|
| Gentoo | Biscoe | 52.1 | 17 | 230 | 5550 | MALE |
- speciesВид пингвина
- island Остров проживания
- bill_length_mmДлина клюва, мм
- bill_depth_mmГлубина клюва, мм
- flipper_length_mmДлина плавника, мм
- body_mass_gМасса тела, гр
- sexПол
| species | island | bill_length_mm | bill_depth_mm | flipper_length_mm | body_mass_g | sex |
|---|---|---|---|---|---|---|
| Gentoo | Biscoe | 52.1 | 17 | 230 | 5550 | MALE |
- identНомер сотрудника
- personalИмя сотрудника
- familyФамилия сотрудника
- deptПодразделение
- ageВозраст
| ident | personal | family | dept | age |
|---|---|---|---|---|
| 7 | Abram | Chokshi | gen | 23 |
- identИдентификатор машины
- nameНазвание машины
- detailsИнформация о машине в формате JSON
| ident | name | details |
|---|---|---|
| 1 | WY401 | {"acquired": "2023-05-01"} |
| 2 | Inphormex | {"acquired": "2021-07-15", "refurbished": "2023-10-22"} |
| 3 | AutoPlate 9000 | {"note": "needs software update"} |
Примеры запросов
Эти запросы показывают, как связаны данные. Скопируйте любой и запустите в песочнице.
Эксперименты и планшеты — связь «один ко многим» с LEFT JOIN и подсчётом:
SELECT e.ident, e.kind, e.started, COUNT(p.ident) AS plates
FROM experiment e
LEFT JOIN plate p ON p.experiment = e.ident
GROUP BY e.ident
ORDER BY e.ident
LIMIT 3;
| ident | kind | started | plates |
|---|---|---|---|
| 1 | calibration | 2023-08-25 | 1 |
| 2 | calibration | 2023-02-14 | 1 |
| 3 | trial | 2023-02-22 | 10 |
Кто проводил эксперимент — связь «многие ко многим» через performed:
SELECT s.personal, s.family, e.kind, e.started
FROM performed pf
JOIN staff s ON s.ident = pf.staff
JOIN experiment e ON e.ident = pf.experiment
ORDER BY e.ident, s.ident
LIMIT 3;
| personal | family | kind | started |
|---|---|---|---|
| Nitya | Lal | calibration | 2023-08-25 |
| Indrans | Sridhar | calibration | 2023-02-14 |
| Kartik | Gupta | trial | 2023-02-22 |
SQL-задачи по темам
Задач на базе Querynomicon: 49 — от первого SELECT до представлений, индексов и триггеров. Решение проверяется автоматически на настоящем SQLite. Число справа — количество задач в теме, цветные метки — диапазон сложности.
- Основы SQL 1
- Аналитические запросы 2
- Манипулирование данными (DML) 1
- Язык определения данных (DDL) 13
С чего начать
Первые задачи по базе Querynomicon:
- Данные отделов
- Имена сотрудников
- Отсортируйте пингвинов
- Виды пингвинов
- Выбрать легких пингвинов
- Список пингвинов
- Распределение пингвинов по островам
- Распределение популяции (Pivot)
- Найти маленьких пингвинов
- Виды мелких пингвинов
Частые вопросы
Нужно ли устанавливать SQLite, чтобы работать с Querynomicon?
Нет. Задачи и песочница на SQLtest.online выполняют запросы на сервере, достаточно браузера. В песочнице выберите SQLite 3 Preloaded.
Что такое пингвины Палмера?
Популярный учебный набор данных: измерения пингвинов Адели, антарктических и папуанских пингвинов, собранные на станции Палмер в Антарктиде. Его часто используют как современную замену набору данных об ирисах.
Подходит ли эта база для начинающих?
Да. Таблицы маленькие, а предметная область не требует пояснений, поэтому можно сосредоточиться на самом SQL: SELECT, WHERE, ORDER BY, GROUP BY и работе с NULL.