题基于图书表、读者表和借阅表三个数据库表,它们的结构如下:
图书(图书编号,书名,第一作者,出版社):图书编号、书名、第一作者和出版社为C型字段,图书编号为主关键字;
读者(借书证号,单位,姓名,职称):借书证号、单位、姓名、职称为C型字段,借书证号为主关键字;
借阅(借书证号,图书编号,借书日期,还书日期):借书证号和图书编号为C型字段,借书日期和还书日期为D型字段,还书日期默认值为NULL,借书证号和图书编号共同构成主关键字。
查询所有“工程师”读者借阅过的图书编号,正确的SQL语句是()。
A.SELECT 图书编号 FROM 读者,借阅 WHERE 职称="工程师"
B.SELECT 图书编号 FROM 读者,图书 WHERE 职称="工程师"
C.SELECT 图书编号 FROM 借阅 WHERE 图书编号=
(SELECT 图书编号 FROM 借阅 WHERE 职称="工程师")
D.SELECT 图书编号 FROM 借阅 WHERE 借书证号 IN
(SELECT 借书证号 FROM 读者 WHERE 职称="工程师")
参考答案:D
解析:
[知识点] SQL语句
[评析] 本题要求查询所有“工程师”读者借阅过的图书编号,所以在读者表和借阅表中查询,所以选项B和选项c是错误的。选项D中使用SELECT嵌套语句完成查询,内层循环在读者表中查询所有“工程师”读者借阅过的借书证号,外层查询通过内层查询的结果找到这些借书证号在借阅表中所对应的图书编号,从而查询出所有“工程师”读者借阅过的图书编号。选项A中缺少了两个表连接的条件,所以选项A是错误的。所以本题答案为D。