您的当前位置:首页正文

SQL数据库复习题七及答案

2022-11-09 来源:易榕旅网
SQL Server数据库复习题七及答案

一.单项选择题

1._______是数据库系统的核心,它负责数据库的配置、存取、管理和维护等工作。(c )

A、操作系统 B、关系模型 C、数据库管理系统 D、数据库

2.SQL Server2000是一款基于_________体系的关系型数据库管理系统。A、客户机/服务器 B、主机 C、N层 D、单机

3.下面哪一个不是SQL Server2000的基本数据类型 ( A)

A、VARIANT B、VARCHAR C、VARBINARY D、NVARCHAR

4.下面的类型中宽度最大的是 ( C)

A、CHAR(5) B、VARCHAR(5) C、NCHAR(5) D、BIGINT

5.表达式LEN('电子学院') + DATALENGTH(GETDATE())的值为 ( C)

A、8 B、10 C、12 D、16

6.在SQL Server2000中,数据存储的基本单位是页,页的大小是 ( D)

1 / 15

( A)

A、1K B、2K C、4K D、8K

7.在使用CREATE DATABASE命令创建数据库时,FILENAME选项定义的是(D )

A、文件增长量 B、文件大小 C、逻辑文件名 D、物理文件名

8.关于表结构的定义,下面说法中错误的是 (C )

A、表名在同一个数据库内应是唯一的 B、创建表使用CREATE TABLE命令

C、删除表使用DELETE TABLE命令 D、修改表使用ALTER TABLE命令

9.下面哪一个约束用来禁止输入重复值? (A )

A、UNIQUE B、NULL C、DEFAULT D、FOREIGN KEY

10.下面关于登录账户、用户和角色的说法错误的是 ( C)

A、登录账户是服务器级的 B、用户是登录账户在某个数据库中的映射

C、用户不一定要和登录账户相关联 D、角色其实就是用户组

11.在SELECT语句中,用于去除重复行的关键字是 ( B)

A、TOP B、DISTINCT C、PERCENT D、HAVING

2 / 15

12.若想查询出所有姓张的、且出生日期为空的学生信息,则WHERE条件应为 ( C)

A、姓名 LIKE ‘张%’ AND 出生日期 = NULL

B、姓名 LIKE ‘张*’ AND 出生日期 = NULL

C、姓名 LIKE ‘张%’ AND 出生日期 IS NULL

D、姓名 LIKE ‘张_’ AND 出生日期 IS NULL

13.下面关于视图的说法中,错误的是 (C )

A、视图是个虚拟表 B、可以使用视图更新数据,但每次更新只能影响一个表

C、不能为视图定义触发器 D、可以创建基于视图的视图

14.下面关于触发器的描述,错误的是 (A )

A、触发器是一种特殊的存储过程,用户可以直接调用

B、触发器表和DELETED表没有共同记录

C、触发器可以用来定义比CHECK约束更复杂的规则

D、删除触发器可以使用DROP TRIGGER命令,也可以使用企业管理器

3 / 15

15.下面关于事务的描述,错误的是 (D )

A、事务可用于保持数据的一致性 B、事务应该昼小且应尽快提交

C、应避免人工输入操作出在在事务中 D、在事务中可以使用ALTER DATEABSE

二.填空题

1.SQL Server是作为Windows NT或2000的一个__服务________运行的,用户可以启动、暂停或停止它。

2.SQL Server服务包括有__ SQL Server服务________、___ SQL Server Agent服务_______、Microsoft Search和MS DTC服务。

3.SQL Server有两类数据库,__系统数据库________和用户数据库。其中为新的用户数据库提供模板的系统数据库是____ model ______。

4.所有的数据库都有一个____主数据文件______和一个或多个事务日志文件,此外,还可能有_____次要数据文件_____。

5.向表中添加数据应使用___ INSERT(或填INSERT INTO)_______命令,更新数据应使用___ UPDATE _______命令。

6.在SQL Server2000中,约束有非空约束、缺省约束、_主键约束_________、____外键约束______、检查约束和唯一约束等6种类型。

4 / 15

7.对象权限是指用户基于数据库对象层次上的访问和操作权限,共有5种:SELECT、INSERT、DELETE、___ UPDATE_______和____ EXECUTE ______。(或填更新、执行)

8._____ UNION _____可以把两个或多个SELECT语句的查询结果组合成一个结果集,使用时要求所有SELECT语句的列数应_______相同___,对应列的数据类型相容。

9.索引表的顺序与数据行的物理顺序相同的索引称为___聚集(或聚簇 或簇)_______索引。

10.使用游标的一般步骤应为:__创建游标

________、_____打开游标_____、从游标的结果集中读取数据、对游标中的数据逐行操作、关闭游标和释放游标。

11.___事务_______是指一个操作序列,这些操作序列要么都被执行,要么都不被执行。

12.___差异备份_______只记录自上次完整数据库备份后发生更改的数据。

三.判断题

1.外键是指一个表中含有与另外一个表的主键相同的列或列组,外键不要求惟一。( √)

2.SQL Server2000支持Unicode字符集,相应数据类型为text、char和varchar。 ( ×)

5 / 15

3.企业管理器是SQL Server提供的最主要的数据库管理工具,它以树形结构的形式来管理数据库服务器、数据库和数据库中的对象。 ( √)

4.全局变量与局部变量一样,用户必须进行声明后才能使用。 (× )

