数据库/存储

数据库面试题图书表:图书编号,图书名教师表:教师编号,姓名,图书编号获奖名单表:教师编号,获奖日期请查询在获奖名单中,获得前十位获奖教师的信息

题目
数据库面试题

图书表:图书编号,图书名

教师表:教师编号,姓名,图书编号

获奖名单表:教师编号,获奖日期

请查询在获奖名单中,获得前十位获奖教师的信息 

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

( 2 )现 有某图书销售数据库,其关系表结构如下:

图书表(图书编号,图书名称,出版社编号,出版社名称,出版时间,出版数量,版次)

图书销售表(图书编号,销售日期,销售数量,书店编号,读者编号,读者姓名,读者电话)

书店表(书店编号,联系电话,所在城市编号,城市名称)

该系统所涉及的数据存在如下约束:

I. 一个出版社可以出版多本图书,一本图书只能在一个出版社出版,在该系统中记录的图书出版信息包括出版时间、版次及出版数量信息;

II. 一个书店可以出售多本图书给多个读者 , 每位读者可以从多个书店购买多本图书 , 一本图书可以通过多个书店出售给读者,书店把图书出售给读者后会在系统中记录售书日期和售书数量信息;

III. 每个书店只能位于一个城市,一个城市可以有多个书店。

① 请根据以上信息画出合理的图书销售数据库的概念模型(用 ER 图表示)。( 8 分)

② 以图书销售表为例说明原数据库设计的不合理之处。( 4 分)

③ 给出该数据库符合 3NF 要求的全部关系模式,并指出关系模式中的全部主码和外码。( 8 分)


正确答案:

1

2

3

第2题:

在Access的数据库中已经建立了"tBook"表,若使用SQL语句查找"图书编号"是"112266"和"113388"的记录,应在WHERE条件中输入()。

A.图书编号="112266"and"113388"

B.图书编号notin("112266","113388")

C.图书编号in("112266","113388")

D.图书编号not("112266"and"113388")


正确答案:C

第3题:

( 28 )假设 “ 图书 ” 表中有 C 型字段 “ 图书编号 ” ,要求将图书编号以字母 A 开头的图书记录 全部打上删除标记,可以使用 SQL 命令

A ) DELETE FROM 图书 FOR 图书编号 =''A"

B ) DELETE FROM 图书 WHERE 图书编号 = " A% "

C ) DELETE FROM 图书 FOR 图书编号 ="A * "

D ) DELETE FROM 图书 WHERE 图书编号 LIKE "A%"


正确答案:D

第4题:

求至少出版两本以上图书的作者姓名及数量,下列SQL语句正确的是

A.SELECT 作者姓名,COUNT(*) AS 数量 FROM 图书,作者; HAVING COUNT(*)>=2

B.SELECT 作者姓名,COUNT(*) AS 数量 FROM 图书,作者; WHERE 作者.作者编号=图书.作者编号; GROUP BY 图书.作者编号 HAVING COUNT(*)>=2

C.SELECT 作者姓名,COUNT(*) AS 数量 FROM 图书,作者; WHERE 作者.作者编号=图书.作者编号; GROUP BY 图书.作者编号 SET COUNT(*)>=2

D.SELECT 作者姓名,COUNT(*) AS 数量 FROM 图书,作者; WHERE 作者.作者编号=图书.作者编号; AND COUNT(*)>=2; GROUP BY 图书.作者编号


正确答案:B
解析:本题利用SQL分组查询的功能,查询至少出版2本以上图书的作者,需要利用HAVING子句可以对分组条件做进一步限定。选项A)中,没有对查询进行分组;选项C)中的SET短语错误,对分组条件做进一步限定,需要利用HAVING子句;选项D)中也存在语法错误,HAVING子句只能跟在GROUP BY短语后一起使用。

第5题:

求至少出版3本以上图书的作者姓名及数量,下列SQL语句正确的是( )。

A.SELECT 姓名,COUNT(*) AS 数量 FROM 图书,作者; HAVING COUNT(*)>=3

B.SELECT 姓名,COUNT(*) AS 数量 FROM 图书,作者; WHERE 作者.作者编号=图书.作者编号; GROUP BY 图书.作者编号 HAVING COUNT(*)>=3

C.SELECT姓名,COUNT(*) AS 数量 FROM 图书,作者; FOR 作者.作者编号=图书.作者编号; WHERE 图书.作者编号 HAVING COUNT(*)>=3

D.SELECT 姓名,COUNT(*) AS 数量 FROM 图书,作者; WHERE 作者.作者编号=图书.作者编号; GROUP BY 图书.作者编号 SET COUNT(*)>=3


正确答案:B
解析:本题中首先通过GROUP BY短语按“作者编号”字段对“图书”表中的记录进行分组,然后利用 COUNT()分组统计每个作者的图书数量,再通过HAVING 子句限定出版数量至少在3本以上的记录。注意: HAVING子句用来进一步限定分组要满足的条件,必须要与GROUP BY短语连用并接在GROUP BY短语之后。

第6题:

设有图书管理数据库,包含三张表:图书明细表(图书编号,图书类别,图书名称,作者,出版社,出版日期,定价);读者表(借书证号,姓名,系别,办证日期);借出信息表(借出编号,借书证号,图书编号,借书日期);完成下列操作:(10分)定义一个多语句表值函数,用于查询学生借书情况,只需提供参数:借书证号,就可以通过调用函数返回此学生的借书情况,若有借书籍,则返回所借书籍的编号、书籍名称、定价和借书日期;若没有在借书籍,则返回记录为空。设函数名为:f_BorrowBook(@jszh char(20))。


