计算机二级

A) SELECT借阅过“中国出版社”图书的读者的姓名和所在单位A)SELECT姓名,所在单位FROM借书证,图书,借书记录WHERE图书.索书号=借书记录.索书号ANDB)SELECT姓名,所在单位FROM图书,借书证WHERE图书.索书号=借书证.借书证号AND出版社="中国出版社"C) SELECT姓名,所在单位FROM图书,借书记录WHERE图书.索书号=借书记录,索书号AND出版社="中国出版社"D) SELECT姓名,所在单位FROM借书证,借书记录WHERE借书证.借书证号=借书记录.借书证

题目

A) SELECT借阅过“中国出版社”图书的读者的姓名和所在单位

A)SELECT姓名,所在单位FROM借书证,图书,借书记录

WHERE图书.索书号=借书记录.索书号AND

B)SELECT姓名,所在单位FROM图书,借书证

WHERE图书.索书号=借书证.借书证号AND出版社="中国出版社"

C) SELECT姓名,所在单位FROM图书,借书记录

WHERE图书.索书号=借书记录,索书号AND出版社="中国出版社"

D) SELECT姓名,所在单位FROM借书证,借书记录

WHERE借书证.借书证号=借书记录.借书证号AND出版社="中国出版社"

参考答案和解析
正确答案:A
【答案】:A
【知识点】:SQL语句中如何正确建立表间联系
【解析】:从数据表中可以看出,所要查询的字段属于“借书证”表和“图书”表,但这两个表没有一个公共字段用以建立两表之间的联系,所以要借用第三个表中的字段建立联系,所以此题要通过这三个表建立查询,故选A。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下三个数据库表: 图书(索书号, 书名, 出版社, 定价, ISBN), 借书证(借书证号, 姓名, 性别, 专业, 所在单位), 借书记录(借阅号, 索书号, 借书证号, 借书日期, 还书日期)。 查询所有借阅过“中国出版社”图书的读者的姓名和所在单位,正确的SQL语句是______。

A.SELECT A.姓名, A.所在单位 FROM 借书证 A INNER JOIN 借书记录 B ON A.借书证号=B.借书证号 INNER JOIN 图书 C ON B.索书号=C.索书号 WHERE C.出版社='中国出版社';

B.SELECT A.姓名, A.所在单位 FROM 借书证 A INNER JOIN 图书 B ON A.借书证号=B.索书号 WHERE B.出版社='中国出版社';

C.SELECT A.姓名, A.所在单位 FROM 图书 A INNER JOIN 借书记录 B ON A.索书号=B.索书号 WHERE A.出版社='中国出版社';

D.SELECT A.姓名, A.所在单位 FROM 图书 A INNER JOIN 借书记录 B ON A.借书证号=B.借书证号 WHERE A.出版社='中国出版社';


D D。【解析】根据题干,要查找借书证上专业为“计算机”的所有信息,要使用SELECT*,表名为借书证则要使用FROM借书证,专业为“计算机”则要使用WHERE专业=”计算机”,所以答案选择D。

第2题:

对于图书管理数据库,检索当前至少借阅了两本图书的读者的姓名和所在单位。下面 SQL语句正确的是_________。 SELECT姓名,单位FROM读者WHERE借书证号IN;

A.(SELECT 借书证号 FROM 借阅 GROUP BY 总编号 HAVING COUNT (*)>=2)

B.(SELECT 借书证号 FROM 读者 GROUP BY 借书证号 HAVING COUNT(*)>=2)

C.(SELECT 借书证号 FROM 借阅 GROUP BY 借书证号 HAVING SUM(*)>=2)

D.(SELECT 借书证号 FROM 借阅 GROUP BY 借书证号 HAVING COUNT(*)>=2)


正确答案:D
解析:本题要求检索至少借阅了两本图书的读者,使用SELECT嵌套语句完成查询,内层循环通过对借书证号进行分组(分组的条件是统计该借书证号的使用次数大于等于2)宋显示出至少借阅了两本图书的借书证号,外层查询通过内层查询的结果显示其对应的姓名和单位。

第3题:

