2024年3月9日发(作者:)

《数据库管理与开发项目教程》模拟题及答案

一、单选题(每题2分,共20分)

( )1、下列不能启动SQL Server服务的方法:

A、使用SQL Server配置管理器 B、使用Windows的管理工具

C、使用 net start mssqlserver 命令 D、在查询编辑器中编写T-SQL程序

( )2、部分匹配查询中有关通配符“%”的正确的叙述是 。

A、“%”代表多个字符 B、“%”可以代表零个或多个字符

C、“%”不能与“_”一同使用 D、“%”代表一个字符

( )3、在SELECT子句中,如果想要返回结果集中不包含相同的行,应该使用 关

键字。

A、TOP B、AS C、DISTINCT D、JOIN

( )4、 是表中用来唯一标识的每行记录。

A、外键 B、主键 C、索引 D、数据库完整性

( )5、SQL 中,"GRADE NOT BETWEEN 60 AND 90"的语义是 。

A、GRADE<60 OR GRADE>90 B、GRADE<= 60 OR GRADE>= 90

C、GRADE<>60 AND GRADE<>90 D、GRADE<>60 OR GRADE<>90

( )6、 简称DBA。

A、数据库管理员 B、数据库 C、数据库管理系统 D、计算机硬件

( )7、在SQL中,可以使用 语句执行恢复数据库的操作。

A、BACKUP DATABASE B、RESTORE DATABASE

C、CREATE DARABASE D、DROP DATABASE

( )8、设一个班级可选修多门课程,一门课程可被多个班级选修,班级与课程之间

是 。

A、一对一的联系 B、一对多的联系 C、多对一的联系 D、多对多的联系

( )9、SQL Server2016的数据库中主数据文件的扩展名是 。

A、.mdf B、.ndf C、.ldf D、.dbf

( )10、当表中引入 时,会提高记录的查询速度。

A、外键 B、主键 C、索引 D、数据库完整性

二、数据库设计题(共40分)

根据如下E-R图,将其转换为逻辑数据库。

成绩

姓名

学号

m

选修

学生

性别

班级

1

课程号

n

课程名

课程

学分

1、转换成如下关系表(关系表参考:表名(字段1,字段2,…))(6分)

2、确定关系中的主键,分别为: 、 、 。(6分)

3、创建一个名字为“stu_course”的数据库。要求主数据文件名为“student_”,其他参数

自定义。(数据库成功创建得4分)

请截图(数据库文件属性):

4、根据1中的关系表,在stu_course库中创建数据表。(每个表正确创建得6分,共18分)

请截图(对象资源管理器,一直展开到“列”):

5、创建立一个“课程名”列的非聚集索引文件。(5分)

请截图(索引属性):

6、创建学生成绩视图,包括学号、姓名、课程名、成绩等信息。(5分)

请截图(打开视图):

三、查询设计题(共25分)

1、附加数据库companyinfo(数据库文件在paperB中)。(附加成功得5分)

请截图(对象资源管理器):

2、查询雇员表employee中薪水超过3000元的雇员的姓名和薪水。(5分)

请粘贴T-SQL查询语句:

3、查询雇员表employee中所有姓“章”的雇员的信息。(5分)

请粘贴T-SQL查询语句:

4、在产品表product中按产品的种类分类,求出各种类型产品的价格总和、平均单价以及各类产

品的种类数。(5分)

请粘贴T-SQL查询语句:

5、查询所有订购了“鼠标”产品的公司信息。(5分)

请粘贴T-SQL查询语句:

四、填空题(每空3分,共15分)

1、创建存储过程P2,它能够根据用户给定的类别ID统计具有该ID的产品名称数,并将产品名称

数返回给用户。

/*创建存储过程*/

CREATE PROCEDURE P2

@category int , @ProductNum smallint OUTPUT

AS

SET =

2

( SELECT FROM product

WHERE 类别ID = @category )

PRINT @ProductNum

/*执行存储过程*/

DECLARE @category int ,@ProductNum smallint

SET @category = 1

EXEC P2

SELECT @ProductNum

2、创建一个修改触发器,用于防止用户修改表employee的雇员ID。

CREATE TRIGGER employee_Update

ON employee

FOR

AS

IF UPDATE (雇员ID)

BEGIN

RAISERROR ('你不能更新这一列',10,1)

END

参考答案

一、单选题(每题2分,共20分)

1

D

2

B

3

C

4

D

5

A

6

A

7

B

8

B

9

A

10

C

二、数据库设计题(共40分)

根据如下E-R图,将其转换为逻辑数据库。

成绩

课程号

姓名

学号

m n

课程

选修

学生

性别

班级

1、转换成如下关系表(关系表参考:表名(字段1,字段2,…))(6分)

学生(学号,姓名,性别,班级)

课程(课程号,课程名,学分)

选修(学号,课程名,成绩)

2、确定关系中的主键,分别为:学号、课程号、学号与课程号。(6分)

3

课程名

学分

3、创建一个名字为“stu_course”的数据库。要求主数据文件名为“student_”,其他参数

自定义。(数据库成功创建得4分)

4、根据1中的关系表,在stu_course库中创建数据表。(每个表正确创建得6分,共18分)

5、创建立一个“课程名”列的非聚集索引文件。(5分)

6、创建学生成绩视图,包括学号、姓名、课程名、成绩等信息。(5分)

三、查询设计题(共25分)

1、附加数据库companyinfo(数据库文件在paperB中)。

(附加成功得5分)

2、查询雇员表employee中薪水超过3000元的雇员的姓名和薪水。(5分)

Select 姓名,薪水

from employee

Where 薪水>3000

3、查询雇员表employee中所有姓“章”的雇员的信息。(5分)

Select *

from employee

Where 姓名 LIKE ‘章’

4、在产品表product中按产品的种类分类,求出各种类型产品的价格总和、平均单价以及各类产

品的种类数。(5分)

Select sum(价格 ),avg(价格),count(名称)

From product

Group by 种类

5、查询所有订购了“鼠标”产品的公司信息。(5分)

Select *

from company join product on company.公司号= product. 公司号

Where名称=’鼠标’

四、填空题(每空3分,共15分)

1、创建存储过程P2,它能够根据用户给定的类别ID统计具有该ID的产品名称数,并将产品名称

数返回给用户。

/*创建存储过程*/

CREATE PROCEDURE P2

@category int , @ProductNum smallint OUTPUT

AS

SET ProductNum =

( SELECT count(产品名称) FROM product

WHERE 类别ID = @category )

PRINT @ProductNum

/*执行存储过程*/

DECLARE @category int ,@ProductNum smallint

SET @category = 1

4

EXEC P2 @category

SELECT @ProductNum

2、创建一个修改触发器,用于防止用户修改表employee的雇员ID。

CREATE TRIGGER employee_Update

ON employee

FOR update

AS

IF UPDATE (雇员ID)

BEGIN

rollback

RAISERROR ('你不能更新这一列',10,1)

END

5