吉林电子信息职业技术学院2012年《关系数据库与SQL Server 2005

更新时间:2024-03-27 17:14:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

关系数据库与SQL Server 2005

习题参考答案

第1章 关系数据库原理

1.什么是数据、数据库、数据库管理系统、数据库系统?

数据是数据库中存储的基本对象。数据库是长期存储在计算机内、有组织的、可共享的数据集合。数据库管理系统是位于用户与操作系统之间的一层数据管理软件。数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及开发工具)、应用系统、数据库管理员和用户构成。

2.数据库系统有哪些特点?

数据库系统的特点有:数据结构化、数据的共享性高,冗余度低,易扩充、数据独立性高、数据由DBMS统一管理和控制。

3.数据库管理系统的主要功能有哪些?

数据库管理系统的主要功能有:数据定义功能、数据操纵功能、数据库的运行管理、数据库的建立和维护功能。

4.试给出三个实际情况的E-R图,要求实体之间具有一对一、一对多、多对多、各种不同的联系。

班级

1班级--班长1班长 1:1的E-R图

班级

1组成m学生 1:m的E-R图

课程m选修n学生 m:n的E-R图

5.学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教师,每个班有若干学生,每个学生选修若干课程,每门课程可由若干学生选修。请用E-R图画出此学校的概念模型。

编号名称名称代码学号姓名性别年龄系n拥有1学校1拥有编号n班级1属于nn学生n选修m教研室名称门牌号1属于n1指导校名校址校代码教师号教师专业姓名性别n年龄指导职称m课程号课程课程名学分教材 6.某商品销售公司有若干销售部门,每个销售部门有若干员工,销售多种商品,所有商品有一个厂家提供,设计该公司销售系统的E-R模型,并将其转换为关系模式。

公司(公司代码,公司名,地址) 部门(部门代码,部门名)

员工(员工代码,姓名,性别,年龄,职务) 商品(商品代码,商品名,单价,数量) 厂家(厂家代码,厂家名,地址) 拥有(公司代码,部门代码) 属于(部门代码,员工代码)

销售(员工代码,商品代码,销售量) 供货(商品代码,厂家代码)

7.在关系代数中,条件连接和自然连接的区别是什么?

条件连接是把两个表中的行按照给定的条件进行拼接而形成的新表,结果列为参与连接的两个表的所有列。自然连接要求两个表有共同属性(列)。自然连接的结果表是参与操作的两个表的共同属性上进行等值条件连接后,再去除重复的属性后得到的新表。

8.已知如图所示。

R S M N A B C 1 2 3 4 5 6 7 8 9 D E 3 1 6 2 C D E 3 5 8 9 8 0 3 6 9 6 7 8 B C 2 3 5 6 2 7 D 9 0 3

1)求R与S在B

A B C D E 1 2 3 3 1 4 5 6 6 2 2)求R与N在R.B=N.B并且R.C=N.C的条件下进行条件连接的结果 A B C B C D 1 2 3 2 3 9 4 5 6 5 6 0 3)求R、N进行自然连接的结果 A B C D 1 2 3 9 4 5 6 0 4)求R、M、N进行自然连接的结果 5)求R与N进行全外连接、做外连接、右外连接的结果。 A 1 4 7 B C 2 3 5 6 D 9 0 3 D 9 0 8 9 null null 2 7 全外连接 A B C 1 2 3 4 5 6 左外连接 A 1 7 8 9 null B C D 2 3 9 4 5 6 0 null 2 7 3 右外连接

9.试述关系模型的完整性规则。在参照完整性中,为什么外键属性的值也可以为空?什么情况下才可以为空?

关系的完整性规则包括实体完整性、域完整性和参照完整性三个方面。实体完整性用于保证数据库表中的每一个元组都是惟一的,要求在任何关系的任何一个元组中,主键的值不能为空值、也不能取重复的值。域完整性用于保证给定字段中数据的有效性,即保证数据的取值在有效的范围内,要求由用户根据实际情况,定义表中属性的取值范围。参照完整性用于确保相关联的表间的数据保持一致,要求“不引用不存在的实体”,即:不允许在一个关系中引用另一个关系中不存在的元组。

