问题 单项选择题

使用如下的SQL语句查询数据库:
SELECT bonus
FROM salary
WHERE bonus BETWEEN 1 AND 250
OR(bonus IN (190, 500, 600)

AND
bonus BETWEEN 250 AND 500);
请问这个SQL语句将返回如下的哪个值A.100
B.260
C.400
D.600

答案

参考答案:A

解析: 这一题是测试对逻辑操作符AND和OR以及运算符的优先级的理解。根据有关逻辑表达式和逻辑运算符的介绍和有关运算符优先级的介绍,可以知道逻辑与(AND)操作优先于逻辑或(OR)操作。接下来,详细解释一下这个SQL语句大致的执行流程:
(1)根据运算符的优先级,该SQL语句将首先计算表达式bonus IN(190, 500, 600) AND bonus BETWEEN 250 AND 500,根据有关逻辑与的规则,可知只有当两个条件都为T时,AND逻辑表达式的结果才为T,所以这个表达式的返回值为500
(2)接下来,SQL语句将计算表达式(bonus BETWEEN 1 AND 250)OR 500。实际上,这个表达式结果是1~250(包括1和250)或500的全部值,在所给的选项中只有100满足这个条件,所以只有选项A正确。

单项选择题
填空题