对于图书管理数据库,检索没有借阅任何图书的读者的姓名和所在单位。请对下面的 SQL语句填空: SELECT姓名,单位 FROM 读者 WHERE【 】 (SELECT*FROM 借阅 WHERE【 】


正确答案:NOT EXISTS 借阅.借书证号=读者.借书证号
查询操作使用SELECT命令,本题是连接查询和嵌套查询的结合使用,内层查询是将借阅表和读者表通过借书证号连接起来,查询的结果是所有借阅了图书的信息的集合,外层查询读者表中不在内层查询结果中出现的读者姓名和单位,在WHERE条件短语中要用NOTEXISTS谓词。EXISTS是谓词,EXISTS或NOTEXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组。

第4题:

查询没有借阅图书的读者的姓名和借书证号,应使用SQL语句

A.SELECT 姓名 FROM 读者 WHERE NOT EXISTS; (SELECT 借书证号 FROM 借阅 WHERE 借阅.借书证号=读者.借书证号)

B.SELECT 姓名,借书证号 FROM 读者 WHERE (SELECT*FROM 借阅 WHERE 借阅.借书证号=读者.借书证号)

C.SELECT 姓名,借书证号 FROM 读者 WHERE NOT EXISTS; (SELECT*FROM 借阅 WHERE 借阅.借书证号=读者.借书证号)

D.SELECT 姓名,借书证号 FROM 读者 WHERE 借阅=NULL (SELECT*FROM 借阅 WHERE 借阅.借书证号=读者.借书证号)


正确答案:C
解析:谓词EXISTS用来检验在于查询中是否有结果返同,本题中内层查询引用了外层查询的表,所以是内外层相关嵌套查询。

第5题:

查询所有借阅过“中国出版社”图书的读者的姓名和所在单位( )。

A.SELECT姓名,所在单位FROM借书证,图书,借书记录 WHERE图书.索书号=借书记录.索书号AND 借书证.借书证号=借书记录.借书证号AND出版社=”中国出版社”

B.SELECT姓名,所在单位FROM图书,借书证 WHERE图书.索书号=借书证.借书证号AND出版社=”中国出版社”

C.SELECT姓名,所在单位FROM图书,借书记录 WHERE图书.索书号=借书记录.索书号AND出版社=”中国出版社”

D.SELECT姓名,所在单位FROM借书证,借书记录 WHERE借书证.借书证号=借书记录.借书证号AND出版社=”中国出版社”


正确答案:A
A。【解析】题干中要查询借书人的单位和姓名,要用到3个表,其中图书表和借书记录表通过字段索书号进行连接,借书证表和借书记录表通过借书证号连接,同时借阅的是“中国出版社”,所以出版社=”中国出版社”,所以答案选择A。

第6题:

现有表:读者(读者姓名,读者单位,借书证号) 借阅(借书证号,图书名称,图书作者,出版单位) 从读者表和借阅表中查询借阅了两本及两本以上图书的读者姓名和读者单位,正确的SQL语句是( )。

A. SELECT读者姓名,读者单位FROM读者WHERE借书证号IN; (SELECT借书证号FROM借阅GROUP BY借书证号HAVING COUNT(*)>=2)

B. SELECT读者姓名,读者单位FROM读者WHERE借书证号EXISTS; (SELECT借书证号FROM借阅GROUP BY借书证号HAVING COUNT(*)>=2)

C. SELECT读者姓名,读者单位FROM读者WHERE借书证号IN; (SELECT借书证号FROM借阅GROUP BY借书证号WHERE COUNT(*)>=2)

D. SELECT读者姓名,读者单位FROM读者WHERE借书证号EXISTS; (SELECT借书证号FROM借阅GROUP BY借书证号WHERE COUNT(*)>=2)


正确答案:A
本题考查了SQL查询功能的嵌套查询和分组与计算查询。分组与计算查询中,利用HAVING进一步限定分组的条件。HAVING子句和WHERE子句不矛盾,在查询中是先用WHERE子句限定元组,然后进行分组,最后再用 HAVING子句限定分组。

第7题:

现有表:读者(读者姓名,读者单位,借书证号)借阅(借书证号,图书名称,图书作者,出版单位)查询没有借阅图书的读者的姓名和借书证号,正确的SQL语句是( )。

A. SELECT姓名FROM读者WHERE NOT EXISTS; (SELECT借书证号FROM借阅WHERE借阅.借书证号=读者借书证号)

B. SELECT姓名,借书证号FROM读者WHERE (SELECT*FROM借阅WHERE借阅.借书证号=读者.借书证号)。

C. SELECT姓名,借书证号FROM读者WHERE NOT EXISTS; (SELECT*FROM借阅WHERE借阅.借书证号=读者.借书证号)

D. SELECT姓名,借书证号FROM读者WHERE借阅=NULL (SELECT*FROM借阅WHERE借阅.借书证号=读者.借书证号)


正确答案:C
谓词EXISTS用来检验在子查询中是否有结果返回,本题中内层查询引用了外层查询的表,所以是内外层相关嵌套查询。

第8题:

对于图书管理数据库,检索当前至少借阅了2本图书的读者的姓名和所在单位,下面SQL语句正确的是______。 SELECT 姓名,单位 FROM 读者 WHERE 借书证号 IN;

A.(SELECT 借书证号 FROM 借阅 GROUP BY 总编号 HAVING COUNT(*)>=2)

B.(SELECT 借书证号 FROM 读者 GROUP BY 借书证号 HAVING COUNT(*)>=2)

C.(SELECT 借书证号 FROM 借阅 GROUP BY 借书证号 HAVING SUM(*)>=2)

D.(SELECT 借书证号 FROM 借阅 GROUP BY 借书证号 HAVING COUNT(*)>=2)


正确答案:D
解析:本题的要求是检索当前至少借阅了2本图书的读者的姓名和所在单位。
  因此在检索时需要按照读者进行分组,并且在每个组内需要保证至少借阅了两本书,因此该题目应该采用的SQL语句如下
  SELECT 姓名,单位 FROM 读者 WHERE 借书证号 IN;
  (SELECT 借书证号 FROM 借阅 GROUP BY 借书证号 HAVING COUNT(*)>=2)
  因此本题的正确选项应为D。

第9题:

对于图书管理数据库,检索所有借阅了图书的读者姓名和所在单位。下面SQL语句正确的是______。 SELECT DISTINCT 姓名,单位 FROM 读者,借阅

A.WHERE 图书.总编号=借阅.总编号

B.WHERE 读者.借书证号=借阅.借书证号*

C.WHERE 总编号 IN(SELECT 借书证号 FROM 借阅)

D.WHERE 总编号 NOT IN(SELECT 借书证号 FROM 借阅)


正确答案:B
解析:本题的要求是检索所有借阅了图书的读者姓名和所在单位。此时需要两个表才能够完成该任务,一个是读者表,另一个是借阅表,并且需要这两个表之间的连接才能完成题目的要求。本题应采用的SQL语句如下
  SELECT DISTINCT 姓名,单位 FROM 读者,借阅
  WHERE 读者.借书证号=借阅.借书证号*
  因此本题的正确答案应该是B。