例如:主表:学生(学号,姓名,性别,专业号,年龄)

从表:专业(专业号,专业名) 主表的“专业号(外键)”的取值只能为两种情况:若取非空值,则它必须是从表中存在的值;取空值(null),表明尚未给学生分配专业,null不等于0或空字符串。

10.什么是关系规范化?关系规范化的目的是什么?关系规范化的基本方法是什么?第一范式至BCNF,它们之间的关系是什么?

在关系数据库的设计过程中,对于同一个问题,选用不同的关系模式,其性能的优劣是大不相同的,为了区分关系模式的优劣,人们常常把关系模式分为各种不同等级的范式。一个低一级范式的关系模式,通过分解可以转换为若干个高一级范式的关系模式,这种过程称为关系的规范化。

关系的规范化主要目的是解决数据库中数据冗余、插入异常、删除异常和更新异常等数据存储问题。

关系规范化的基本方法是逐步消除关系模式中不合适的数据依赖,使模式达到某种程度的分离,也就是说,不要将若干事物混在一起,而要彼此分开,用一个关系表示一事或一物。

从第一范式到第二范式,消除了非主属性对码的部分函数依赖;从第二范式到第三范式,消除了非主属性对码的传递函数依赖;从第三范式到BCNF,消除了关系中冗余的码。

习题2

1.微软公司为用户提供了5种版本的SQL Server 2005:简易版、工作组版、标准版、企业版、开发人员版。

2.SQL Server 2005的新特性:企业级数据管理的增强功能、提高开发者能力的新技术、查询通知、多活动结果集、依据镜像的透明故障转移、商务智能。

3.SQL Server 2005的配置工具包括:Notification Services命令提示、Reporting Services配置、SQL Server Configuration Manager、SQL Server错误和使用情况报告、SQL Server外围应用配置器。

4.SQL Server 2005安装完成后,包括以下的系统数据库:Master数据库、Model数据库、Msdb数据库、Tempdb数据库、Resource数据库。

习题3

一、填空题

1.Master数据库 Model数据库 Msdb数据库 Tempdb数据库 Resource数据库 2.主数据文件 次数据文件 事务日志文件 3.可恢复所有未完成的事务,保证数据库操作的一致性和完整性 4.CREATE DATABASE 5.ALTER DATABASE 6.DROP DATABASE 7.sp_helpdb 8.数据 数据 9.为空 删除文件组中的文件 10.主 二、简答题

1.分离数据库时,如果有用户与数据库连接,在“状态”列显示“未就绪”,此时分离数据库会操作失败。所以要分离数据库先要结束那些正在使用数据库的进程。

2.备份数据库有4种类型:完整备份、差异备份、事务日志备份、文件和文件组备份。 三、上机题

create database testdb on primary

( name=td1, filename=‘e:\\sql\\td1.mdf', size=5, maxsize=20, filegrowth=10% ), ( name=td2, filename=‘e:\\sql\\td2.ndf', size=10, maxsize=30, filegrowth=2 ), filegroup user1

( name=td3, filename=‘e:\\sql\\td3.ndf',

size=5, maxsize=unlimited, filegrowth=2 ) log on

( name=tlog, filename=' e:\\sql\\tlog.ldf',

size=4, maxsize=unlimited, filegrowth=20% )

习题4

一、填空题

1.主键约束 唯一性约束 外键约束 检查约束 空值约束 默认值约束 2.单个列定义 所有列定义 修改该表的方式 3.一 多 空 非空 4.相应的约束 5.外键 T2 二、上机题 1.

alter table 学生表

add constraint pk_xh primary key (学号), constraint uq_email unique (EMAIL), constraint df_xb default ‘男’ for 性别

alter table 学生表

