问题 单项选择题

设供应商零件的关系模式为SP(Sno,Pno,Qty),其中Sno表示供应商号,Pno表示零件号,Qty表示零件数量。查询至少包含了供应商“168”所供应的全部零件的供应商号的SQL语句如下:

SELECT Sno

FROM SP SPX

WHERE (1)

(SELECT*

FROM SP SPY

WHERE (2) AND NOT EXISTS

(SELECT*

FROM SP SPZ

WHERE (3) ));

(3)处填()。

A.SPZ. Sno=SPY. Sno AND SPZ. Pno=SPY. Pno

B.SPZ. Sno=SPX. Sno AND SPZ. Pno=SPX. Pno

C.SPZ. Sno=SPX. Sno AND SPZ. Pno=SPY. Pno

D.SPY. Sno=’168’ AND SPZ. Pno=SPY. Pno

答案

参考答案:C

解析:

问题要求的是至少包含了供应商’168’所供应的全部零件的供应商号,可以分解成两个否定形式:不存在这样的供应商,168号选了的商品,该供应商却没有选择。

根据以上分解,显然,第(1)空选择否定的表达,即用双重否定表示肯定。而IN/NOT IN的一般用法为:

SEL ECT *

FROM table_ namel

WHERE columnl IN/NOT IN

(SEL ECT columnl

FROM table_ name2 WHERE conditions);

也就是说,IN后面接的是一个集合,且前面有列名columnl。

EXISTS/NOT EXISTS指是否存在,一般用法为:

SELECT *

FROM table_ namel

WHERE EXISTS/NOT EXISTS

(SELECT *

FROM table_ name2 WHERE conditions);

单项选择题
多项选择题