考虑如下所示的具有三个关系实例的数据库。 Drivers 和 Cars 关系的主键分别是 did 和 cid,并且记录按照表中给出的这些主键的升序存储。数据库中没有可用的索引。
以下 SQL 查询的输出是什么?
(A) Karthikeyan,鲍里斯
(B)萨钦、萨勒曼
(C) Karthikeyan、鲍里斯、萨钦
(D)舒马赫、塞纳答案:(一)
解释:
子查询总是在主查询执行之前执行。子查询首先完成。子查询的结果用作外部查询的输入。
从第一个内部查询:
选择 R.did from Cars C, Reserves R
其中 R.cid = C.cid 和 C.colour = ‘红色’。
C.color = “红色”,对应 C.cid={102,104}。
R.cid=C.cid 所以有五行提取到这个 where 条件。
R.did = {22, 22, 31,31, 64} 来自第二个内部查询:
选择 R.did from Cars C, Reserves R
其中 R.cid = C.cid 和 C.colour = ‘绿色’
C.color = “绿色”,对应的 C.cid={103}
R.cid=C.cid 所以有三行提取到这个 where 条件。
R.did = {22, 31, 74}
最后,外部查询选择其 did = {22,31} 的驱动程序名称
对应于 Karthikeyan 和 Boris。
所以正确选项是A。
该解决方案由Nitika Bansal 提供。
这个问题的测验