alter column 姓名 char(8) not null 2.

alter table 成绩表

add constraint pk_xh_kcm primary key (学号, 课程名),

constraint fk_xh foreign key (学号) references 学生表(学号), constraint ck_cj check (成绩>=0 and 成绩<=100)

alter table 成绩表

alter column 课程名 char(20) not null 3.

insert 学生表(学号, 姓名, 性别, 电话, EMAIL)

values (‘020107’, ‘田芳’, ‘女’, ‘65926699’, ‘tianfang@qq.com’) go

insert 成绩表(学号, 课程名, 成绩) values (‘020107’, ‘数据库基础’, 85) 4.

alter table 学生表 add 序号 int identity 5.

alter table 学生表

alter column 电话 char(11) 6.

exec sp_rename ‘学生表’, ‘xsb’ go

exec sp_rename ‘成绩表’, ‘cjb’ 7.(略)

习题5

一、填空题 1.SELECT 2.WHERE 3.连接 4.分组 5.排序 6.ORDER BY 7.设定组或聚合的查询条件 HAVING子句可以使用汇总函数,而WHERE子句则不能

二、上机题 1.

select 课程名, 授课教师, 开课学期 from kc

where 开课学期=2 2.

select 姓名, 性别, 联系电话 from xsqk where 性别=0 3.

select 学号, 课程号, 成绩 from xs_kc

where 成绩>=80 4.

select 学号, 课程号, 成绩 from xs_kc

where 成绩>=80 or 成绩<60 5.

select 学号, 姓名, 出生日期 from xsqk

where 出生日期 not between ‘1980-07-07’ and ‘1980-09-30’ 6.

select * from xsqk

where 姓名 like ‘陈_’ 7.

select * from xsqk

where 学号 like ‘%1%’ 8.

select * from xsqk

where 联系电话 like ‘_ _ _ _ _ _ [46] _’ 9.

select * from kc

where 开课学期 in (1, 3, 5) 10.

select 学号, 姓名, 出生日期 from xsqk

order by 出生日期 11.

select 开课学期, sum(学分) as 各学期的学分合计 from kc

group by 开课学期 12.

select 学号, count(*) as 每个学生选修的课程门数 from xs_kc group by 学号 13.

select 课程名称, 开课学期, 学分 from kc

compute sum(学分) 14.

select 课程名称, 开课学期, 学分 from kc order by 2

compute sum(学分) by 开课学期 15.

select 学号, avg(成绩) as 学生的平均分 from xs_kc group by 学号 16.

select 学号, avg(成绩) as 学生的平均分 from xs_kc group by 学号

having avg(成绩) between 70 and 80 17.

select 学号, 课程号, 成绩 into temp_kc from xs_kc

order by 课程号, 成绩 desc 18.

select max(成绩) as 101课程的最高分, min(成绩) as 101课程的最低分 from xs_kc

where 课程号=’101’ 19.

select 开课学期, count(*) as 每学期开设的课程门数 from kc

group by 开课学期 20.

select 专业名, count(专业名) as 各专业人数 from xsqk

group by 专业名 21.

select 学号, xs_kc.课程号, 授课教师, 开课学期, 成绩 from kc, xs_kc

where kc.学号=xs_kc.学号 and 成绩<60 22.

select 学号, sum(成绩) as 各学生的总分 from xs_kc group by 学号

having sum(成绩)>=100 order by sum(成绩) desc

23.

select 学号, 姓名 from xsqk

where (select count(课程号)

from xs_kc

where xsqk.学号=xs_kc.学号 and 成绩>=60 )=2

24. select *

from xs_kc a

where 成绩=(select max(成绩)

from xs_kc b

where a.课程号=b.课程号)

25. select *

from xs_kc a

where 成绩=(select min(成绩)

from xs_kc b

where a.学号=b.学号)

习题6

一、填空题