5.在SQL Server2000中,由于不能跨页存储数据行,所以页中每一行最多包含的数据量是8060B。 ( √)

6.数据完整性就是指数据的正确性、完备性和一致性。 (√ )

7.若使用REVOKE命令撤消某用户创建表的权限,则该用户将肯定无权创建表。( ×)

8.WITH CHECK OPTION表示使用视图更新数据时应满足视图定义中设置的条件 ( √)

9.表的每个触发动作只能有一个INSTEAD OF触发器。 ( √)

10.在使用差异数据库备份还原数据库时,应先还原最新的完整数据库备份。 ( √)

四.查询设计

某个学籍数据库有如下表结构:

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

课程(课程号,课程名称,课程类别,课时)

6 / 15

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

请完成下列查询要求。

1.查询出“软件041”班的所有男生的学号和姓名。

SELECT 学号, 姓名

FROM学生

WHERE班级 = ‘软件041’ AND性别 = ‘男’

2.查询出所有姓张的同学的姓名和班级。

SELECT *

FROM课程

WHERE课程名称 LIKE ‘%语言%’

3.查询出“C语言”课程成绩前5名的学生的学号、姓名和班级。

SELECT TOP 5学生.学号, 姓名, 班级

FROM学生 JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号

7 / 15

WHERE课程名称 = ‘C语言’

ORDER BY 成绩 DESC

4.查询出各班级学生人数。

SELECT 班级, COUNT(*) AS 人数

FROM 学生

GROUP BY班级

5.查询出“计算机应用基础”课程成绩高于张三同学此门课程成绩的学生的学号和姓名。

SELECT学生.学号, 姓名

FROM 学生JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号

WHERE课程名称 = ‘计算机应用基础’ AND 成绩 > (

SELECT成绩

FROM 学生JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号

8 / 15

WHERE课程名称 = ‘计算机应用基础’ AND姓名 = ‘张三’

)

五.综合题

根据下面某教学管理数据库的表结构,完成下面的程序填空题。

教师(职工号,姓名,学历,职称)

课程(课程号,课程名称,课程类别)

任课(职工号,课程号,周课时)

1.补填下面的存储过程的定义,使其被调用时,能根据调用程序提供的教师姓名使用输出参数返回该教师任课的课程数。

CREATE PROCEDURE 按教师姓名查询任课课程数

@姓名 VARCHAR(10),

@课程数 INT __ OUTPUT ___________________

AS

SELECT __@课程数 = COUNT(*)___________________

9 / 15

FROM 教师 JOIN 任课 ON 教师.职工号 = 任课.职工号

WHERE ____姓名 = @姓名_________________

2.完成下面的触发器的定义,当向任课表中插入记录时,触发器能判断若插入的记录使该教师的任课周课时总计超过20,则回滚插入操作。

CREATE TRIGGER 添加教学任务

ON 任课

AFTER INSERT

AS

DECLARE @总课时 INT

SELECT @总课时 = SUM(任课.周课时)

FROM 任课 JOIN _ INSERTED ON任课.职工号 = INSERTED.职工号 ____________________

IF @总课时 > 20

_____ ROLLBACK TRANSACTION ________________

10 / 15

参考答案

一.单项选择题

1.C 2.A 3.A 4.C

5.C 6.D 7.D 8.C

9.A 10.C 11.B 12.C

13.C 14.A 15.D

二.填空题

1.服务

2.SQL Server服务 SQL Server Agent服务(或填主服务、代理服务)

3.系统数据库 model

4.主数据文件 次要数据文件

5.INSERT(或填INSERT INTO) UPDATE

6.主键约束 外键约束

11 / 15

7.UPDATE EXECUTE(或填更新、执行)

8.UNION 相同

9.聚集(或聚簇 或簇)

10.创建游标 打开游标

11.事务

12.差异备份

三.判断题

1.√ 2.× 3.√ 4.× 5.√

6.√ 7.× 8.√ 9.√ 10.√

四.查询设计

1.查询出“软件041”班的所有男生的学号和姓名。

SELECT 学号, 姓名

FROM学生

12 / 15

WHERE班级 = ‘软件041’ AND性别 = ‘男’

2.查询出所有姓张的同学的姓名和班级。

SELECT *

FROM课程

WHERE课程名称 LIKE ‘%语言%’

3.查询出“C语言”课程成绩前5名的学生的学号、姓名和班级。

SELECT TOP 5学生.学号, 姓名, 班级

FROM学生 JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号

WHERE课程名称 = ‘C语言’

ORDER BY 成绩 DESC

4.查询出各班级学生人数。

SELECT 班级, COUNT(*) AS 人数

FROM 学生

13 / 15

GROUP BY班级

5.查询出“计算机应用基础”课程成绩高于张三同学此门课程成绩的学生的学号和姓名。

SELECT学生.学号, 姓名

FROM 学生JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号

WHERE课程名称 = ‘计算机应用基础’ AND 成绩 > (

SELECT成绩

FROM 学生JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号

WHERE课程名称 = ‘计算机应用基础’ AND姓名 = ‘张三’

)

五.综合题

1.OUTPUT @课程数 = COUNT(*) 姓名 = @姓名

2.INSERTED ON任课.职工号 = INSERTED.职工号

14 / 15

ROLLBACK TRANSACTION

友情提示:部分文档来自网络整理,供您参考!文档可复制、编辑,期待您的好评与关注!

15 / 15

因篇幅问题不能全部显示,请点此查看更多更全内容