SQL-Server数据库期末复习资料-A卷 下载本文

内容发布更新时间 : 2024/5/19 1:14:09星期一 下面是文章的全部内容请认真阅读。

一、单项选择题(10分)

1.下列四项中,不属于数据库特点的是( )。 A.数据共享 B.数据完整性 C.数据冗余很高 D.数据独立性高

2.下列四项中,不属于SQL2008实用程序的是( )。 A.企业管理器 B.查询分析器 C.服务管理器 D.媒体播放器

3.SQL Server安装程序创建4个系统数据库,下列哪个不是( )系统数据库。 A.master B.model C.pub D.msdb

4.( )是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。 A.DBMS B.DB C.DBS D. DBA 5. 在SQL中,建立表用的命令是 ( )。 A.CREATE SCHEMA B.CREATE TABLE C.CREATE VIEW D.CREATE INDEX

6.SQL语言中,条件年龄 BETWEEN 15 AND 35表示年龄在15至35之间,且( )。 A.包括15岁和35岁 B.不包括15岁和35岁 C.包括15岁但不包括35岁 D.包括35岁但不包括15岁 7.下列四项中,不正确的提法是( )。 A.SQL语言是关系数据库的国际标准语言

B.SQL语言具有数据定义、查询、操纵和控制功能 C.SQL语言可以自动实现关系数据库的规范化 D.SQL语言称为结构查询语言

8.SQL语言中,删除表中数据的命令是( )。 A. DELETE B. DROP C. CLEAR D. REMOVE 9.SQL的视图是从( )中导出的。 A. 基本表 B. 视图 C. 基本表或视图 D. 数据库

10. 下列哪个不是sql 数据库文件的后缀。 A..mdf B..ldf C..mdb D..ndf

二、判断题:(10分)

1.'在那遥远的地方' 是SQL中的字符串常量吗? 2.'11.9' 是SQL中的实型常量吗? 3.select 16%4, 的执行结果是: 4 吗? 4.2005.11.09 是SQL中的日期型常量吗? 5.¥2005.89 是SQL中的货币型常量吗? 6.select 25/2 的执行结果是: 12.5 吗? 7.'岳飞'>'文天祥' 比较运算的结果为真吗? 8.一个表可以创建多个主键吗? 9.创建唯一性索引的列可以有一些重复的值? 10.在事务中包含create database语句吗?

× × × × × √ × × ×

--结果是0

--25和2都是整型,所以结果是12

--

三、填空题:(20分)

1.语句 select ascii('D'), char(67) 的执行结果是:____68_____和___C_____。

2.语句 select lower('Beautiful') , rtrim('我心中的太阳 ') 的执行结果是:beautiful ___和_我心中的太阳____。

3.完整性约束包括__实体___完整性、__域____完整性、参照完整性和用户定义完整性。 4.在SQL Server 2008中,数据库对象包括_表__、__视图__、触发器、过程、列、索引、约束、规则、默认和用户自定义的数据类型等。

5.语句 select day('2004-4-6'), len('我们快放假了.') 的执行结果是:__6___和__7___。

6.语句 select round(13.4321,2), round(13.4567,3)的执行结果是:__13.4300__和____13.4570_____。<取n位小数、四舍五入>

7.事务(Transaction)可以看成是由对数据库的若干操作组成的一个单元,这些操作要么__全部完成___,要么_全部取消______(如果在操作执行过程中不能完成其中任一操作)。 8. SQL Server 2008 采用的身份验证模式有__Windows身份验证___模式和__混合_模式。 9.触发器定义在一个表中,当在表中执行__insert______、__update___或delete操作时被触发自动执行。

10.SQL Server复制有快照复制、___事务____复制和__合并___复制3种类型。

四、简单题:(20分)

1.在SQL Server 2008中,使用视图的好处是什么? 答:

(1) 为用户集中需要的数据,简化了数据的用户操作; (2) 对用户隐藏了数据库设计的复杂性; (3) 简化用户权限的管理;

(4) 组织数据导出到其它应用程序;

2. 简述使用游标的步骤。 答:

