《关系数据库与SQLServer》习题参考答案Word下载.docx
《《关系数据库与SQLServer》习题参考答案Word下载.docx》由会员分享,可在线阅读,更多相关《《关系数据库与SQLServer》习题参考答案Word下载.docx(27页珍藏版)》请在冰点文库上搜索。
学生(学号,姓名,性别,专业号,年龄)
从表:
专业(专业号,专业名)
主表的“专业号(外键)”的取值只能为两种情况:
若取非空值,则它必须是从表中存在的值;
取空值(null),表明尚未给学生分配专业,null不等于0或空字符串。
6.一个低一级范式的关系模式,通过分解可以转换为若干个高一级范式的关系模式,这种过程称为关系的规范化。
关系的规范化主要目的是解决数据库中数据冗余、插入异常、删除异常和更新异常等数据存储问题。
关系规范化的基本方法是逐步消除关系模式中不合适的数据依赖,使关系模式达到某种程度的分离,也就是说,不要将若干事物混在一起,而要彼此分开,用一个关系表示一事或一物,所以,规范化的过程也被认为是“单一化”的过程。
从第一范式至BCNF,它们之间的关系是BCNF
3NF
2NF
1NF。
从第一范式到第二范式,消除了非主属性对码的部分函数依赖;
从第二范式到第三范式,消除了非主属性对码的传递函数依赖;
从第三范式到BCNF,消除了关系中冗余的码。
四、计算题
1.
(1)
A
B
C
D
E
1
2
3
4
5
6
(2)
9
(3)
(4)空
(5)全外连接
7
8
null
左外连接
右外连接
五、设计题
1:
1的E-R图
n的E-R图
m:
2.
3.
公司(公司代码,公司名,地址)主键:
公司代码
部门(部门代码,部门名)主键:
部门代码
员工(员工代码,姓名,性别,年龄,职务)主键:
员工代码
商品(商品代码,商品名,单价,数量)主键:
商品代码
厂家(厂家代码,厂家名,地址)主键:
厂家代码
拥有(公司代码,部门代码)主键:
部门代码,外键:
属于(部门代码,员工代码)主键:
员工代码,外键:
销售(员工代码,商品代码,销售量)主键:
员工代码+商品代码,外键:
员工代码、商品代码
供货(商品代码,厂家代码)主键:
商品代码,外键:
因商品和供货表有相同的主键,合并为:
商品(商品代码,商品名,单价,数量,厂家代码),主键:
4.
(1)基本的函数依赖有:
(商店编号+商品编号)→部门编号,(商店编号+部门编号)→负责人,(商店编号+商品编号)→数量
(2)由题意,上面的函数依赖可知商店编号是主属性,商品编号也是主属性,由这两个属性,可以确定关系元组的所有属性,所以R的候选码是:
商店编号+商品编号
(3)R(商店编号,商品编号,数量,部门编号,负责人)最高已达到2NF。
因为负责人是码的传递依赖。
(4)要达到3NF,必须消除非主属性对码的传递依赖。
对R分解后的两个模式如下:
R1(商店编号,商品编号,数量,部门编号)
R2(部门编号,负责人)
第2章SQLServer2012基础
1.一个实例
2.SQLServer配置管理器
3.对象资源管理器
4.Windows身份验证混合模式验证
5.Windows服务配置管理器
6.远程本地
7.SharedMemory
8.TCP/IP
二、简答题
1.对象资源管理器窗口用于管理数据库中的所有对象,在该窗口中,可以完成注册、启动和停止服务器,配置服务器属性,创建数据库以及表、视图、存储过程等数据库对象,生成Transact-SQL对象以创建脚本、创建登录账户、管理数据库对象权限等,配置和管理复制,监视服务器活动,查看系统日志等操作。
2.该窗口用于编写和运行Transact-SQL脚本。
它既可以在连接模式下工作,也可以在断开模式下工作。
SQLServer2012的“查询编辑器”支持彩色代码关键字,可视化地显示语法错误,允许开发人员运行和诊断代码等。
3.使用SQLServerProfiler工具可以对MicrosoftSQLServer2012系统的运行过程像摄像机一样进行摄录。
SQLServerProfiler是用于从服务器中捕获SQLServer2012事件的工具。
这些事件可以是连接服务器、登录系统、执行Transact-SQL语句等操作。
这些事件被保存在一个跟踪文件中,以便日后对该文件进行分析或用来重新执行指定的系列步骤,从而有效地发现系统中性能比较差的查询语句等相关问题。
第3章数据库的创建与管理
1.Master数据库Model数据库Msdb数据库Tempdb数据库Resource数据库
2.主数据文件次数据文件事务日志文件
3.可恢复所有未完成的事务,保证数据库操作的一致性和完整性
4.CREATEDATABASE
5.ALTERDATABASE
6.DROPDATABASE
7.sp_helpdb
8.为空删除文件组中的文件
9.主
10.备份
1-5ADADD
6-7DB
三、判断题
1-5FFTTF
6-9FFFT
【课外实践】
任务1:
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%)
任务2:
1.
alterdatabasetestdb
addfilegroupu3
2.
alterdatabasetestdb
modifyfilegroupu3name=u2
3.
alterdatabasetestdb
modifyfile
(name=td2,size=10,maxsize=50,filegrowth=15%)
4.
alterdatabasetestdbmodifyname=gldb
第4章数据表的创建与管理
1.主键约束唯一性约束外键约束检查约束非空约束默认值约束
2.单个列定义所有列定义修改表的方式
3.一多空非空
4.相应的约束
5.外键T2
6.空
7.修改删除
8.域
9.参照
10.identity
1-5BBDAC
1-5FTFTF
6-10FFTFT
第5章数据查询
1.SELECT
2.WHERE
3.连接
4.分组
5.排序
6.Transact-SQL
7.DISTINCT
8.HAVING
9.BETWEEN…AND
10.LIKE
11.ANSI语法SQLServer语法
12.比较
13.ANYALLIN
1-3DDA
1-5TFTFF
6-7FF
select课程名,授课教师,开课学期
fromkc
where开课学期=2
select姓名,联系电话,专业名,性别
fromxsqk
where专业名=‘信息安全’and性别=0
select学号,课程号,成绩
fromxs_kc
where成绩>
=90
=90or成绩<
60
5.
select学号,姓名,出生日期
where出生日期notbetween‘1995-11-01’and‘1996-2-29’
6.
select*
where姓名like‘陈_’
7.
where学号like‘%8%’
8.
where联系电话like‘__[69]%’
9.
where开课学期in(1,3,5)
10.
fromxsqk
orderby出生日期
select开课学期,sum(学分)as每学期的总学分
groupby开课学期
select学号,count(*)as每个学生选修的课程门数
groupby学号
select学号,avg(成绩)as学生的平均分
select学号,avg(成绩)as学生的平均分
havingavg(成绩)between70and80
intotemp_kc
orderby课程号,成绩desc
selectmax(成绩)as101课程的最高分,min(成绩)as101课程的最低分
where课程号=’101’
select开课学期,count(*)as每学期开设的课程门数
select专业名,count(专业名)as各专业人数
groupby专业名
任务3:
select学号,课程名,授课教师,开课学期,成绩
fromkc,xs_kc
wherekc.学号=xs_kc.学号and成绩<
selectxsqk.学号,姓名,kc.课程号,课程名,成绩
fromxsqk,kc,xs_kc
wherexsqk.学号=xs_kc.学号andkc.课程号=xs_kc.课程号and课程名='
网页设计'
任务4:
select学号,姓名,联系电话
where学号in(select学号
where课程号=’103’and成绩<
60)
select学号,姓名
where(selectcount(课程号)
wherexsqk.学号=xs_kc.学号and成绩>
=60)=2
fromxs_kca
where成绩=(selectmax(成绩)
fromxs_kcb
wherea.课程号=b.课程号)
where成绩=(selectmin(成绩)
wherea.学号=b.学号)
selectdistincta.课程号,人数=
(selectcount(学号)fromxs_kcbwhereb.课程号=a.课程号)
fromxs_kca
orderbya.课程号asc
第6章视图与索引
1.WITHENCRYPTION
2.sp_helptext
3.CREATEVIEW
4.基表
5.聚集索引非聚集索引唯一索引复合索引全文索引XML索引
6.创建表
7.主键唯一
8.查询
1-5DDAAC
6B
1-5TFFFF
6-10FFFTT
USExscj
GO
CREATEVIEWv_开课信息
AS
SELECT课程号,课程名,开课学期,学时
FROMkc
WHERE开课学期>
=3
CREATEVIEWv_选课信息
SELECT姓名,课程名
FROMxsqk,kc,xs_kc
WHERExsqk.学号=xs_kc.学号ANDkc.课程号=xs_kc.课程号AND专业名=’多媒体技术’
CREATEINDEXIX_课程名
ONKC(课程名)
第7章规则与默认值
1.对象
2.CREATERULE
3.DROPRULE
4.DEFAULT
5.sp_bindefault
1-3CBD
1-5FTTTF
6-8TTF
CREATERULExs_rule
@学分>
=0AND@学分<
=10
EXECsp_bindrule‘xs_rule’,’kc.学分’
CREATEDEFAULTszx_defAS’计算机’
EXECsp_bindefault‘szx_def’,’xsqk.所在系’
第8章T-SQL编程
1.GO
2.@@@
3.ab
4.BEGINEND
5.BREAKCONTINUE
6.某一时刻一段时间间隔
7.多一
8.GETDATE()
1-5CBBDA
6-7CD
1-5FTFFF
6-8FFT
四、简答题
1.SQL标识符的命名必须遵守以下规则:
标识符的长度可以为1~128个字符。
标识符的第一个字符必须是英文字母、下划线、汉字、@或者#。
默认情况下,标识符内不允许含有空格,也不允许将SQL关键字作为用户定义的标识符。
2.局部变量的声明:
DECLARE@变量名数据类型[,…n]
局部变量的赋值:
①SET@变量名=表达式
②SELECT@变量名=表达式[,…n]
[FROM…]
[WHERE…]
3.全局变量是系统定义的变量,以@@符号开头,用户不能定义全局变量,也不能修改其值,全局变量在相应的上下文中是随时可用的,通常被服务器用来跟踪服务器范围和特定会话期间的信息。
4.RETURN语句用于从查询或过程中无条件退出。
RETURN的执行是即时且完全的,可在任何时候用于从过程、批处理或语句块中退出,在它之后的语句不会被执行。
RETURN与BREAK很相似,不同的是RETURN可以返回一个整数。
declare@xvarchar(30)
set@x=’WelcometoSQLServer’
printupper(@x)
printlower(@x)
waitfordelay’00:
00:
30’
usexscj
select*fromkc
waitfortime’11:
30:
select*fromxsqk
usexscj
go
declare@nint
select@n=count(*)fromxsqkwheredatediff(yy,出生日期,getdate())>
20
if@n>
print'
年龄大于20的学生人数有:
'
+cast(@nasvarchar(5))
else
没有年龄大于20的学生'
declare@sumint
set@sum=(selectsum(学分)fromxs_kc)
while@sum<
100
begin
updatexs_kcset学分=学分+1
end
第9章存储过程与触发器
1.参数输入输出
2.EXECUTE
3.DML触发器DDL触发器登录触发器
4.FOR|AFTERINSTEADOF
5.INSERTUPDATEDELETE
1-4BDDC
1-5FFTTT
createprocedurep1
@kchchar(3),@kcmvarchar(20),@skjsvarchar(10),@kcxqtinyint,@xstinyint,@xftinyint
as
insertkcvalues(@kch,@kcm,@skjs,@kcxq,@xs,@xf)
execp1'
115'
'
数据库基础'
张玲'
2,64,4
createprocp2
@kchchar(3)
updatexs_kcset成绩=60where课程号=@kchand(成绩>
=55and成绩<
declare@kchchar(3)
select@kch='
103'
execp2@kch
select*fromxs_kcwhere课程号=@kch
createprocp3
@xhchar(10),@xmvarchar(10)output,@xbbitoutput,@zymvarchar(20)output,@szxvarchar(20)output
select@xm=姓名,@xb=性别,@zym=专业名,@szx=所在系
where学号=@xh
declare@xhchar(10),@xmvarchar(10),@xbbit,@zymvarchar(20),@szxvarchar(20)
select@xh='
2012130101'
execp3@xh,@xmoutput,@xboutput,@zymoutput,@szxoutput
学号为'
+@xh+'
的信息如下:
姓名:
+@xm
性别:
+convert(varchar
(2),@xb)
专业名:
+@zym
所在系:
+@szx
createtriggert4
onkc
forinsert
print‘插入成功!
’
任务5:
createtriggert5
forupdate
updatexs_kc
set课程号=inserted.课程号
where课程号=deleted.课程号
任务6:
createtriggert6
onxsqk
fordelete
declare@xhchar(10)
select@xh=学号fromdeleted
print'
准备删除xs_kc表'
学生的成绩信息'
deletexs_kcwhere学号=@xh
已经删除xs_kc表'
第10章SQLServer2012安全管理
1.Windows验证混合模式验证
2.sa
3.操作数据库数据库
4.dboguestsys
5.服务器角色数据库角色
6.固定服务器角色
7.八sysadmin
8.预定义的数据库角色用户定义的标准角色用户定义的应用程序角色
9.对象权限语句权限隐式权限
10.GrantRevokeDeny
1.sysadmin角色为需要完全控制整个SQLServer和安装的数据库的用户而设计,其成员能在SQLServe