职员.DBF:职员号 C(3),姓名 C(6),性别 C(2),组号 N(1),职务 C (10) 客户.DBF:客户号 C(4),客户名 C(36),地址 C(36),所在城市 C (36) 订单.DBF:订单号 C(4),客户号 C(4),职员号 C(3),签订日期 D,金额 N(6,2) 显示没有签订任何订单的职员信息(职员号和姓名),正确的 SQL 语句是______。
A.SELECT 职员.职员号,姓名 FROM 职员 JOIN 订单 ON 订单.职员号=职员.职员号 GROUP BY 职员.职员号 HAVING COUNT(*)=0
B.SELECT 职员.职员号,姓名 FROM 职员 LEFT JOIN 订单 ON 订单.职员号=职员.职员号 GROUP BY 职员.职员号 HAVING COUNT(*)=0
C.SELECT 职员号,姓名 FROM 职员 WHERE 职员号 NOT IN(SELECT 职员号 FROM 订单)
D.SELECT 职员.职员号,姓名 FROM 职员 WHERE 职员.职员号<>(SELECT 订单.职员号 FROM 订单)
参考答案:C
解析:查询要使用SELECT命令,本题是嵌套查询。已签订订单的职员号信息存储在订单表中,而职员信 息存储在职员表中。由内层查询:SELECT 职员号 FROM 订单 获得的结果是签订订单的职员号值的集合,外层查询的结果列出除了内层查询集合中的职员的职员号和姓 名,即外层查询的结果依赖于内层查询的结果。由于内层查询结果是一个集合,所以,要用“NOT IN”运算符,不能用“<>”运算符。内层查询必须用一 对圆括号括起来。