sqlserver2000数据库应用教程-课后习题答案_第1页
sqlserver2000数据库应用教程-课后习题答案_第2页
sqlserver2000数据库应用教程-课后习题答案_第3页
sqlserver2000数据库应用教程-课后习题答案_第4页
sqlserver2000数据库应用教程-课后习题答案_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第 1 章 数据库基础练习题一、单项选择题1C 2A 3C 4D 5D6B 7A 8B 9B 10D11C 12A 13C 14B 15A16B 17A 18D 19B 20B21A; D 22A 23C 24D 25B26B 27B 28D 29B 30B二、填空题1概念;数据2属性3码4一对一联系;一对多(或多对一)联系;多对多联系5候选码6候选码7关系名(属性 1,属性 2,属性 n)8关系数据结构;关系操作集合;关系完整性约束9实体;参照;用户定义的;实体;参照10空值11需求分析阶段;概念结构设计阶段;逻辑结构设计阶段;物理结构设计阶段;数据库实施阶段;数据库运行和维护阶段12准确了解并分析用户对系统的要求,尤其是用户的信息要求、处理要求、安全性与完整性要求,确定所要开发的应用系统的目标,产生用户和设计者都能接受的需求说明书,做为下一步数据库概念结构设计的依据。13将需求分析得到的用户需求抽象为信息结构即概念模型。14将概念结构进一步转化为某一 DBMS 支持的数据模型,并对其进行优化。15为逻辑数据模型选取一个最适合应用环境的物理结构,包括数据库在物理设备上的存储结构和存取方法。三、指出以下各缩写的英文意思和中文意思1 DB:Database2 DBMS:Database Management System3 RDBMS:4 DBS:Database System25 DBA:Database Administrator6 NF:Normal Form7 DDL:Data Definition Language四、按题目要求回答问题1答:2答:N11N公司编号号公司名公司姓名地址职工编号职工性别聘期XIAOSHOU聘用隶属仓库地址仓库编号 仓库名工资XIAOSHOU参加代表团住所团编号 地区成员运动员编号 年龄姓名 性别1N比赛类别主管类别编号 类别名称属于比赛项目项目编号 级别项目名称1N比赛时间 得分N M33答:(1)关系R是2NF。因为R的候选码为课程名,而课程名教师名,教师名教师地址,所以课程名教师地址,即存在非主属性教师地址对候选码课程名的传递函数依赖,因此R不是3NF。又因为不存在非主属性对候选码的部分函数依赖,所以R是2NF。(2)关系R存在删除异常。当删除某门课程时会删除不该删除的教师的有关信息。(3)分解为高一级范式如下:R1课程名 教师名数据库 刘辉程序设计基础 赵兰软件工程 陈信计算机基础 刘辉R2教师名 教师地址刘辉 Add1赵兰 Add2陈信 Add1分解后,若删除课程数据时,仅对关系R1操作,教师地址信息在关系R2中仍然保留,不会丢失教师的信息。4答:(1)R不属于3NF,它是2NF。(2)因为R的候选码为职工号和职工名,而:职工号单位号,单位号单位名,所以 职工号单位名,即存在非主属性“单位名”对候选码“职工号”的传递函数依赖。因此不是3NF。规范化后的关系子模式为如下所示的关系R1与R2。R1职工号 职工名 年龄 性别 单位号01 赵高 20 男 D302 高军 25 男 D103 董林 38 男 D304 林梅 25 女 D3R2单位号 单位名D3 计算机4D1 土木工程5答:(1)关系Stock是1NF,分析如下: 关系Stock的码为(counter,goods) ,counter、goods为主属性,price为非主属性。 存在的函数依赖有:(counter,goods)price goodsprice 因此可以看出,非主属性price不完全函数依赖于码,不符合2NF的定义。 得出结论:关系Stock是1NF(2)存在异常: 删除异常:例如,如果删除柜台2的元组,则丢失了货物名称Envelop及其价格1。 插入异常:例如,如果知道了商品Lamp的价格20,则不能马上将该商品插入到Stock中,直到有一个柜台进了该货物才行。(3)规范化:将以上关系分解为两个关系如下。关系Counter-Goods 关系Goods-PriceCounter Goods1 Pen1 Ink2 Envelop3 Bag3 pen第 2 章 SQL Server 简介练习题一、单项选择题1B 2C 3D 4B 5C6D 7C 8C 9B 10A11B 12B二、简答题1答:Goods PricePen 55Ink 4Envelop 1Bag 405客户-服务器结构把整个任务划分为客户机上的任务和服务器上的任务。客户机上的任务只要有: 建立和断开与服务器的连接。 提交数据访问请求。 等待服务通告、接受请求结果或错误。 处理数据库访问结果或错误、包括重发请求和终止请求。 提供应用程序的友好用户界面。 数据输入输出及验证。服务器上的任务主要有: 为多用户管理一个独立的数据库。 管理和处理接收到的数据访问请求,包括管理请求队列、管理缓存、响应服务、管理结果和通知服务完成。 管理用户帐号、控制数据库访问权限和其他安全性。 维护数据库,包括数据库备份和恢复。保证数据库数据的完整或为客户提供完整性控制手段。2答:(1)两层结构在两层结构中,SQL Server 2000 安装在一个中心服务器上,数据库存储在该服务器上,该服务器称为数据库服务器,可以被多台客户机访问。众多的客户机通过网络直接访问数据库服务器。客户机运行处理业务的程序和显示处理结果的程序。两层结构比较适合于用户量较少的情况,当用户量较大时,数据库服务器的性能会显著下降。(2)三层结构在三层结构中引入了一层应用服务器。客户机只运行向应用服务器发送请求和显示请求结果的程序,客户机没有处理业务的程序,应用服务器运行处理业务的程序,多个客户机可以同时访问应用服务器,应用服务器负责访问数据库服务器,并取回处理结果,将结果返回给客户机。三层结构适用于客户量较大的情况。3答:SQL Server 2000 的四个系统数据库是 master、model、msdb 和 tempdb 数据库。(1)master 数据库是 SQL Server 系统最重要的数据库,它记录了 SQL Server 系统的所有系统信息,包括所有的登录帐户信息、系统配置信息、SQL Server 的初始化信息和其它系统及用户数据库的相关信息。(2)model 数据库是所有用户数据库和 tempdb 数据库的模板数据库,它含有master 数据库所有系统表的子集,这些系统表是每个用户定义数据库所需要的。(3)msdb 数据库是代理服务数据库,用于为调度警报、作业和记录操作员的信息提供存储空间。(4)tempdb 数据库用于为所有的临时表、临时存储过程提供存储空间,它还用于任何其它的临时存储要求,例如存储 SQL Server 生成的工作表。tempdb 数据库是全局资源,所有连接到系统的用户的临时表和存储过程都存储在该数据库中。tempdb 数据库在 SQL Server 每次启动时都重新创建,因此该数据库在系统启动时总是干净的,临时表和存储6过程在连接断开时自动除去。4答:SQL Server 2000 包含的对象如:表、视图、存储过程、索引、触发器。(1)表:在数据库中,所有的数据存放在表中,表由行(记录)和列(字段)组成,一个数据库可以包含多个表。(2)视图:视图是由查询数据表产生的结果,是一种虚构的表。视图把表中的部分数据映射出来供用户使用,这样可以防止所有的用户直接对表进行操作而导致系统的性能和安全性的下降。(3)存储过程:一个存储过程实际上是由一组 SQL 语句组成的完成特定功能的程序。存储过程在服务器端被编译后可以反复执行。(4)索引:索引是对表中的一个或多个列的值进行排序的结构。可以利用索引提高对数据库表中的特定信息的访问速度。(5)触发器:触发器由一组 SQL 语句组成,当对表或视图进行某种操作(添加、删除或修改)时,这组命令会在一定情况下自动执行。三、上机练习题(略)第 3 章 服务器与客户端配置练习题一、填空题1服务器组,服务器组2使用 Windows 身份验证,使用 SQL Server 身份验证3start4连接5通讯6命名管道,TCP/IP7Net-Library8DSN 二、选择题1C 2C 3A 4B 5C三、判断题1A 2B 3B 4A 5A四、问答题1答:7使用 net start 命令启动 Windows 的服务;使用 net pause 命令暂停 Windows 服务;使用 net continue 命令继续被暂停的 Windows 服务;使用 net stop 命令停止 Windows 服务。2答:在企业管理器中右键单击指定的服务器,在弹出菜单中选择“属性” ,打开“SQL Server 属性(配置) ”对话框。在“常规”选项卡中,选中“自动启动 SQL Server”复选框,就可以实现在每次计算机启动时自动运行 SQL Server。3答:要在客户端访问远程的 SQL Server 服务器,必须在客户计算机和服务器计算机上安装一对匹配的 SQL Server Net-Library 以支持特定的网络协议。Net-Library 是一种 SQL Server 通讯组件,它将 SQL Server 客户端软件和数据库引擎与网络 API 隔离。SQL Server 客户端软件和数据库引擎向 Net-Library 发送常规网络请求,Net-Library 将请求转换为用户所选协议的特定网络命令。Net-Library 支持多种网络协议,包括命名管道、TCP/IP、多协议、 NWLink IPX/SPX、AppleTalk、Banyan Vines 和 VIA 等。在安装 SQL Server 时,命名管道和TCP/IP 被默认启用。4答:SQL Server 2000 客户端配置完成后,在企业管理器中测试配置是否有效。方法很简单,只要新建一个 SQL Server 注册,在注册的过程中,选择远端的服务器作为数据库服务器。如果能够注册成功,则说明客户端和服务器之间的通信是畅通的,客户端配置成功。此时在企业管理器中,可以查看和管理远端服务器。五、上机练习题(略)第 4 章 Transact-SQL 语言基础练习题一、选择题1B;C 2C;D;F;G;H 3B 4A;D 5D6A 7B;D 8D 9B 10A;B;C二、填空题1.a.b.d.c2.常规;分隔;双引号;方括号3在其中定义局部变量的批处理、存储过程或语句块的内部;任何程序;4 ; 85DECLARE Myvar CHAR(5) ;SET Myvar=Hello6NULL7%e% aaa ;%e%aaa8FALSE;TRUE9math0 AND math0)8答:ALTER TABLE 工资 ADD CONSTRAINT dftsalary1 DEFAULT 0 FOR 基本工资ALTER TABLE 工资 ADD CONSTRAINT dftsalary2 DEFAULT 0 FOR 奖金9答:ALTER TABLE 职工基本信息 ADD CONSTRAINT dftsex DEFAULT 男 FOR 性别10答:ALTER TABLE 职工基本信息 ADD CONSTRAINT fk_1FOREIGN KEY (部门编号) REFERENCES 部门信息(部门编号)ALTER TABLE 工资 ADD CONSTRAINT fk_2 FOREIGN KEY (职工编号)17REFERENCES 职工基本信息(职工编号)11答:ALTER TABLE 职工基本信息 DROP CONSTRAINT fk_1ALTER TABLE 工资 DROP CONSTRAINT fk_212答:CREATE RULE bonus_rule AS range213-46-891530答:SELECT authors.city FROM authorsUNIONSELECT publishers.city FROM publishersORDER BY 1(四)索引1答:CREATE UNIQUE CLUSTEREDINDEX name_indON au(au_lname,au_fname)2 (略)3答:DROP INDEX _ind(五)视图1答:CREATE VIEW view1(姓,名,书名,电话,地址) AS21SELECT authors.au_lname , authors.au_fname, titles.title , authors.phone , authors.address FROM authors, titles,titleauthor WHERE authors.au_id = titleauthor.au_idAND titleauthor.title_id = titles.title_idAND authors.state = CA2答:SELECT * FROM view13答:SELECT * FROM view1WHERE 姓 LIKE M% OR 名 LIKE M%4答:ALTER VIEW view1(姓,名,书名) ASSELECT authors.au_lname , authors.au_fname, titles.title FROM authors, titles,titleauthor WHERE authors.au_id = titleauthor.au_idAND titleauthor.title_id = titles.title_id5答:DROP VIEW view1第 7 章 存储过程和触发器管理练习题一、填空题1服务器;客户2系统存储过程;用户存储过程;临时存储过程;远程存储过程;扩展存储过程3局部临时存储过程;全局临时存储过程4;5输入参数;输出参数6RETURN7ALTER PROCEDURE8事件;命令调用7INSTEAD OF 触发器;AFTER 触发器8原子性;一致性;隔离性;持久性9显式事务;隐式事务10ROLLBACK TRANSACTION22二、选择题1B 2B 3D 4C 5B6B 7C三、判断题1A 2B 3A 4A 5B四、问答题1答使用 SQL Server 中的存储过程而不使用存储在客户计算机本地的 Transact-SQL 程序的优势有:(1)允许模块化程序设计只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。(2)允许更快执行如果某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行 Transact-SQL 语句时,都要从客户端重复发送,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化。(3)减少网络流量例如,一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。(4)可作为安全机制使用例如,即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。2答触发器是一种特殊类型的存储过程,它在指定表中的数据发生变化时自动执行。触发器与普通存储过程的不同之处在于:触发器的执行是由事件触发的,而普通存储过程是由命令调用执行的。3答触发器的主要优点如下: 触发器是自动执行的,不需要管理员手动维护数据库的数据完整性。 触发器可以对数据库中的相关表进行级联更改。例如,可以在表“院系”中定义触发器,当用户删除表“院系”中的记录时,触发器将删除表“学生”中对应院系的记录。 触发器可以限制向表中插入无效的数据,这一点与 CHECK 约束的功能相似。但在 CHECK 约束中不能使用到其他表中的字段,而在触发器中则没有此限制。23例如,可以在表“学生”中定义触发器,限制插入的记录其“院系编号”字段值必须在表“院系”中存在对应的记录。五、上机练习题(一)存储过程1答:USE pubs GOIF EXISTS (SELECT name FROM sysobjects WHERE name =avg_price AND type = P)DROP PROCEDURE avg_priceGOCREATE PROC avg_price avgprice FLOAT OUTPUTASSELECT avgprice=AVG(price) FROM titles WHERE PRICE IS NOT NULL2答:DECLARE avgprice FLOATEXEC avg_price avgprice OUTPUTPRINT avgprice3答:USE pubs GOIF EXISTS (SELECT name FROM sysobjects WHERE name =max_price AND type = P)DROP PROCEDURE max_priceGOCREATE PROC max_price type char(12),maxprice FLOAT OUTPUTASSELECT maxprice=MAX(price) FROM titles WHERE type=type4答:DECLARE maxprice FLOAT,type CHAR(12)EXEC max_price mod_cook, maxprice OUTPUTPRINT maxprice5答:DROP PROCEDURE avg_price,max_price24(二)触发器1答:(1)创建触发器语句USE 学生信息IF EXISTS(SELECT name FROM sysobjects WHERE name = TRG1 AND type = TR)DROP TRIGGER TRG1GOCREATE TRIGGER TRG1 ON 专业FOR INSERTASSELECT * FROM inserted(2)测试语句INSERT INTO 专业 VALUES(111,新专业名称,001)(3)测试结果在“网格”选项卡上显示:在“消息”选项卡上显示:(所影响的行数为 1 行)2答:(1)创建触发器语句USE 学生信息IF EXISTS (SELECT name FROM sysobjects WHERE name = TRG2 AND type = TR)DROP TRIGGER TRG2GOCREATE TRIGGER TRG2 ON 专业FOR DELETEASRAISERROR (不允许删除专业表中的记录,16,1)SELECT * FROM deletedROLLBACK TRANSACTION -回滚事务(2)测试语句DELETE FROM 专业 WHERE 专业编号=111(3)测试结果在“消息”选项卡上显示:服务器: 消息 50000,级别 16,状态 1,过程 TRG2,行 4不允许删除专业表中的记录25(所影响的行数为 1 行)在“网格”选项卡上显示:3答:(1)创建触发器语句USE 学生信息IF EXISTS (SELECT name FROM sysobjects WHERE name = TRG3 AND type = TR)DROP TRIGGER TRG3GOCREATE TRIGGER TRG3 ON 专业FOR UPDATEASIF UPDATE(专业名称)BEGINRAISERROR(不能修改专业名称,15,1)ROLLBACK TRANSACTIONEND(2)测试语句UPDATE 专业 SET 专业名称=新专业名称 B WHERE 专业编号=111(3)测试结果在“消息”选项卡上显示:服务器: 消息 50000,级别 15,状态 1,过程 TRG3,行 6不能修改专业名称4答:(1)创建触发器语句USE 学生信息IF EXISTS (SELECT name FROM sysobjects WHERE name = TRG4 AND type = TR)DROP TRIGGER TRG4GOCREATE TRIGGER TRG4ON 学生基本信息FOR UPDATEAS IF UPDATE(学号) OR UPDATE (姓名) BEGINRAISERROR(注意,不允许修改学号或姓名,15,1)ROLLBACK TRANSACTION26END(2)测试语句 UPDATE 学生基本信息 SET 学号=990020211 WHERE 学号=990020210 UPDATE 学生基本信息 SET 姓名=张三 WHERE 学号=990020210(3)测试结果服务器: 消息 50000,级别 15,状态 1,过程 TRG4,行 7注意,不允许修改学号或姓名5答:(1)创建视图语句USE 学生信息GOCREATE VIEW view1 ASSELECT 学号,姓名,性别,出生日期FROM 学生基本信息WHERE 班级=道桥 9902 AND 专业编号=002(2)创建触发器语句USE 学生信息IF EXISTS (SELECT name FROM sysobjects WHERE name = TRG5 AND type = TR)DROP TRIGGER TRG5GOCREATE TRIGGER TRG5ON view1INSTEAD OF INSERTASDECLARE 学号 nchar(9),姓名 nchar(5),性别 nchar(1),班级 nchar(7),出生日期 datetime,专业编号 nchar(3)SET 学号=(SELECT 学号 FROM INSERTED)SET 姓名=(SELECT 姓名 FROM INSERTED)SET 性别=(SELECT 性别 FROM INSERTED)SET 出生日期=(SELECT 出生日期 FROM INSERTED) SET 班级=道桥 9902SET 专业编号=002INSERT 学生基本信息 VALUES (学号,姓名,性别,班级,出生日期,专业编号)27(3)测试语句USE 学生信息 INSERT view1 VALUES(0509,李兰,女,1981-03-14)(4)检查结果打开“学生基本信息”表,观察其学号为“0509”的记录内容,可以看出,虽然在INSERT 语句中没有指定班级和专业编号,但在该记录上已经自动添加了班级和专业编号,说明 INSERT OF 触发器 TRG5 在执行 INSERT 语句时被触发执行了。6答:DROP TRIGGER TRG1,TRG2,TRG3,TRG4,TRG5第 8 章 游标管理练习题一、填空题1Transact-SQL 游标;应用编程接口(API)服务器游标;客户端游标2静态游标;动态游标;只进游标;键集驱动游标3OPEN4SCROLL5FETCH6FETCH_STATUS7CLOSE8DEALLOCATE二、选择题1A 2C 3C 4D 5D6B 三、判断题1B 2A 3B 4B 5A四、问答题1答用数据库语言来描述,游标是映射结果集并在结果集内的单个行上建立一个位置的实体。有了游标,用户就可以访问结果集中的任意一行数据了。在将游标放置到某行之后,可以在该行或从该位置开始的行块上执行操作。最常见的操作是提取(检索)当前行或行块。游标有以下主要的功能: 允许定位在结果集的特定行。28 从结果集的当前位置检索一行或多行。 支持对结果集中当前位置的行进行数据修改。 如果其他用户需要对显示在结果集中的数据库数据进行修改,游标可以提供不同级别的可见性支持。 提供脚本、存储过程和触发器中使用的访问结果集中的数据的 Transact-SQL 语句。2答SQL Server 支持 4 种 API 服务器游标类型,它们是静态游标、动态游标、只进游标和键集驱动游标。(1)静态游标:静态游标的完整结果集在游标打开时建立在 tempdb 数据库中,它总是按照游标打开时的原样显示结果集。静态游标打开以后,数据库中任何影响结果集的变化都不会体现在游标中。也就是说,在静态游标中不显示 UPDATE、INSERT 或者DELETE 操作对数据的影响,除非关闭游标并重新打开。静态游标始终是只读的。(2)动态游标:当滚动动态游标时,动态游标反映结果集中所做的所有更改。结果集中的行数据值、顺序和成员在每次提取时都会改变。所有用户做的全部UPDATE、INSERT 和 DELETE 语句均通过游标可见。(3)只进游标:只进游标不支持滚动,它只支持游标从头到尾顺序提取。行只在从数据库中提取出来后才能检索。对所有影响结果集中行的 INSERT、UPDATE 和DELETE 语句,其效果在这些行从游标中提取时是可见的。但是,因为游标不能向后滚动,所以在行提取后对行所做的更改对游标是不可见的。(4)键集驱动游标:键集驱动游标由一套被称为键集的唯一标识符(键)控制。键由以唯一方式在结果集中标识行的列构成。键集是游标打开时来自所有适合 SELECT 语句的行中的一系列键值。键集驱动游标的键集在游标打开时建立在 tempdb 中。对非键集列中的数据值所做的更改,在用户滚动游标时是可见的。在游标外对数据库所做的插入在游标内是不可见的,除非关闭并重新打开游标。使用 API 函数,如ODBC SQLSetPos 函数,通过游标所做的插入在游标的末尾可见。如果试图提取一个在打开游标后被删除的行,则FETCH_STATUS 将返回一个“行缺少”状态。3答首先声明一个游标,然后打开游标,从游标中读取数据,使用游标函数;游标使用完成后,关闭游标;如果不再继续使用,则删除游标。五、上机练习题1.答:USE pubsDECLARE MyCursor1 SCROLL CURSORFOR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论