问题 单项选择题

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

SELECT Sno

FROMSP SPX

WHERE (37)

(SELECT*

FROM SP SPY

WHERE (38) ANDNOTEXISTS

(SELECT*

FROM SP SPZ

WHERE (39) ));

(39)处填()。

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号选了的商品,该供应商没有选择。

根据以上的分解,显然第一空选择否定的表达,而IN/NOT IN的一般用法为

SELECT *

FROM table_name1

WHERE column1 IN/NOT IN

(SELECT column1

FROM table_name2

WHERE conditions);

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

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

SELECT *

FROMtable_name1

WHEREEXISTS/NOTEXISTS

(SELECT*

FROMtable_name2

WHERE conditions);

单项选择题
多项选择题