《《关系数据库与sql server 》--习题参考答案.doc》由会员分享,可在线阅读,更多相关《《关系数据库与sql server 》--习题参考答案.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-作者xxxx-日期xxxx关系数据库与SQL Server 2012-习题参考答案【精品文档】关系数据库与SQL Server 2012习题参考答案第1章 关系数据库原理【课后习题】一、填空题1DBMS(数据库管理系统)2安全性3实体 属性 联系41:N5网状模型6外键7实体8型9每个实体的码10N端实体的码11诸实体码的组合12实体二、选择题1D2B3A4A5C6B7D8D9A三、简答题1数据是数据库中存储的基本对象。数据库是长期存储在计算机内、有组织的、可共享的数据集合。数据库管理系统是位于用户与操作系统之间的一层数据管理软件。数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数
2、据库、数据库管理系统(及开发工具)、应用系统、数据库管理员和用户构成。2数据库系统的特点有:数据结构化、数据的共享性高,冗余度低,易扩充、数据独立性高、数据由DBMS统一管理和控制。3数据库管理系统的主要功能有:数据定义功能、数据操纵功能、数据库的运行管理、数据库的建立和维护功能。4等值连接是把两个表中的行按照给定的等值条件进行拼接而形成新表,结果列为参与连接的两个表的所有列。自然连接是一种特殊的等值连接,要求参与连接的两个表有共同属性(列),其结果是在参与操作的两个表的共同属性上进行等值条件连接后,再去除重复的属性后所得的新表。5关系的完整性规则包括实体完整性、域完整性和参照完整性三个方面。
3、实体完整性用于保证数据库表中的每一个元组都是唯一的,要求在任何关系的任何一个元组中,主键的值不能为空值、也不能取重复的值。域完整性用于保证给定字段中数据的有效性,即保证数据的取值在有效的范围内,要求由用户根据实际情况,定义表中属性的取值范围。参照完整性用于确保相关联的表间的数据保持一致,要求“不引用不存在的实体”,即:不允许在一个关系中引用另一个关系中不存在的元组。例如:主表:学生(学号,姓名,性别,专业号,年龄)从表:专业(专业号,专业名)主表的“专业号(外键)”的取值只能为两种情况:若取非空值,则它必须是从表中存在的值;取空值(null),表明尚未给学生分配专业,null不等于0或空字符串
4、。6一个低一级范式的关系模式,通过分解可以转换为若干个高一级范式的关系模式,这种过程称为关系的规范化。关系的规范化主要目的是解决数据库中数据冗余、插入异常、删除异常和更新异常等数据存储问题。关系规范化的基本方法是逐步消除关系模式中不合适的数据依赖,使关系模式达到某种程度的分离,也就是说,不要将若干事物混在一起,而要彼此分开,用一个关系表示一事或一物,所以,规范化的过程也被认为是“单一化”的过程。从第一范式至BCNF,它们之间的关系是BCNF3NF2NF1NF。从第一范式到第二范式,消除了非主属性对码的部分函数依赖;从第二范式到第三范式,消除了非主属性对码的传递函数依赖;从第三范式到BCNF,消
5、除了关系中冗余的码。四、计算题1(1)ABCDE1233145662(2)ABCBCD123239456560(3)ABCD12394560(4)空(5)全外连接ABCD12394560789nullnull273左外连接ABCD12394560789null右外连接ABCD12394560null273五、设计题1 1:1的E-R图 1:n的E-R图 m:n的E-R图23公司(公司代码,公司名,地址)主键:公司代码部门(部门代码,部门名)主键:部门代码员工(员工代码,姓名,性别,年龄,职务)主键:员工代码商品(商品代码,商品名,单价,数量)主键:商品代码厂家(厂家代码,厂家名,地址)主键:厂
6、家代码拥有(公司代码,部门代码)主键:部门代码,外键:公司代码属于(部门代码,员工代码)主键:员工代码,外键:部门代码销售(员工代码,商品代码,销售量)主键:员工代码+商品代码,外键:员工代码、商品代码供货(商品代码,厂家代码)主键:商品代码,外键:厂家代码因商品和供货表有相同的主键,合并为:商品(商品代码,商品名,单价,数量,厂家代码),主键:商品代码,外键:厂家代码4(1)基本的函数依赖有:(商店编号+商品编号)部门编号,(商店编号+部门编号)负责人,(商店编号+商品编号)数量(2)由题意,上面的函数依赖可知商店编号是主属性,商品编号也是主属性,由这两个属性,可以确定关系元组的所有属性,所
7、以R的候选码是:商店编号+商品编号(3)R(商店编号,商品编号,数量,部门编号,负责人)最高已达到2NF。因为负责人是码的传递依赖。(4)要达到3NF,必须消除非主属性对码的传递依赖。对R分解后的两个模式如下:R1(商店编号,商品编号,数量,部门编号)R2(部门编号,负责人)第2章 SQL Server 2012基础【课后习题】一、填空题1一个实例2SQL Server配置管理器3对象资源管理器4Windows身份验证 混合模式验证5Windows服务 配置管理器6远程 本地7Shared Memory8TCP/IP二、简答题1对象资源管理器窗口用于管理数据库中的所有对象,在该窗口中,可以完成
8、注册、启动和停止服务器,配置服务器属性,创建数据库以及表、视图、存储过程等数据库对象,生成Transact-SQL对象以创建脚本、创建登录账户、管理数据库对象权限等,配置和管理复制,监视服务器活动,查看系统日志等操作。2该窗口用于编写和运行Transact-SQL脚本。它既可以在连接模式下工作,也可以在断开模式下工作。SQL Server 2012的“查询编辑器”支持彩色代码关键字,可视化地显示语法错误,允许开发人员运行和诊断代码等。3使用SQL Server Profiler工具可以对Microsoft SQL Server 2012系统的运行过程像摄像机一样进行摄录。SQL Server
9、Profiler是用于从服务器中捕获SQL Server 2012事件的工具。这些事件可以是连接服务器、登录系统、执行Transact-SQL语句等操作。这些事件被保存在一个跟踪文件中,以便日后对该文件进行分析或用来重新执行指定的系列步骤,从而有效地发现系统中性能比较差的查询语句等相关问题。第3章 数据库的创建与管理【课后习题】一、填空题1Master数据库 Model数据库 Msdb数据库 Tempdb数据库 Resource数据库2主数据文件 次数据文件 事务日志文件3可恢复所有未完成的事务,保证数据库操作的一致性和完整性4CREATE DATABASE5ALTER DATABASE6DR
10、OP DATABASE7sp_helpdb8为空 删除文件组中的文件9主10备份二、选择题1-5 ADADD6-7 DB三、判断题1-5 FFTTF6-9 FFFT【课外实践】任务1:create database testdbon primary( name=td1, filename=e:sqltd1.mdf, size=5, maxsize=20, filegrowth=10% ),( name=td2, filename=e:sqltd2.ndf, size=10, maxsize=30, filegrowth=2 ),filegroup user1( name=td3, filena
11、me=e:sqltd3.ndf, size=5, maxsize=unlimited, filegrowth=2 )log on( name=tlog, filename= e:sqltlog.ldf, size=4, maxsize=unlimited, filegrowth=20% )任务2:1.alter database testdbadd filegroup u32.alter database testdb modify filegroup u3 name=u23.alter database testdb modify file(name=td2, size=10, maxsiz
12、e=50, filegrowth=15%)4.alter database testdb modify name=gldb 第4章 数据表的创建与管理【课后习题】一、填空题1主键约束 唯一性约束 外键约束 检查约束 非空约束 默认值约束2单个列定义 所有列定义 修改表的方式3一 多 空 非空4相应的约束5外键 T26空7修改 删除8域9参照10identity二、选择题1-5 BBDAC三、判断题1-5 FTFTF6-10 FFTFT第5章 数据查询【课后习题】一、填空题1SELECT2WHERE3连接4分组5排序6Transact-SQL7DISTINCT8HAVING9BETWEENAND
13、10LIKE11ANSI语法 SQL Server语法12比较13ANY ALL IN二、选择题1-3 DDA三、判断题1-5 TFTFF6-7 FF【课外实践】任务1:1select 课程名, 授课教师, 开课学期from kcwhere 开课学期=22select 姓名,联系电话, 专业名, 性别from xsqkwhere 专业名=信息安全 and 性别=03select 学号, 课程号, 成绩from xs_kcwhere 成绩=904select 学号, 课程号, 成绩from xs_kcwhere 成绩=90 or 成绩605select 学号, 姓名, 出生日期from xsqk
14、where 出生日期 not between 1995-11-01 and 1996-2-296select *from xsqkwhere 姓名 like 陈_7select *from xsqkwhere 学号 like %8%8select *from xsqkwhere 联系电话 like _69%9select *from kcwhere 开课学期 in (1, 3, 5)10select 学号, 姓名, 出生日期from xsqkorder by 出生日期任务2:1select 开课学期, sum(学分) as 每学期的总学分from kcgroup by 开课学期2select
15、学号, count(*) as 每个学生选修的课程门数from xs_kcgroup by 学号3select 学号, avg(成绩) as 学生的平均分from xs_kcgroup by 学号4select 学号, avg(成绩) as 学生的平均分from xs_kcgroup by 学号having avg(成绩) between 70 and 805select 学号, 课程号, 成绩into temp_kcfrom xs_kcorder by 课程号, 成绩 desc6select max(成绩) as 101课程的最高分, min(成绩) as 101课程的最低分from xs_
16、kcwhere 课程号=1017select 开课学期, count(*) as 每学期开设的课程门数from kcgroup by 开课学期8select 专业名, count(专业名) as 各专业人数from xsqkgroup by 专业名任务3:1select 学号, 课程名, 授课教师, 开课学期, 成绩from kc, xs_kcwhere kc.学号=xs_kc.学号 and 成绩602select xsqk.学号, 姓名, kc.课程号, 课程名, 成绩from xsqk, kc, xs_kcwhere xsqk.学号=xs_kc.学号 and kc.课程号=xs_kc.课程
17、号 and 课程名=网页设计任务4:1.select 学号, 姓名, 联系电话from xsqkwhere 学号 in(select 学号from xs_kcwhere 课程号=103 and 成绩=60 )=23select *from xs_kc awhere 成绩=(select max(成绩)from xs_kc bwhere a.课程号=b.课程号)4select *from xs_kc awhere 成绩=(select min(成绩)from xs_kc bwhere a.学号=b.学号)5select distinct a.课程号, 人数=(select count(学号) f
18、rom xs_kc b where b.课程号=a.课程号)from xs_kc aorder by a.课程号 asc第6章 视图与索引【课后习题】一、填空题1WITH ENCRYPTION2sp_helptext3CREATE VIEW4基表5聚集索引 非聚集索引 唯一索引 复合索引 全文索引 XML索引6创建表7主键 唯一8查询二、选择题1-5 DDAAC6 B三、判断题1-5 TFFFF6-10 FFFTT【课外实践】任务1:USE xscjGOCREATE VIEW v_开课信息ASSELECT 课程号,课程名,开课学期,学时FROM kcWHERE 开课学期=3任务2:USE xs
19、cjGOCREATE VIEW v_选课信息ASSELECT 姓名,课程名FROM xsqk,kc,xs_kcWHERE xsqk.学号=xs_kc.学号 AND kc.课程号=xs_kc.课程号 AND 专业名=多媒体技术任务3:CREATE INDEX IX_课程名ON KC(课程名)第7章 规则与默认值【课后习题】一、填空题1对象2CREATE RULE3DROP RULE4DEFAULT5sp_bindefault二、选择题1-3 CBD三、判断题1-5 FTTTF6-8 TTF【课外实践】任务1:USE xscjGOCREATE RULE xs_ruleAS学分=0 AND 学分20
20、if n0print 年龄大于20的学生人数有:+cast(n as varchar(5)elseprint 没有年龄大于20的学生任务4:declare sum intset sum=(select sum(学分) from xs_kc)while sum=55 and 成绩60)godeclare kch char(3)select kch=103exec p2 kchgoselect * from xs_kc where 课程号=kch任务3:create proc p3xh char(10), xm varchar(10) output, xb bit output, zym varc
21、har(20) output, szx varchar(20) outputasselect xm=姓名, xb=性别, zym=专业名, szx=所在系from xsqkwhere 学号=xhgodeclare xh char(10), xm varchar(10), xb bit, zym varchar(20), szx varchar(20)select xh=2012130101exec p3 xh, xm output, xb output, zym output, szx outputprint 学号为+xh+的信息如下:print print 姓 名:+xmprint 性 别:
22、+convert(varchar(2),xb)print 专业名:+zymprint 所在系:+szx任务4:create trigger t4on kcfor insertasprint 插入成功!任务5:create trigger t5on kcfor updateasupdate xs_kc set 课程号=inserted.课程号where 课程号=deleted.课程号任务6:create trigger t6on xsqkfor deleteasdeclare xh char(10)select xh=学号 from deletedprint 准备删除xs_kc表+xh+学生的成
23、绩信息delete xs_kc where 学号=xhprint 已经删除xs_kc表+xh+学生的成绩信息第10章 SQL Server 2012安全管理【课后习题】一、填空题1Windows验证 混合模式验证2sa3操作数据库 数据库4dbo guest sys5服务器角色 数据库角色6固定服务器角色7八 sysadmin8预定义的数据库角色 用户定义的标准角色 用户定义的应用程序角色9对象权限 语句权限 隐式权限10Grant Revoke Deny二、简答题1sysadmin角色为需要完全控制整个SQL Server和安装的数据库的用户而设计,其成员能在SQL Server系统中执行任
24、何任务。所以win_user应添加到sysadmin角色中。2db_owner角色用于需要完全控制数据库的所有方面的用户,所以ST_su应该添加到db_owner角色中第11章 SQL Server 2012综合应用实例【课后习题】一、填空题1客户端/服务器结构2Connection类 Command类 DataReader类3数据集二、选择题1-4 BBBB二、简答题1CLR,运行阶段通用语言,是一种管理代码执行情况的环境。MSIL,微软中间语言,这种语言以简写方式表示所有代码。Metadata,元数据,它们是关于应用程序的描述性信息,指出应用程序能做什么,归属于哪里等。2C/S结构:Cli
25、ent/Server结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。C/S结构的界面和操作简单丰富,系统具有较强的事务处理能力,安全性能可以很容易保证,实现多层认证也不难,且响应速度快。B/S结构:Browser/Server结构,即浏览器和服务器结构,是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Netscape Navi
26、gator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server同数据库进行数据交互。3通过ADO.NET连接数据库主要是使用ADO.NET中的5个类。(1)数据库连接类,即Connection类。如果连接SQL Server数据库,则使用SqlConnection类。在使用SqlConnection类时要引用一个System.Data.SqlClient的名称空间。(2)数据库命令类,即Command类。如果连接SQL Server数据库,则使用SqlCommand类。数据库命令类主要用于执行对数据库的操作,比如
27、增加、修改、删除和查询等操作。(3)数据库读取类,即DataReader类。如果连接SQL Server数据库,则使用SqlDataReader类。数据库读取类提供了一种只读的、只向前的数据访问方法,因此在访问比较复杂的数据,或者只是想显示某些数据时再适合不过了。它提供了一种非常有效的数据查看模式,还是一种比较节约服务器资源的选择。数据库读取类只有数据库的连接处于打开状态时才能使用,当数据库关闭时数据库读取类中就不能够再取值了。(4)数据集,即DataSet类。数据集相当于一个虚拟数据库,每一个数据集中包括了多张数据表。即使数据库的连接处于断开状态,还是可以从数据集中继续存取记录,只是数据是存放在数据集中的,并没有存放在数据库中。(5)数据适配器类,即DataAdapter类。如果连接SQL Server数据库,则使用SqlDataAdapter类。数据适配器经常和数据集一起使用,通过数据适配器可以把数据库中的数据存放到数据集中,数据适配器可以说是数据集和数据库之间的一个桥梁。【精品文档】