计算机二级

查询没有借阅图书的读者的姓名和借书证号,应使用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 借阅.借书证号=读者.借

题目

查询没有借阅图书的读者的姓名和借书证号,应使用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用来检验在于查询中是否有结果返同,本题中内层查询引用了外层查询的表,所以是内外层相关嵌套查询。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

查询单位名称中含“北京”字样的所有读者的借书证号和姓名,正确的SQL语句是( )。

A.SELECT借书证号,姓名FROM读者WHERE单位="北京%"

B.SELECT借书证号,姓名FROM读者WHERE单位="北京*"

C.SELECT借书证号,姓名FROM读者WHERE单位LIKE"北京*"

D.SELECT借书证号,姓名FROM读者WHERE单位LIKE"%北京%"


正确答案:D
D。【解析】SQL语句中模糊匹配应使用语句LIKE。

第2题:

对于图书管理数据库,要查询借阅了两本和两本以上图书的读者姓名和单位,请对下面的SQL语句填空: SELECT 姓名,单位 FROM 图书管理!读者; WHERE 借书证号 IN(SELECT【 】FROM 图书管理!借阅; GROUPBY 借书证号 【 】 COUNT(*)>=2)


正确答案:借书证号 HAVING
查询操作要用SELECT命令实现。本题是嵌套查询,其内层查询带有限定条件的分组查询。内层查询按借书证号进行分组,也就是按读者进行分组,对借阅表中的每一种借书证号所借的图书数目通过COUNT(*)进行统计,只查询借阅了两本和两本以上图书的借书证号,即COUNT(*)作为HAVING短语的条件,对分组进行限制。内层查询的结果得到借书证号的一个集合。外层查询依据内层查询的结果在读者表中查询相应的读者姓名和单位。

第3题:

查询单位名称中含“北京”字样的所有读者的借书证号和姓名,正确的SQL语句是( )。

A.SELECT借书证号,姓名FROM读者WHERE单位="北京%"

B.SELECT借书证号,姓名FROM读者WHERE单位="北京*"

C.SELECT借书证号,姓名FROM读者WHERE单位LIKE"北京*"

D.SELECT借书证号,姓名FROM读者WHERE单位LIKE"%北京%"


正确答案:D
D。【解析】SQL语句中模糊匹配应使用语句LIKE。

第4题:

查询借阅了两本和两本以上图书的读者姓名和单位,应使用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 借书证号 EXISTS; (SELECT 借书证号 FROM 借阅; GROUP BY 借书证号 WHERE COUNT(*)>=2)

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


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

第5题:

现有表:读者(读者姓名,读者单位,借书证号) 借阅(借书证号,图书名称,图书作者,出版单位) 从读者表和借阅表中查询借阅了两本及两本以上图书的读者姓名和读者单位,正确的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子句限定分组。

第6题:

现有表:读者(读者姓名,读者单位,借书证号)借阅(借书证号,图书名称,图书作者,出版单位)查询没有借阅图书的读者的姓名和借书证号,正确的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用来检验在子查询中是否有结果返回,本题中内层查询引用了外层查询的表,所以是内外层相关嵌套查询。

第7题:

查询单位名称中含“北京”字样的所有读者的借书证号和姓名,正确的SQL语句是

A.SELECT借书证号,姓名FROM读者WHERE单位=“北京%”

B.SELECT借书证号,姓名FROM读者WHERE单位=“北京*”

C.SELECT借书证号,姓名FROM读者WHERE单位LIKE“北京*”

D.SELECT借书证号,姓名FROM读者WHERE单位LIKE“%北京%”


正确答案:D
解析:只知道部分字段值时,通常采用LIKE进行模糊查找,查找全部符合要求的字段值。“%”和“*”都可以表示多个任意字符,而题目中要求查找名称中含有“北京”字样的字段值,所以需要在“北京”字样的前后都加上“%”或“*”。

第8题:

有如下SQL语句:

SELECT读者.姓名,读者.职称,图书.书名,借阅.借书日期;

FROM图书管理!读者,图书管理!借阅,图书管理!图书;

WHERE借阅.借书证号=读者.借书证号;

AND图书.总编号=借阅.总编号

其中WHERE子句中的“借阅.借书证号=读者.借书证号”对应的关系操作是( )。


正确答案:
内部联接(INNER JOIN)或联接(JOIN)【解析】连接查询是一种基于多个关系的查询。

第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。