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
15. 下列的()总要对数据进行排序 A. 聚集索引 B. 非聚集索引
--
--
C. 组合索引 D. 唯一索引
16. 运行以下语句,输出结果是() Create proc proc_lookup @mystuno varchar(8)=null As
If @mystuno is null Begin
Print ‘您忘记了传递学号参数’ RETURN END
SELECT * FROM stuInfo WHERE stuNo=@mystuNo GO
EXEC proc_lookup A. 编译错误
B. 调用存储过程proc_lookup过程出错 C. 显示“您忘记了传递学号参数” D. 显示空的学员信息记录集
17. 数据库文件有三类,分别为主要数据文件、其他数据文件和日志文件。其中每个数据库允许有( )主要数据文件。
A、至少一个 B、有且只能有一个
C、最多一个 D、可以没有,也可以有多个 18.若表中的一个字段定义数据类型为varchar,长度为30,当在此字段中输入字符串“广东科贸职业学院”时,此字段将占用( )字节的存储空间。
A、8 B、16 C、18 D、20 19、已知变量a=\"一个坚定的人只会说yes不会说no\下列截取\"yes"的操作正确的是()。 A.RIGHT(LEFT(a,21),4) B.LEFT(RIGHT(a,12),3) C.RIGHT(LEFT(a,20),3) D.SUBSTR(a,19,3) 20. 要消除返回结果集中的重复记录,应使用关键字( )。
A、TOP B、COUNT C、DISTINCT D、DESC 21. 如果要删除表的定义和表中的数据,应使用( )。
A、TRUNCATE TABLE语句 B、DELETE语句
C、DROP TABLE语句 D、A或B
22.修改存储过程使用的语句是( )。
A、ALTER PROCEDURE
--
--
B、DROP PROCEDURE C、INSERT PROCEDUE D、DELETE PROCEDUE
23. 下列( )在删除数据的语句在运行时不会产生错误信息。
A、DELETE * FROM ABC WHERE ASS=‘6’ B、DELETE FROM ABC WHERE ABC=‘6’ C、DELETE ABC WHERE ASS=‘6’ D、DELETE ABC SET ASS=‘6’
24. 在\"连接\"组中有两种连接认证方式,其中在( )方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。
A、Windows身份验证 B、SQL Server 身份验证 C、以超级用户身份登录时 D、其他方式登录时
25.下列哪个统计函数可以计算平均值?( )
A、sum B、avg C、count D、min
26. 下列哪一种备份方式只备份了自上次备份操作发生后重新发生改变的数据?( )
A、完全备份 B、日志备份
C、增量备份 D、文件和文件组备份 27. 下列哪类数据不适合创建索引?( )
A、经常被查询搜索的列,如经常在Where子句中出现的列 B、是外键或主键的列
C、包含太多重复选用值的列
D、在ORDER BY子句中使用的列
28.下列设置的查询“工资”在1500元到2000元之间的约束正确的是( )
A、>=1500 OR <=2000 B、1500 AND 2000
C、between 1500 and 2000 D、between >=1500 AND 2000 29.SELECT语句中与HAVING子句同时使用的是( )子句。 A.ORDER BY B.WHERE C.GROUP BY D.无需配合
30. 在MS SQL Server中,用来显示数据库信息的系统存储过程是( )。 A.sp_dbhel B.sp_dbﻫC.sp_help D. sp_helpdb
--
因篇幅问题不能全部显示,请点此查看更多更全内容