Step1:声明游标:declare 游标名 cursor for select语句; Step2:打开游标:open 游标名;

Step3:处理数据: fetch insert delete update语句 Step4:关闭游标:close 游标名;

Step5:释放游标:deallocate 游标名;

3.简述SQL Server 2008的安全性管理机制,涉及登录账号、用户、角色以及权限分配。 答:

(1)计算机的连接

(2)SQL Server服务器登录(登录、固定服务器角色)

(3)数据库的访问(用户/角色:固定/自定义数据库角色) (4)数据表(视图)的访问(select insert update delete) (5)存储过程/内嵌表值函数的访问(execute/select) (6)数据表(视图)中列(字段)的访问(select update) 4. 事务控制语句的使用方法是什么? 答:

begin transaction …… -- A组语句序列 save transaction 保存点1 …… -- B组语句序列 if @@error <> 0

rollback transaction 保存点1 --若发生错误,回滚到”保存点1” else

commit transaction --若没有错误,先提交A组语句,再提交B组语句。

五、设计题:(40分) 现有关系数据库如下: 数据库名:学生成绩数据库

学生表(*学号,姓名,性别,民族) 课程表(*课程号,课程名称,任课教师) 成绩表(*学号,*课程号,分数)

用SQL语言实现下列功能的sql语句代码: 1. 创建数据库[学生成绩数据库]代码(2分); create database [学生成绩数据库] go use [学生成绩数据库] go 2. 创建[课程表]代码(2分); 课程表(课号 char(6),名称)

要求使用:主键(课号)、非空(名称) create table课程表( [课程号] char(6) primary key, [课程名称] char(40) not null ) 3. 创建[学生表]代码(2分);

学生表(学号 char(6),姓名,性别,民族)

要求使用:主键(学号)、默认(民族)、非空(民族,姓名)、检查(性别) create table 学生表( [学号] char(6) primary key, [姓名] nchar(4) not null, [性别] nchar(1) check ([性别] in ('男', '女')), [民族] nchar(8) default '汉' not null ) 4. 创建[成绩表]代码(2分);

成绩表(学号,课程号,分数)

要求使用:外键(成绩表.学号,成绩表.课程号)、检查(分数)

create table成绩表( [学号] char(6) references 学生表(学号), [课程号] char(6) references 课程表(课号), [成绩] integer check ([成绩] between 0 and 100) ) 5. 将下列课程信息添加到课程表中

课号 课程名称 100001 大学语文

100002 大学英语 100003 西班牙语 insert 课程表 values('100001', '大学语文') insert 课程表 values('100002', '大学英语') insert 课程表 values('100003', '西班牙语') 6. 写出创建成绩表视图(学号,姓名,课号,课程名称,成绩)的代码; create view [成绩表视图] as select 成绩表.学号,学生表.姓名,成绩表.课程号,课程表.课程名称,成绩表.成绩 from 成绩表,学生表,课程表 where 成绩表.学号=学生表.学号 and 成绩表.课号=课程表.课号 7. 写出创建分数存储过程用于计算某门课程成绩最高分、最低分、平均分 create procedure [分数] @课程名 nchar(16) as select 课程名称, 最高分=max(分数)、最低分=min(分数)、平均分=avg(分数) from 成绩表视图 where 课程名称 = @课程名 8. 检索姓李的女同学的信息:姓名、性别、民族。 Select 姓名,性别,民族 From 学生表 Where 姓名 like ‘李%’ and 性别=’女’ 9. 定义一事务向成绩表中插入学号=‘20030021’的多条记录,并检验若该同学成绩超过4门,则回滚事务,即成绩无效,否则成功提交。 Begin transaction Insert 成绩表 values(‘20030021’,’001’,88); Insert 成绩表 values(‘20030021’,’002’,99); Insert 成绩表 values(‘20030021’,’003’,77); Insert 成绩表 values(‘20030021’,’004’,66); Declare @num int; Set @num=(select count(*) from 成绩表 where 学号=’20030021’); If @num>4 Rollback transaction; Else Commit transaction; Go