数据库SQL期末考试复习题修改版 下载本文

内容发布更新时间 : 2024/11/8 23:53:25星期一 下面是文章的全部内容请认真阅读。

2012-2013 SQL数据库期末考试复习题

一、数据库操作题:

1.为学生选课管理系统创建名为“stuCourse”的数据库。

(1)主数据库文件和日志文件的逻辑分别为stuCourse _data和stuCourse _log。 (2)物理文件存放在d:\\data文件夹中。

create database stuCourse on PRIMARY(

name = stuCourse_data,

filename = 'd:\\data\\stuCourse_data.mdf' ) log on (

name = stuCourse_log,

filename = 'd:\\data\\stuCourse_log.ldf', )

2.为学生选课管理系统数据库(stuCourse)创建表,表结构如下。

(1)用SQL语句创建学生表,学生(学号,姓名,性别,年龄,系别),并设置约束:性别=‘男’或“女”。

(2)创建选课表,选课(学号,分数,课程编号,教师编号)。 3. 设计其E-R图,并标示出实体的主码。

4.用SQL语句插入数据,数据如表4-21~表4-25所示。

表4-21 学生表数据

表4-22选课表数据

5、对stuCourse数据库进行以下查询:

1.查询全体学生的学号、姓名和年龄。

select 学号,姓名,年龄from 学生表

2.查询选修了课程的学生号。

select distinct 学号from 选课表

3.查询选修课程号‘C3’的学号和成绩。

select 学号,分数from 选课表where 课程编号='C3'

4.查询成绩高于85分的学生的学号、课程号和成绩。

select 学号,课程编号,分数from 选课表where 分数>85

5.查询选修了C1或C2且分数大于等于85分的学生和学号、课程号和成绩。

select 学号,课程编号,分数from 选课表

where 分数>85 and 课程编号='C1' or 课程编号='C2'

6.查询选修C1或C2的学生的学号、课程号和成绩。

select 学号,课程编号,分数from 选课表 where 课程编号='C1' or 课程编号='C2'

7.查询所有姓张的学生的学号和姓名。

select 学号,姓名from 学生表where 姓名like '张%'

8.查询选修C1的学生姓名和成绩,并按成绩降序排列。

select s.姓名,x.分数

from 学生表 as s,选课表 as x

where x.课程编号='C1' and s.学号=x.学号 order by x.分数desc

9.查询与学生\宋江\相同系学生的学号和姓名。

select 学号,姓名 from 学生表

where 系别=(select 系别from 学生表where 姓名= '宋江')

10.在分组查询中使用HAVING条件,查询平均成绩大于85的学生学号及平均成绩。

select avg(分数) as 平均分 from 选课表 group by 学号 HAVING avg(分数)>85

11.查询选课在二门以上且各门课均及格的学生的学号及其总成绩,查询结果按总成绩降序列出。

select 学号,sum(分数) as 总分 from 选课表 group by 学号

having avg(分数)>60 and count(学号)>=2 order by sum(分数) desc

12.查询选修‘C1’课程且成绩在60以上的所有学生的学号、姓名和分数。

select s.学号, s.姓名,x.分数 from 学生表as s,选课表as x

where s.学号=x.学号and 课程编号='c1' and 分数>60

13.将成绩小于60分的科目分数加5分

update 选课表 set 分数=分数+5 where 分数<60

14.删除分数是Null的记录

delete from 选课表where 分数Is null

6、存储过程操作

1.在stuCourse数据库中,创建一个名为checkPhone的存储过程,该存储过程接受一个长途电话号码,并检查该号码的前四位为0731还是0735。如果是0731的,则显示“你输入的号码是长沙的区号”;如果0735,则显示信息“您输入的是郴州的区号”。

use stuCourse go

create procedure checkPhone @H int as

if @H = 0731

print '你输入的号码是长沙的区号' else if @H = 0735

print '您输入的是郴州的区号' go

exec checkPhone 0735

2.在stuCourse数据库中,创建一个存储过程,根据学生的学号查询他的选课记录。 7、创建登录用户和数据库用户,使该用户对数据库具有增删查改的权限。 use stuCourse go

create procedure Hong (@H int) as

select * from 选课表 where 学号 = @H go

exec Hong 1001

二、选择题:

1. 数据完整性是指()

A. 数据库中的数据部存在重复

B. 数据库中所有的数据格式是一样的 C. 所有的数据全部保存在数据库中

D. 数据库中的数据能够正确反映实际情况

2. 数据冗余指的是()

A. 数据和数据之间没有联系 B. 数据有丢失 C. 数据量太大 D. 存在重复的数据

3. ()的操作是把已经存在于磁盘的数据库文件恢复成数据库 A. 附加数据库 B. 删除数据库 C. 分离数据库 D. 压缩数据库

4.. 一个登录用户的数据库角色成员身份被设置为db_denydatawriter,该用户对数据库将() A. 只能写入数据,不能读取数据 B. 不能写入数据

C. 既能写入数据也能读取数据 D. 能够执行所有的管理操作

5. 主键用来实施() A. 实体完整性约束 B. 引用完整性约束 C. 域完整性约束 D. 自定义完整性约束

6. 表Course和表Teacher建立了主外键关系,Course为主表,Teachers为子表,以下说法中正确的选项是()

A. Teachers表存在Course表的外键 B. Teachers表中存在外键 C. Course表中存在外键

D. Course表中存在Teachers表的外键

7. 假设原来做的一个管理系统使用的是SQL Server数据库,现在想把它转化为Access数据库,可以采用()方法来实施

A. 把数据复制、粘贴到Access数据库中 B. Access数据库使用SQL Server的数据文件 C. 使用数据导入导出操作

D. 直接在Access中打开SQL Server数据库

8. 假定一位教师可讲授多门课程,一门课程可由多位教师讲授,教师与课程之间是() A. 一对一的关系 B. 一对多的关系 C. 多对一的关系 D. 多对多的关系

9. 关于数据库的设计范式,以下说法错误的是() A. 数据库的设计范式有助于规范化数据库的设计 B. 数据库的设计范式有助于减少数据冗余

C. 设计数据库时,一定要严格遵守设计范式。满足的范式级别越高,系统性能就越好

10. 下面的()存储过程用于添加一个数据库安全账户并授予它访问权限 A. sp_grantdbaccess B. sp_grantlogin C. sp_grantuser D. sp_grantall

11. 给变量赋值时,如果数据来源于表的某一列,应采用()方式 A. SELECT B. Print C. SET

12. SELECT * FROM stuinfo WHERE stuNo ( ) (SELECT stuNo FROM stuMarks) 括号中应填()比较合理 A. <= B. IN C. LIKE D. >=

13. 对数据库的修改必须遵循的规则是:要么全部完成,要么全不修改。这点可以认为是事务的()特性 A. 一致性 B. 持久性 C. 原子性 D. 隔离性

14. 下列的()语句用于清除自最近的事务语句以来所有的修改 A. COMMIT TRANSACTION B. ROLLBACK TRANSACTION C. BEGIN TRANSACTION D. SAVE TRANSACTION