设供应商供应零件的关系模式为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);