《关系数据库与SQL Server 》习题参考答案Word格式文档下载.docx
- 文档编号:18223009
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:18
- 大小:74.68KB
《关系数据库与SQL Server 》习题参考答案Word格式文档下载.docx
《《关系数据库与SQL Server 》习题参考答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《关系数据库与SQL Server 》习题参考答案Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
4
5
6
2)
9
3)
4)空
5)
7
8
null
全外连接
左外连接
右外连接
9.关系的完整性规则包括实体完整性、域完整性和参照完整性三个方面。
实体完整性用于保证数据库表中的每一个元组都是惟一的,要求在任何关系的任何一个元组中,主键的值不能为空值、也不能取重复的值。
域完整性用于保证给定字段中数据的有效性,即保证数据的取值在有效的范围内,要求由用户根据实际情况,定义表中属性的取值范围。
参照完整性用于确保相关联的表间的数据保持一致,要求“不引用不存在的实体”,即:
不允许在一个关系中引用另一个关系中不存在的元组。
例如:
主表:
学生(学号,姓名,性别,专业号,年龄)
从表:
专业(专业号,专业名)
主表的“专业号(外键)”的取值只能为两种情况:
若取非空值,则它必须是从表中存在的值;
取空值(null),表明尚未给学生分配专业,null不等于0或空字符串。
10.在关系数据库的设计过程中,对于同一个问题,选用不同的关系模式,其性能的优劣是大不相同的,为了区分关系模式的优劣,人们常常把关系模式分为各种不同等级的范式。
一个低一级范式的关系模式,通过分解可以转换为若干个高一级范式的关系模式,这种过程称为关系的规范化。
关系的规范化主要目的是解决数据库中数据冗余、插入异常、删除异常和更新异常等数据存储问题。
关系规范化的基本方法是逐步消除关系模式中不合适的数据依赖,使模式达到某种程度的分离,也就是说,不要将若干事物混在一起,而要彼此分开,用一个关系表示一事或一物。
从第一范式到第二范式,消除了非主属性对码的部分函数依赖;
从第二范式到第三范式,消除了非主属性对码的传递函数依赖;
从第三范式到BCNF,消除了关系中冗余的码。
习题2
1.微软公司为用户提供了5种版本的SQLServer2005:
简易版、工作组版、标准版、企业版、开发人员版。
2.SQLServer2005的新特性:
企业级数据管理的增强功能、提高开发者能力的新技术、查询通知、多活动结果集、依据镜像的透明故障转移、商务智能。
3.SQLServer2005的配置工具包括:
NotificationServices命令提示、ReportingServices配置、SQLServerConfigurationManager、SQLServer错误和使用情况报告、SQLServer外围应用配置器。
4.SQLServer2005安装完成后,包括以下的系统数据库:
Master数据库、Model数据库、Msdb数据库、Tempdb数据库、Resource数据库。
习题3
一、填空题
1.Master数据库Model数据库Msdb数据库Tempdb数据库Resource数据库
2.主数据文件次数据文件事务日志文件
3.可恢复所有未完成的事务,保证数据库操作的一致性和完整性
4.CREATEDATABASE
5.ALTERDATABASE
6.DROPDATABASE
7.sp_helpdb
8.数据数据
9.为空删除文件组中的文件
10.主
二、简答题
1.分离数据库时,如果有用户与数据库连接,在“状态”列显示“未就绪”,此时分离数据库会操作失败。
所以要分离数据库先要结束那些正在使用数据库的进程。
2.备份数据库有4种类型:
完整备份、差异备份、事务日志备份、文件和文件组备份。
三、上机题
createdatabasetestdb
onprimary
(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),
filegroupuser1
(name=td3,filename=‘e:
\sql\td3.ndf'
size=5,maxsize=unlimited,filegrowth=2)
logon
(name=tlog,filename='
e:
\sql\tlog.ldf'
size=4,maxsize=unlimited,filegrowth=20%)
习题4
1.主键约束唯一性约束外键约束检查约束空值约束默认值约束
2.单个列定义所有列定义修改该表的方式
3.一多空非空
4.相应的约束
5.外键T2
二、上机题
1.
altertable学生表
addconstraintpk_xhprimarykey(学号),
constraintuq_emailunique(EMAIL),
constraintdf_xbdefault‘男’for性别
altercolumn姓名char(8)notnull
2.
altertable成绩表
addconstraintpk_xh_kcmprimarykey(学号,课程名),
constraintfk_xhforeignkey(学号)references学生表(学号),
constraintck_cjcheck(成绩>
=0and成绩<
=100)
altercolumn课程名char(20)notnull
3.
insert学生表(学号,姓名,性别,电话,EMAIL)
values(‘020107’,‘田芳’,‘女’,‘65926699’,‘tianfang@’)
go
insert成绩表(学号,课程名,成绩)
values(‘020107’,‘数据库基础’,85)
add序号intidentity
altercolumn电话char(11)
execsp_rename‘学生表’,‘xsb’
execsp_rename‘成绩表’,‘cjb’
7.(略)
习题5
1.SELECT
2.WHERE
3.连接
4.分组
5.排序
6.ORDERBY
7.设定组或聚合的查询条件HAVING子句可以使用汇总函数,而WHERE子句则不能
select课程名,授课教师,开课学期
fromkc
where开课学期=2
select姓名,性别,联系电话
fromxsqk
where性别=0
select学号,课程号,成绩
fromxs_kc
where成绩>
=80
=80or成绩<
60
select学号,姓名,出生日期
where出生日期notbetween‘1980-07-07’and‘1980-09-30’
select*
where姓名like‘陈_’
7.
where学号like‘%1%’
where联系电话like‘______[46]_’
9.
where开课学期in(1,3,5)
10.
fromxsqk
orderby出生日期
11.
select开课学期,sum(学分)as各学期的学分合计
groupby开课学期
12.
select学号,count(*)as每个学生选修的课程门数
groupby学号
13.
select课程名称,开课学期,学分
computesum(学分)
14.
orderby2
computesum(学分)by开课学期
15.
select学号,avg(成绩)as学生的平均分
16.
havingavg(成绩)between70and80
17.
intotemp_kc
orderby课程号,成绩desc
18.
selectmax(成绩)as101课程的最高分,min(成绩)as101课程的最低分
where课程号=’101’
19.
select开课学期,count(*)as每学期开设的课程门数
20.
select专业名,count(专业名)as各专业人数
groupby专业名
21.
select学号,xs_kc.课程号,授课教师,开课学期,成绩
fromkc,xs_kc
wherekc.学号=xs_kc.学号and成绩<
22.
select学号,sum(成绩)as各学生的总分
havingsum(成绩)>
=100
orderbysum(成绩)desc
23.
select学号,姓名
where(selectcount(课程号)
wherexsqk.学号=xs_kc.学号and成绩>
=60)=2
24.
fromxs_kca
where成绩=(selectmax(成绩)
fromxs_kcb
wherea.课程号=b.课程号)
25.
where成绩=(selectmin(成绩)
wherea.学号=b.学号)
习题6
1.标准视图索引视图分区视图
2.虚拟表CREATEVIEW
3.基表
4.聚集索引非聚集索引唯一索引复合索引全文索引XML索引
5.创建表
6.数据库
二、操作题
createviewv_平均成绩
as
select学号,avg(成绩)as平均成绩fromxs_kc
havingavg(成绩)>
=90
createviewv_选课信息
selecta.姓名,b.课程名fromxsqka,kcb,xs_kcc
wherea.学号=c.学号andb.课程号=c.课程号anda.班级='
网络071'
createindexix_课程名
onkc(课程名)
习题7
1.规则是绑定到列或用户自定义数据类型上的数据库对象,用来指定列可以接受哪些数据值。
规则是实现域完整性的方法之一。
CHECK约束是用CREATETABLE语句在建表时指定的,而规则需要作为单独的数据库对象来实现。
在1列上只能使用1个规则,但可以使用多个CHECK约束。
1个规则可以应用于多个列,还可以应用于用户自定义的数据类型,而CHECK约束只能应用于它所定义的列。
2.使用规则来实现数据完整性,需要两个步骤。
一是创建规则;
二是将规则绑定到列或用户自定义数据类型上。
3.默认值就是当用户向表中添加数据时,没有明确地给出,而由SQLServer自动指派的值。
默认值可以定义为数据库对象,使用时需将其绑定到特定的列上。
默认值约束是用CREATETABLE语句创建表时,使用DEFAULT子句为表中的列提供默认值。
默认值对象是用CREATEDEFAULT语句来创建的,使用时须将它绑定到列或用户自定义数据类型上。
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_namedatatype[,…n]
局部变量的赋值:
①SET@variable_name=expression
②SELECT@variable_name=expression[,…n]
[FROM…]
[WHERE…]
4.全局变量是指由系统提供且预先声明的变量,不能显示地被赋值,通过在名称前保留两个@@符号区别于局部变量。
全局变量在相应的上下文中是随时可用的,通常被服务器用来跟踪服务器范围和特定会话期间的信息。
5.RETURN语句用于从查询或过程中无条件退出。
RETURN的执行是即时且完全的,可在任何时候用于从过程、批处理或语句块中退出,在它之后的语句不会被执行。
四、编程题
usexscj
declare@nint
select@n=count(*)fromxsqkwheredatediff(yy,出生日期,getdate())>
25
if@n>
=0
print'
年龄大于21的学生人数有:
'
+cast(@nasvarchar(5))
else
没有年龄大于21的学生'
declare@iint,@sumint
select@i=1,@sum=0
while(@i<
=100)
begin
select@sum=@sum+@i,@i=@i+1
if(@sum>
1000)break
end
print'
n='
+cast(@iasvarchar(5))+'
sum='
+cast(@sumasvarchar(10))
waitfordelay’00:
00:
06’
select*fromxsqk
waitfortime’16:
15:
30’
select*fromxs_kc
习题9
1.参数输入输出
2.EXECUTE
3.不能
4.DML触发器DDL触发器
5.FOR|AFTERINSTEADOF
6.InsertedDeleted
7.INSERTUPDATEDELETE
二、编程题
createprocedurep_ins
@kchchar(3),@kcmchar(20),@teacherchar(8),@kcxqtinyint,@xstinyint,@xftinyint
insertintokcvalues(@kch,@kcm,@teacher,@kcxq,@xs,@xf)
execp_ins'
111'
'
数据库基础'
张玲'
2,68,4
createprocedurep_xsqk
@xhchar(6),@namechar(8)output,@xbbitoutput,@xichar(10)output,@zychar(10)output
select@name=姓名,@xb=性别,@xi=所在系,@zy=专业名
where学号=@xh
declare@xhchar(6),@namechar(8),@xbbit,@xichar(10),@zychar(10)
select@xh='
020101'
execp_xsqk@xh,@nameoutput,@xboutput,@xioutput,@zyoutput
学号为'
+@xh+'
的信息如下:
姓名:
'
+@name
性别:
+convert(varchar
(2),@xb)
所在系:
+@xi
专业名:
+@zy
createprocp_update@kchchar(3)
updatexs_kcset成绩=60where课程号=@kchand(成绩>
=55and成绩<
=59)
declare@kchchar(3)
select@kch='
103'
execp_update@kch
select*fromxs_kcwhere课程号=@kch
4.(略)
5.(略)
createtriggerup_updatekc
onkcforupdate
updatexs_kc
set课程号=inserted.课程号
where课程号=deleted.课程号
createtriggert_delete_xsqkonxsqkfordelete
as
declare@学号char(6)
select@学号=deleted.学号fromdeleted
print'
准备删除xs_kc表的'
+@学号+'
成绩记录'
deletexs_kcwhere学号=@学号
已经删除xs_kc表的'
createtriggertr_insert_kconkcafterinsert
ifupdate(课程号)
成功在kc表中插入了上述一个记录'
insertintokcvalues('
301'
数据库'
高老师'
5,114,6)
createtriggertri_update_kc_授课教师和开课学期onkcforupdate
ifupdate(授课教师)andupdate(开课学期)
declare@课程名char(20)
select@课程名=inserted.课程名fromdeleted,inserted
wheredeleted.课程名=inserted.课程名
print@课程名+'
课程的授课教师和开课学期已经被更新'
习题10
1.SQLServer2005有两种身份验证模式。
Windows身份验证:
使用Windows操作系统本身提供的安全机制验证用户的身份,只要用户能够通过Windows的用户帐户验证,就可连接到SQLServer,又称为“信任连接”模式。
SQLServer验证:
使用SQLServer验证时,必须提供连接到SQLServer上的登录帐号和口令(该帐号和口令由系统管理员事先创建并存储在SQLServer中)。
2.登录:
服务器方的一个实体,使用一个登录名只能进入服务器,但是不能让用户访问服务器中的数据库资源。
每个登录名的定义存放在master数据库的syslogins表中。
用户:
一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。
用户定义信息存放在每个数据库的sysusers表中。
一个登录名可以被授权访问多个数据库,但一个登录名在每个数据库中只能映射一次。
即一个登录可对应多个用户,一个用户也可以被多个登录使用。
如果没有为一个登录指定数据库用户,则登录时系统将试图将该登录名映射成guest用户(如果当前的数据库中有guest用户的话)。
如果还是失败的话,这个用户将无法访问数据库。
3.SQLServer代理可以完成的工作有以下4种:
作业调度、执行作业、产生警报、通知管理员。
习题11
1.CLR,运行阶段通用语言,是一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系数据库与SQL Server 关系数据库与SQL Server 习题参考答案 关系 数据库 SQL 习题 参考答案