新月份,新目标。您的帮助使项目向前推进。 🖥️ 支持 sqltest →
SQL 代码已复制到剪贴板

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 以多对多方式关联员工和实验。

各表的数据量:

表行数内容
penguins344企鹅及其测量值
little_penguins1010 只企鹅的样本
department4部门
staff10员工
experiment50实验
performed65员工 ↔ 实验
plate256检测板
invalidated30作废的检测板
machine3实验室仪器
person15人员
usage8仪器使用记录
contact8联系人

表结构

点击表名可查看它的列、示例行和键。

表格列表

department - 部门表。
  • ident部门 ID
  • name部门名称
  • building建筑名称
ident name building
gen 遗传学 Chesson
little_penguins - 小企鹅表。
  • 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 雄性
penguins - 企鹅表。
  • 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 雄性
staff - 员工表。
  • ident员工编号
  • personal员工名字
  • family员工姓氏
  • dept部门
  • age年龄
ident personal family dept age
7 Abram Chokshi gen 23
machine - 机器表。
  • 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;
identkindstartedplates
1calibration2023-08-251
2calibration2023-02-141
3trial2023-02-2210

谁做了实验:通过 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;
personalfamilykindstarted
NityaLalcalibration2023-08-25
IndransSridharcalibration2023-02-14
KartikGuptatrial2023-02-22

按主题分类的 SQL 练习

基于 Querynomicon 数据库共有 49 道练习,从第一个 SELECT 到视图、索引和触发器。答案会在真实的 SQLite 上自动检查。 右侧数字是该主题的练习数量,彩色圆点表示难度范围。

从哪里开始

Querynomicon 数据库的前几道练习:

  1. 检索所有部门
  2. 员工姓名
  3. 排序企鹅
  4. 企鹅物种
  5. 最轻的企鹅
  6. 企鹅数据检索
  7. 企鹅物种在岛屿上的分布
  8. 种群分布(透视)
  9. 小企鹅
  10. 小型企鹅物种

全部 Querynomicon 练习 →

常见问题

使用 Querynomicon 需要安装 SQLite 吗?

不需要。SQLtest.online 的练习和练习场都在我们的服务器上执行查询,有浏览器就够了。在练习场中选择 SQLite 3 Preloaded 即可。

什么是帕默企鹅?

一个很受欢迎的教学数据集:在南极帕默站收集的阿德利企鹅、帽带企鹅和巴布亚企鹅的测量数据。它常被用作鸢尾花数据集的现代替代品。

这个数据库适合初学者吗?

适合。表很小,主题也无需解释,你可以专注于 SQL 本身:SELECT、WHERE、ORDER BY、GROUP BY 以及 NULL 处理。