跳到正文
IGCSE·Tuition
计算机科学 · 课程

用正确的布尔分组组合条件

两条查询可以用同样的条件,却返回不同的行,因为分组决定了逻辑。

本页内容
  1. 这些运算符怎样运作?
  2. 例题
  3. 要留意的错误
  4. 自我检测
  5. 接下来学什么

AND 只有在两个条件都为真时才保留记录。OR 只要至少一个为真就保留。括号会强制某一部分条件先计算。

没有括号时,AND 先于 OR 计算。这正是括号位置成为数据库与查询推理考试陷阱的原因。

这些运算符怎样运作?

ABA AND BA OR B
TRUETRUETRUETRUE
TRUEFALSEFALSETRUE
FALSETRUEFALSETRUE
FALSEFALSEFALSEFALSE

加上 AND 会让查询更严格,所以只会减少行。加上 OR 会让查询更宽松,所以只会增加行。布尔与数制实验室可以帮你建立这样的真值表。

例题

这是 Plants 表。

PlantIDNameTypePriceStockIndoor
P01FernFoliage12.508TRUE
P02CactusSucculent6.0025TRUE
P03RoseFlowering15.000FALSE
P04MintHerb4.5040FALSE
P05OrchidFlowering28.003TRUE
P06BasilHerb5.0012FALSE
P07AloeSucculent9.5015TRUE
P08HibiscusFlowering18.006FALSE

比较两条查询。

SELECT Name FROM Plants
WHERE Type = "Herb" OR Type = "Succulent" AND Price > 6
SELECT Name FROM Plants
WHERE (Type = "Herb" OR Type = "Succulent") AND Price > 6

查询 1。 AND 先算,所以条件的意思是:Herb,或者(Succulent 且 Price > 6)。Mint 和 Basil 是香草,所以都通过。Cactus 是多肉植物,但 6.00 不大于 6,所以不通过。Aloe 是多肉植物,价格 9.50,所以通过。结果:Mint、Basil、Aloe(3 行)。

查询 2。 先算括号:植物必须是 Herb 或 Succulent,并且价格高于 6。Mint 4.50 不通过,Basil 5.00 不通过,Cactus 6.00 不通过,Aloe 9.50 通过。结果:Aloe(1 行)。

文字相同,括号不同,结果是三行对一行。

要留意的错误

常见的失误是从左到右读条件,忽略 AND 的优先级。

错误答案:“查询 1 只返回 Aloe,因为价格测试适用于香草和多肉植物。”

这种读法加上了查询里并不存在的括号。

纠正:在测试任何一行之前,先自己在 AND 周围写上括号。自己写查询时,即使括号可有可无,也一律加上。

自我检测

1. WHERE Type = "Flowering" AND Indoor = TRUE 返回哪些植物?

查看答案

Flowering:Rose(室外)、Orchid(室内)、Hibiscus(室外)。只有 Orchid 两个条件都通过。

2. WHERE Stock = 0 OR Price > 20 返回几行?

查看答案

Stock = 0:Rose。Price > 20:Orchid。合起来共 2 行:Rose 和 Orchid。

3. 改写 Type = "Herb" OR Type = "Foliage" AND Indoor = TRUE,让 Indoor 测试同时适用于两种类型。

查看答案
(Type = "Herb" OR Type = "Foliage") AND Indoor = TRUE

接下来学什么

接下来学习解释查询为什么没有返回行。单元练习题包含更多分组题。

当分组题在压力下仍然出错时,我们的老师可以通过计算机科学线上一对一补习帮助你。

更新于:

下一步

如果 AND 与 OR 的组合让你每道题都犹豫,一对一的老师可以陪你在小表格上练习,直到这个规律变成自动反应。

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

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

是家长或监护人?在这里咨询

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