关系数据库与SQLServer201习题参考答案.docx
《关系数据库与SQLServer201习题参考答案.docx》由会员分享,可在线阅读,更多相关《关系数据库与SQLServer201习题参考答案.docx(28页珍藏版)》请在冰豆网上搜索。
关系数据库与SQLServer201习题参考答案
《关系数据库与
SQL-Server-2012》--习题参考答案
关系数据库与SQLServer2012
习题参考答案
第1章关系数据库原理
【课后习题】
一、填空题
1.DBMS(数据库管理系统)
2.安全性
3.实体属性联系
4.1:
N
5.网状模型
6.外键
7.实体
8.型
9.每个实体的码
10.N端实体的码
11.诸实体码的组合
12.实体
二、选择题
1.D
2.B
3.A
4.A
5.C
6.B
7.D
8.D
9.A
三、简答题
1.数据是数据库中存储的基本对象。
数据库是长期存储在计算机内、有组织的、可共享的数据集合。
数据库管理系统是位于用户与操作系统之间的一层数据管理软件。
数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及开发工具)、应用系统、数据库管理员和用户构成。
2.数据库系统的特点有:
数据结构化、数据的共享性高,冗余度低,易扩充、数据独立性高、数据由DBMS统一管理和控制。
3.数据库管理系统的主要功能有:
数据定义功能、数据操纵功能、数据库的运行管理、数据库的建立和维护功能。
4.等值连接是把两个表中的行按照给定的等值条件进行拼接而形成新表,结果列为参与连接的两个表的所有列。
自然连接是一种特殊的等值连接,要求参与连接的两个表有共同属性(列),其结果是在参与操作的两个表的共同属性上进行等值条件连接后,再去除重复的属性后所得的新表。
5.关系的完整性规则包括实体完整性、域完整性和参照完整性三个方面。
实体完整性用于保证数据库表中的每一个元组都是唯一的,要求在任何关系的任何一个元组中,主键的值不能为空值、也不能取重复的值。
域完整性用于保证给定字段中数据的有效性,即保证数据的取值在有效的范围内,要求由用户根据实际情况,定义表中属性的取值范围。
参照完整性用于确保相关联的表间的数据保持一致,要求“不引用不存在的实体”,即:
不允许在一个关系中引用另一个关系中不存在的元组。
例如:
主表:
学生(学号,姓名,性别,专业号,年龄)
从表:
专业(专业号,专业名)主表的“专业号(外键)”的取值只能为两种情况:
若取非空值,则它必须是从表中存在的值;取空值(null),表明尚未给学生分配专业,null不等于0或空字符串。
6.一个低一级范式的关系模式,通过分解可以转换为若干个高一级范式的关系模式,这种过程称为关系的规范化。
关系的规范化主要目的是解决数据库中数据冗余、插入异常、删除异常和更新异常等数据存储问题。
关系规范化的基本方法是逐步消除关系模式中不合适的数据依赖,使关系模式达到某种程度的分离,也就是说,不要将若干事物混在一起,而要彼此分开,用个关系表示一事或一物,所以,规范化的过程也被认为是“单一化”的过程。
从第一范式至BCNF,它们之间的关系是BCNF?
3NF?
2NF?
1NF。
从第一范式到第二范式,消除了非主属性对码的部分函数依赖;从第二范式到第三范式,消除了非主属性对码的传递函数依赖;从第三范式到
BCNF,消除了关系中冗余的码
四、计算题1.
(1)
A
B
C
D
E
1
2
3
3
1
4
5
6
6
2
2)
A
B
C
B
C
D
1
2
3
2
3
9
4
5
6
5
6
0
3)
A
B
C
D
1
2
3
9
4
5
6
0
4)空
5)全外连接
A
B
C
D
1
2
3
9
4
5
6
0
7
8
9
null
null
2
7
3
左外连接
A
B
C
D
1
2
3
9
4
5
6
0
7
8
9
null
右外连接
A
B
C
D
1
2
3
9
4
5
6
0
null
2
7
3
五、设计题1.
班级1班级--班长1班长
1:
1的E-R图
班级1组成m学生
1:
n的E-R图
m:
n的E-R图
3.
名称
名称
学号
姓名
年龄
编号
代码
1
1
n
n
拥有
系
班级
学生
属于
n
编号
n
教研室
名称
指导
选修
属于
1
m
n
教师
指导
课程
校址
校名
n
m
性别
年龄
牌号
校代码
课名程学分教材
专业教师姓名
1
学校
拥有
公司
部门
员工
员工代码
商品
代码
厂家
拥有
主键:
公司代码部门代码
公司代码,公司名,地址)
部门代码,部门名)主键:
员工代码,姓名,性别,年龄,职务)主键:
商品代码,商品名,单价,数量)主键:
商品
厂家代码,厂家名,地址)主键:
厂家代码
主键:
部门代码,外键:
公司代码,部门代码)
公司代码
属于(部门代码,员工代码)部门代码
销售(员工代码,商品代码,码+商品代码,外键:
员工代码、商品代码
主键:
员工代码,外键:
销售量)主键:
员工代
供货(商品代码,厂家代码)主键:
商品代码,外键:
厂家代码
因商品和供货表有相同的主键,合并为:
商品(商品代码,商品名,单价,数量,厂家代码)主键:
商品代码,外键:
厂家代码
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.DROPDATABASE7.sp_helpdb
8.为空删除文件组中的文件
9.主10.备份
二、选择题1-5ADADD6-7DB
三、判断题1-5FFTTF6-9FFFT
实践】
任务1:
createdatabasetestdbonprimary
(name=td1,filename=\sq‘l\ted:
1.mdf',
size=5,maxsize=20,filegrowth=10%),(name=td2,filename=‘\sqel\:
td2.ndf',
filegroupuser1
(name=td3,filename=:
\sq‘l\ted3.ndf',size=5,maxsize=unlimited,filegrowth=2)
logon
(name=tlog,filename='e:
\sql\tlog.ldf',
size=4,maxsize=unlimited,filegrowth=20%)
filegrowth=15%)
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
课外实践】
任务1:
1.
select课程名,授课教师,开课学期fromkc
where开课学期=2
2.
select姓名,联系电话,专业名,性别
fromxsqk
where专业名=‘信息安全'and性别=03.
select学号,课程号,成绩
fromxs_kc
where成绩>=90
4.
select学号,课程号,成绩
fromxs_kc
where成绩>=90or成绩<60
5.
select学号,姓名,出生日期
fromxsqk
where出生日期notbetween
1996-2-29'
6.select*fromxsqk
where姓名like‘陈_'
7.
select*fromxsqkwhere学号like‘8%'8.
select*fromxsqkwhere联系电话like‘[6_9_]%'9.
select*fromkcwhere开课学期in(1,3,5)10.
select学号,姓名,出生日期
fromxsqkorderby出生日期任务2:
1.
select开课学期,sum(学分)as每学期的总学分fromkc
groupby开课学期2.
select学号,count(*)as每个学生选修的课程门数
fromxs_kcgroupby学号
3.
select学号,avg(成绩)as学生的平均分fromxs_kc
groupby学号
4.
select学号,avg(成绩)as学生的平均分fromxs_kc
groupby学号
havingavg(成绩)between70and805.
select学号,课程号,成绩intotemp_kcfromxs_kc
orderby课程号,成绩desc6.
selectmax(成绩)as101课程的最高分,min(成绩)as
101课程的最低分
fromxs_kc
where课程号='101'7.
select开课学期,count(*)as每学期开设的课程门
fromkc
groupby开课学期
8.
select专业名,count(专业名)as各专业人数
fromxsqk
groupby专业名
任务3:
1.
select学号,课程名,授课教师,开课学期,成绩
fromkc,xs_kc
wherekc.学号=xs_kc.学号and成绩<60
2.
selectxsqk.学号,姓名,kc.课程号,课程名,成绩
fromxsqk,kc,xs_kc
wherexsqk.学号=xs_kc.学号andkc.课程号
=xs_kc.课程号and课程名='网页设计'
任务4:
1.
select学号,姓名,联系电话
fromxsqk
where学号in(select学号fromxs_kcwhere课程号='103'and绩<60)
2.
select学号,姓名
fromxsqk
where(selectcount(课程号)fromxs_kcwherexsqk.学号=xs_kc.学号and绩>=60)=2
3.
select*
fromxs_kca
where成绩=(selectmax(成绩)
fromxs_kcb
wherea.课程号=b.课程号)
4.
select*
fromxs_kca
where成绩=(selectmin(成绩)
fromxs_kcb
wherea.学号=b.学号)
5.
selectdistincta.课程号,人数=
(selectcount(学号)fromxs_kcb课程号=a.课程号)
fromxs_kca
orderbya.课程号asc
第6章视图与索引
【课后习题】
一、填空题
1.WITHENCRYPTION
2.sp_helptext
3.CREATEVIEW
4.基表
5.聚集索引非聚集索引唯一索引全文索引XML索引
6.创建表
7.主键唯一
8.查询
二、选择题
whereb.
复合索引
1-5DDAAC
6B
三、判断题
1-5TFFFF
6-10FFFTT
课外实践】
任务1:
USExscj
GO
CREATEVIEWv_开课信息
AS
SELECT课程号,课程名,开课学期,学时
FROMkc
WHERE开课学期>=3
任务2:
USExscj
GO
CREATEVIEWv_选课信息
AS
SELECT姓名,课程名
FROMxsqk,kc,xs_kc
kc.课程号
WHERExsqk.学号=xs_kc.学号AND=xs_kc.课程号AND专业名='多媒体技术'
任务3:
CREATEINDEXIX_课程名
ONKC(课程名)
第7
章规则与默认值
习题】
一、填空题1.对象2.CREATERULE3.DROPRULE4.DEFAULT5.sp_bindefault
二、选择题
1-3CBD
三、判断题
1-5FTTTF
6-8TTF
实践】
任务1:
USExscj
GO
CREATERULExs_rule
AS
@学分>=0AND@学分<=10
GO
EXECsp_bindrule‘xs_rule学'分,'kc.任务2:
USExscj
GO
CREATEDEFAULTszx_defAS'计算机'GO
第8
EXECsp_bindefaultszx‘_def'x,sq'k.所在系'章T-SQL编程
课后习题】
、填空题
GO
@@@ab
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可以返回一个整数。
【课外实践】
任务1:
declare@xvarchar(30)set@x='WelcometoSQLServerprintupper(@x)printlower(@x)任务2:
waitfordelay'00:
00:
30use'xscjselect*fromkc
waitfortime'11:
30:
30use'xscjselect*fromxsqk任务3:
usexscjgodeclare@nint
select@n=count(*)fromxsqkwheredatediff(yy,出生日期,getdate())>20
if@n>0
as
print'年龄大于20的学生人数有:
'+cast(@nvarchar(5))
else
print'没有年龄大于20的学生'
任务4:
declare@sumint
set@sum=(selectsum(学分)fromxs_kc)
while@sum<100
begin
updatexs_kcset学分=学分+1
set@sum=(selectsum(学分)fromxs_kc)end
第9章存储过程与触发器
课后习题】
、填空题
1.参数输入输出
2.EXECUTE
3.DML触发器DDL触发器登录触发器
4.FOR|AFTERINSTEADOF
5.INSERTUPDATEDELETE
二、选择题
1-4BDDC
三、判断题
1-5FFTTT
【课外实践】
任务1:
usexscj
go
createprocedurep1
@kchchar(3),@kcmvarchar(20),@skjsvarchar(10),@kcxqtinyint,@xstinyint,@xftinyint
as
insertkcvalues(@kch,@kcm,@skjs,@kcxq,@xs,@xf)
go
execp1'115','数据库基础','张玲',2,64,4
任务2:
createprocp2
@kchchar(3)
as
updatexs_kcset成绩=60where课程号
=@kchand(成绩>=55and成绩<60)
go
declare@kchchar(3)select
*fromxs_kcwhere课程号=@kch
createprocp3
bit
@xhchar(10),@xmvarchar(10)output,@xboutput,@zymvarchar(20)output,@szxvarchar(20)output
as
select@xm=姓名,@xb=性别,@zym=专业名,@szx=
@xhchar(10),@xmvarchar(10),@xbbit,@zymvarchar(20),@szxvarchar(20)select@xh='2012130101'
execp3@xh,@xmoutput,@xboutput,@zymoutput,@szxoutput
print'学号为'+@xh+'的信息如下:
'print''print'姓名:
'+@xm
print'性别:
'+convert(varchar
(2),@xb)print'专业名:
'+@zymprint'所在系:
'+@szx
任务4:
createtriggert4onkcforinsertasprint‘插入成功!
'任务5:
createtriggert5onkcforupdateas
updatexs_kcset课程号=inserted.课程号where课程号=deleted.课程号
任务6:
createtriggert6onxsqk
fordelete
课后习题】
户定义的应用程序角色
9.对象权限语句权限隐式权限
10.GrantRevokeDeny
二、简答题
1.sysadmin角色为需要完全控制整个SQLServer和安装的数据库的用户而设计,其成员能在SQLServer系统中执行任何任务。
所以win_user应添加到sysadmin角色中。
2.db_owner角色用于需要完全控制数据库的所有方面的用户,所以ST_su应该添加到db_owner角色中第11章SQLServer2012综合应用实例
【课后习题】
一、填空题
1.客户端/服务器结构
2.Connection类Command类DataReader类
3.数据集