1.标准视图 索引视图 分区视图 2.虚拟表 CREATE VIEW 3.基表 4.聚集索引 非聚集索引 唯一索引 复合索引 全文索引 XML索引 5.创建表 6.数据库 二、操作题 1.

create view v_平均成绩 as

select 学号,avg(成绩) as 平均成绩 from xs_kc group by 学号

having avg(成绩)>=90 2.

create view v_选课信息 as

select a.姓名,b.课程名 from xsqk a,kc b,xs_kc c

where a.学号=c.学号 and b.课程号=c.课程号 and a.班级='网络071' 3.

create index ix_课程名 on kc(课程名)

习题7

1.规则是绑定到列或用户自定义数据类型上的数据库对象,用来指定列可以接受哪些数据值。规则是实现域完整性的方法之一。

CHECK约束是用CREATE TABLE语句在建表时指定的,而规则需要作为单独的数据库对象来实现。在1列上只能使用1个规则,但可以使用多个CHECK约束。1个规则可以应用于多个列,还可以应用于用户自定义的数据类型,而CHECK约束只能应用于它所定义的列。

2.使用规则来实现数据完整性,需要两个步骤。一是创建规则;二是将规则绑定到列或用户自定义数据类型上。

3.默认值就是当用户向表中添加数据时,没有明确地给出,而由SQL Server自动指派的值。默认值可以定义为数据库对象,使用时需将其绑定到特定的列上。

默认值约束是用CREATE TABLE语句创建表时,使用DEFAULT子句为表中的列提供默认值。默认值对象是用CREATE DEFAULT语句来创建的,使用时须将它绑定到列或用户自定义数据类型上。

4.使用默认值来实现数据完整性,需要两个步骤。一是创建默认值对象;二是将默认值对象绑定到列或用户自定义数据类型上。

习题8

一、选择题 1.C 2.B 3.D

二、填空题

1.一条或多条T-SQL语句的集合 GO 2.DECLARE 系统 3.语句块

4.退出 重新开始

5.某一时刻 一段时间间隔 三、简述题

1.SQL标识符的命名必须遵守以下规则:标识符的长度可以为1~128个字符。标识符的第一个字符必须是英文字母、汉字、下划线、@或者#。默认情况下,标识符内不允许含有空格,也不允许将SQL关键字作为用户定义的标识符。

2.T-SQL的运算符共有7类:算数运算符、赋值运算符、按位运算符、比较运算符、逻辑运算符、字符串串联运算符、一元运算符。

3.局部变量的声明:DECLARE @variable_name datatype [ ,?n ] 局部变量的赋值:①SET @variable_name = expression

②SELECT @variable_name = expression [ ,?n ]

[ FROM? ] [ WHERE? ]

4.全局变量是指由系统提供且预先声明的变量,不能显示地被赋值,通过在名称前保留两个@@符号区别于局部变量。全局变量在相应的上下文中是随时可用的,通常被服务器用来跟踪服务器范围和特定会话期间的信息。

5.RETURN语句用于从查询或过程中无条件退出。RETURN的执行是即时且完全的,可在任何时候用于从过程、批处理或语句块中退出,在它之后的语句不会被执行。

四、编程题 1. use xscj go

declare @n int

select @n=count(*) from xsqk where datediff(yy,出生日期,getdate())>25 if @n>=0

print '年龄大于21的学生人数有:'+cast(@n as varchar(5)) else

print '没有年龄大于21的学生' 2.

declare @i int, @sum int select @i = 1, @sum = 0 while ( @i <= 100 ) begin

select @sum = @sum + @i , @i = @i +1 if (@sum > 1000) break end

print 'n=' + cast(@i as varchar(5)) + ',sum=' + cast(@sum 3.

waitfor delay ’00:00:06’use xscj select * from xsqk go

waitfor time ’16:15:30’use xscj select * from xs_kc

习题9

一、填空题

1.参数 输入 输出 2.EXECUTE 3.不能 4.DML触发器 DDL触发器 5.FOR | AFTER INSTEAD OF 6.Inserted Deleted 7.INSERT UPDATE DELETE 二、编程题 1. use xscj go

create procedure p_ins

as varchar(10)) @kch char(3), @kcm char(20),@teacher char(8),@kcxq tinyint,@xs tinyint, @xf tinyint

