Querynomicon 数据库(SQLite):企鹅、表和 SQL 练习
Querynomicon 是一个用于从零学习 SQL 的小型 SQLite 数据库:包含帕默企鹅数据集,以及一个有员工、实验和检测板的小型实验室。 在 SQLtest.online 上,你可以直接在浏览器中查询它:做自动判题的练习,或在练习场中运行自己的查询,无需安装任何软件。
- 13 张表
- 344 只企鹅
- 50 个实验
- 49 道 SQL 练习
什么是 Querynomicon
这个数据库来自 Greg Wilson 的免费教程 Querynomicon("An Introduction to SQL for Wary Data Scientists")。主表是帕默企鹅数据:来自南极洲三个岛屿、三个物种的 344 只企鹅的测量值。
数据量小、易于理解,但具有真实数据的特点:测量值和性别列中存在缺失值(NULL)。因此它非常适合学习筛选、排序、分组、NULL 处理以及 DDL 和 DML 基础。
数据库包含什么
这些表分为两组。
企鹅
包含全部 344 只企鹅的 penguins,以及用于快速试验的 10 行样本 little_penguins。
实验室
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 | 联系人 |
表结构
点击表名可查看它的列、示例行和键。
表格列表
- ident部门 ID
- name部门名称
- building建筑名称
| ident | name | building |
|---|---|---|
| gen | 遗传学 | 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 | 雄性 |
- 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 | 雄性 |
- ident员工编号
- personal员工名字
- family员工姓氏
- dept部门
- age年龄
| ident | personal | family | dept | age |
|---|---|---|---|---|
| 7 | Abram | Chokshi | gen | 23 |
- ident机器 ID
- 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": "需要软件更新"} |
示例查询
这些查询展示了数据之间是如何关联的。复制任意一条,在练习场中运行即可。
实验和检测板:使用 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 数据库的前几道练习:
常见问题
使用 Querynomicon 需要安装 SQLite 吗?
不需要。SQLtest.online 的练习和练习场都在我们的服务器上执行查询,有浏览器就够了。在练习场中选择 SQLite 3 Preloaded 即可。
什么是帕默企鹅?
一个很受欢迎的教学数据集:在南极帕默站收集的阿德利企鹅、帽带企鹅和巴布亚企鹅的测量数据。它常被用作鸢尾花数据集的现代替代品。
这个数据库适合初学者吗?
适合。表很小,主题也无需解释,你可以专注于 SQL 本身:SELECT、WHERE、ORDER BY、GROUP BY 以及 NULL 处理。