正确答案:
【解题思路】SQL Server 2008多语句表值函数的格式为:CREATE FUNCTION[schema_name.]function_name([{@parameter_name[As][type_schema_name.]parameter data_type[=default]}[….n]])RETURNS@return_variable TABLE<table_type_definition>[AS]BEGINfunction_bodyRETURNEND[;]<table_type_definition>::=({<column_definition><column_constraint>I<computed_column_definition>}[table_constraint][,...n])采用三表联合查询,通过传入的借书证号查出借出信息表中的图书编号,然后查出图书明细表的信息。【参考答案】CREATE FUNCTION BorrowBook(@jszh char(20))RETURNS@jsqkb TABLE(书籍编号char(20),书籍名称char(50),定价float,借书日期datetime)ASBEGININSERT@jsqkbSELECT图书明细表.图书编号,图书名称,定价,借出信息表.借书日期FROM借出信息表,图书明细表WHERE借出信息表.图书编号=图书明细表.图书编号AND借出信息表.借书证号=@jszhRETURNEND

第7题:

查询“上海”作者出版的图书情况,要求包含作者姓名、书名和价格信息,并按图书“价格”降序排列,下列SQL语句中正确的是( )。

A.SELECT 姓名,书名,价格 FROM 图书,作者; JOIN 图书.作者编号=作者.作者编号; WHERE所在城市="上海"; ORDER BY 价格 DESC

B.SELECT 姓名,书名,价格 FROM 图书,作者; JOIN 图书.作者编号=作者.作者编号; ON 所在城市="上海"; ORDER BY 价格

C.SELECT 姓名,书名,价格 FROM 图书,作者; WHERE 图书.作者编号=作者.作者编号; AND 所在城市="上海"; ORDER BY 价格 DESC

D.SELECT 姓名,书名,价格 FROM 图书,作者; WHERE 图书.作者编号=作者.作者编号; AND 所在城市="上海"; ORDER BY 价格


正确答案:C
解析:本题是一个多表连接查询的SQL语句,关键要注意表间连接条件的使用。如果使用超连接方式查询,则正确的语句格式为:
SELECT……
FROM数据库表1>INNER JOIN数据库表2>
ON连接条件>
WHERE……
其中,INNER JOIN等价于JOIN,为普通的连接,在Visual FoxPro中称为内部连接;ON连接条件>指定两个进行表连接的条件字段。
如果使用的是普通的连接方式,则只需在FROM短语中指定查询的数据表,各表名之间用逗号隔开,而各表之间的连接放在WHERE短语后面,设计两个连接条件时,用AND短语连接这两个条件。ORDBY BY短语的功能是对查询结果按指定字段进行排序。

第8题:

( 34 ) 查询 2 009 年被借过书的图书编号和借书日期,正确的 SQL 语句是

A ) SELECT 图书编号 , 借书日期 FROM 借阅 WHERE 借书日期 = 2009

B ) SELECT 图书编号 , 借书日期 FROM 借阅 WHERE year ( 借书日期 ) =2009

C ) SELECT 图书编号 , 借书日期 FROM 借阅 WIRE 借书日期 = year ( 2009 )

D ) SELECT 图书编号 , 借书日期 FROM 借阅 WHERE year ( 借书日期 ) =year ( 2009 )


正确答案:B

第9题:

已知某高校图书借阅管理系统中包含系、教师、学生、教师编号、系名、书名、图书、学生性别、职称、学生姓名、书价的信息。这些信息中能够被标识为实体集的是______。

Ⅰ.系、教师、学生、图书

Ⅱ.教师编号、系名、书名、学生姓名

Ⅲ.学生性别、职称、学生姓名、书价

Ⅳ.图书、教师、书名

A) 仅Ⅰ

B) 仅Ⅰ和Ⅱ

C) 仅Ⅰ、Ⅱ和Ⅳ

D) 全部

A.

B.

C.

D.


正确答案:D

第10题:

以下题基于图书表、读者表和借阅表三个数据库表,它们的结构如下:

图书(图书编号,书名,第一作者,出版社):图书编号、书名、第一作者和出版社为c型字段,图书编号为主关键字;

读者(借书证号,单位,姓名,职称):借书证号、单位、姓名、职称为C型字段,借书证号为主关键字;

借阅(借书证号,国书编号,借书日期,还书日期):借书证号和图书编号为C型字段,借书日期和还书日期为D型字段,还书日期默认值为NULL,借书证号和图书编号共同构成主关键字。

查询第一作者为“张三”的所有书名及出版社,正确的SQL语句是

A.sELECT书名,出版社FROM图书WHERE第一作者=张三

B.SELECT书名,出版社FROM图书WHERE第一作者=“张三”

C.sELECT书名,出版社FROM图书WHERE”第一作者“=张三

D.sELECT书名,出版社FROM图书WHERE”第一作者”=“张三”


正确答案:B
解析:查询的基本形式为“SELECT-FROM-WHERE查询块”,多个查询块可嵌套执行。SELECT说明要查询的数据,FROM说明要查询的数据来自哪个或哪些表,wHERE说明查询条件,即选择元组的条件。此处需要注意的是字段值的表示方式,当需要指定某个特定的字段值时,应当用双引号(“”)进行表示,而对于特定的字段,不需加双引号。

更多相关问题