as

insert into kc values(@kch,@kcm,@teacher,@kcxq,@xs,@xf) go

exec p_ins '111','数据库基础','张玲',2,68,4 2.

create procedure p_xsqk

@xh char(6),@name char(8) output,@xb bit output,@xi char(10) output,@zy char(10) output

as

select @name=姓名,@xb=性别,@xi=所在系,@zy=专业名

from xsqk

where 学号=@xh go

declare @xh char(6),@name char(8) ,@xb bit ,@xi char(10) ,@zy char(10) select @xh='020101'

exec p_xsqk @xh,@name output,@xb output,@xi output,@zy output print ' 学号为'+@xh+'的信息如下:' print ''

print ' 姓 名: '+@name

print ' 性 别: '+convert(varchar(2),@xb) print ' 所在系: '+@xi print ' 专业名: '+@zy 3.

create proc p_update @kch char(3) as

update xs_kc set 成绩=60 where 课程号=@kch and (成绩>=55 and 成绩<=59) go

declare @kch char(3) select @kch='103' exec p_update @kch

select * from xs_kc where 课程号=@kch 4.(略) 5.(略) 6.

create trigger up_updatekc on kc for update as

update xs_kc

set 课程号 = inserted.课程号 where 课程号 = deleted.课程号 7.

create trigger t_delete_xsqk on xsqk for delete

as

declare @学号 char(6)

select @学号=deleted.学号 from deleted

print '准备删除 xs_kc表的'+@学号+'成绩记录' delete xs_kc where 学号=@学号

print '已经删除xs_kc表的'+@学号+'成绩记录' 8.

create trigger tr_insert_kc on kc after insert as

if update(课程号)

print '成功在kc表中插入了上述一个记录' go

insert into kc values('301','数据库','高老师' ,5, 114 ,6) 9.

create trigger tri_update_kc_授课教师和开课学期 on kc for update as

if update(授课教师) and update(开课学期) begin

declare @课程名 char(20)

select @课程名=inserted.课程名 from deleted ,inserted where deleted.课程名=inserted.课程名

print @课程名 +'课程的授课教师和开课学期已经被更新' end

习题10

1.SQL Server 2005有两种身份验证模式。Windows身份验证:使用Windows操作系统本身提供的安全机制验证用户的身份,只要用户能够通过Windows的用户帐户验证,就可连接到SQL Server,又称为“信任连接”模式。SQL Server验证:使用SQL Server验证时,必须提供连接到SQL Server上的登录帐号和口令(该帐号和口令由系统管理员事先创建并存储在SQL Server中)。

2.登录:服务器方的一个实体,使用一个登录名只能进入服务器,但是不能让用户访问服务器中的数据库资源。每个登录名的定义存放在master数据库的syslogins表中。

用户:一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。用户定义信息存放在每个数据库的sysusers表中。

一个登录名可以被授权访问多个数据库,但一个登录名在每个数据库中只能映射一次。即一个登录可对应多个用户,一个用户也可以被多个登录使用。如果没有为一个登录指定数据库用户,则登录时系统将试图将该登录名映射成guest用户(如果当前的数据库中有guest用户的话)。如果还是失败的话,这个用户将无法访问数据库。

3.SQL Server代理可以完成的工作有以下4种:作业调度、执行作业、产生警报、通知管理员。

4.(略)

习题11

1.CLR,运行阶段通用语言,是一种管理代码执行情况的环境。 MSIL,微软中间语言,这种语言以简写方式表示所有代码。

Metadata,元数据,它们是关于应用程序的描述性信息,指出应用程序能做什么,归属于哪里等。

本文来源:https://www.bwwdw.com/article/sgzr.html

Top