跳到正文
IGCSE·Tuition

工具

只读 SQL 练习室

查询看起来没问题,却可能返回错误的行,通常是因为某个条件的分组方式不对。

本页内容
  1. 怎么使用?
  2. 怎么看结果?
  3. 例子演示
  4. 有哪些假设和限制?
  5. 哪些课程解释了这些结果?

你输入的所有内容只保存在此设备上,不会发送给我们。

这个练习室让你在一个名为 Books 的小型虚构表上练习 SELECT 查询。表有十二行,列为 BookID、Title、Genre、Pages、Price 和 Stock。

只接受只读查询,所以你可以放心尝试,每个结果都附有逐步的推演过程。

怎么使用?

  1. **从八个练习中选一个。**每个练习是一句通俗的任务,例如“显示所有 Fantasy 书籍的 Title 和 Price。”
  2. **在文本框里写查询。**有些练习一开始就给了一条差不多正确的查询。先预测它会返回什么。
  3. 按运行查询。重置会让练习室回到初始状态。
  4. 读推演过程,再把你的结果与预期结果对比。

支持:SELECT 加列名、* 或 COUNT、SUM、AVG、MIN、MAX;FROM Books;WHERE 可用 =、<>、<、>、<=、>=、AND、OR、NOT、LIKE、BETWEEN 和 IN;ORDER BY;LIMIT。文字值要放在单引号里。

怎么看结果?

推演过程按真实的思考顺序展开:FROM Books 从全部 12 行开始,WHERE 只保留条件为真的行并说明剩下几行,ORDER BY 排序,LIMIT 保留前几行,SELECT 决定显示哪些列。

然后你会看到自己的表和预期表并排显示,并提示两者是否一致,以及本练习中行的顺序是否也重要。

例子演示

选择练习“显示缺货(Stock 为 0)的 Mystery 或 Science 书籍的 Title”。初始查询是:

SELECT Title FROM Books WHERE Genre = ‘Mystery’ OR Genre = ‘Science’ AND Stock = 0

运行后得到三行:Silent Harbour、Paper Lanterns 和 Night Train。预期结果只有两行。为什么?

AND 比 OR 先计算。所以这条查询的意思是“Mystery,或者(Science 且缺货)”。每本 Mystery 都符合,不管有没有库存。

没有 Science 书的 Stock 为 0,所以第二部分没有加任何行。

用括号修正:WHERE (Genre = ‘Mystery’ OR Genre = ‘Science’) AND Stock = 0。现在先判断类别,再判断库存。结果是 Silent Harbour 和 Night Train,与预期一致。

再试第二个:“数一数价格低于 20 的书有几本。”SELECT COUNT(*) FROM Books WHERE Price < 20 返回 5,对应价格 18.5、14、19.9、16.5 和 9.9。

然后测试防护:输入 DROP TABLE Books,看看它是如何被拒绝的。

有哪些假设和限制?

  • 数据是虚构且固定的。不使用任何个人数据,也不能连接外部数据库。
  • 只运行一条只读 SELECT。多余的语句、注释和文件函数都会被拒绝。
  • 这是小型解释器,不是完整的数据库引擎。不支持连接、GROUP BY 和子查询,把普通列与聚合函数混用也会被拒绝。
  • 文字比较需要引号。拿数字与文字比较会给出明确的错误提示。
  • 仅用于原创练习。它不会批改需要评分的课业,也不使用你自己的数据。

哪些课程解释了这些结果?

先看写一个简单的 SELECT 筛选条件。例子中的括号问题,是用正确的布尔分组组合条件的主题。当你得到零行时,请读解释为什么查询没有返回任何行。

想做综合题,可以试试数据库与查询推理练习,整个主题见数据库与查询推理。如果你走的是 ICT 实践路线,正确使用多个查询条件在数据库软件里讲的是同样的分组思路。

想让老师陪你检查查询?请看在线一对一 Computer Science 补习或 ICT 补习。更多工具见学习工具目录。

常见问题

这个练习室会更改或破坏数据吗?

不会。它一次只接受一条 SELECT 语句,作用于页面内一个小型虚构的 Books 表。DROP、UPDATE、DELETE 和 INSERT 等词会在运行前被拒绝,多条语句和文件函数也一样。没有任何内容被保存,每次数据都会重置。

为什么我的查询被拒绝了?

提示会说明原因。常见原因有:不是以 SELECT 开头、分号后还有第二条语句、含有注释,或用了不存在的列。可用的列是 BookID、Title、Genre、Pages、Price 和 Stock,唯一的表是 Books。

支持连接和 GROUP BY 吗?

不支持。本练习室有自己的小型解释器,涵盖 SELECT 加列名、* 或 COUNT、SUM、AVG、MIN、MAX,以及 FROM Books、WHERE、ORDER BY 和 LIMIT。连接、GROUP BY 和子查询不在其中。你所在考试年份要求什么,请以当前大纲为准。

“预期结果”是什么意思?

每个练习都有一条参考查询,给出目标行。工具把你的行与它对比,部分练习还要求行的顺序一致。如果不同,请对比两个表,并检查 WHERE 条件、列和 ORDER BY。

资料来源

  1. Cambridge IGCSE Computer Science 0478 大纲页面

更新于:

下一步

如果你的查询能运行却返回错误的行,一对一老师可以陪你检查 WHERE 条件,指出分组在哪里改变了意思。

一小时付费试听课,按所安排老师确认的收费,RM80 起。 其他费用、时间安排及后续课程,在试听课后由你与老师直接确认。

已通过我们的服务帮助 9,000+ 名学生