ImageVerifierCode 换一换
格式:DOC , 页数:34 ,大小:127.01KB ,
资源ID:10820383      下载积分:12 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/10820383.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(SQL-Server2000数据库程序设计题库.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

SQL-Server2000数据库程序设计题库.doc

1、SQL Server2000数据库程序设计题库 1你是一个数据公司的数据库开发人员,你建立了一个用来存储了15个不同的高中体育成绩的统计数据库,50个体育信息公司将把这些信息发布在各自的Web站点上,每个公司站点的数据排列和使用这些统计数据的格式是不同的。你要将数据打包传送给公司,你将怎么做? a.       使用包含FOR XML选项的SELECT语句提取数据。 b.       对SELECT语句返回的数据使用sp_makewebtask系统存储过程来生成HTML数据。 c.       C.对数据库输出的数据建立数据转换服务包,形成使用TAB界定符的文本文件。 d.    

2、  建立一个使用SEL_DMO的应用程序来提取数据库中的数据,并将这些数据转换到标准EDI(electronic data interchange)文件。 答案: A. 解释: 这些数据将会在公司的网站发布。 XML是可扩展标示语言,包含结构信息的文档。 可扩展标示语言适合制作WEB文件。SQL 查询结果可以是XML文档。 直接执行查询或存储过程也可以生成XML文档。 使用带FOR XML的子句的SELECT 语句可以直接生成XML文档。在FOR XML子句中 XML的模式可以通过参数T RAW, AUTO, 或 EXPLICIT 来指定. 不正确的答案: B: sp_makewe

3、b 储存程序用来生成 HTML 格式文档而不是的标准记录集。 XML是比 HTML更复杂的格式的文档,在这种情形中XML更合适。 C:一个用制表符分隔的文件,可以在任何支持用制表符分隔的文件的电子表格(如 Microsoft Excel)中进行分析。然而,这个格式对网页是不适当的。 D: SQL- DMO 不能生成在网站分布的数据。 注意: SQL- DMO SQL 分布式管理对象 (SQL-DMO) 封装 Microsoft® SQL Server™ 2000 数据库中的对象。SQL-DMO 允许用支持自动化或 COM 的语言编写应用程序,以管理 SQL Server 安装的所有部

4、分。SQL-DMO 是 SQL Server 2000 中的 SQL Server 企业管理器所使用的应用程序接口 (API);因此使用 SQL-DMO 的应用程序可以执行 SQL Server 企业管理器执行的所有功能。 SQL-DMO 用于必须包含 SQL Server 管理的任何自动化或 COM 应用程序,例如: l         封装 SQL Server 作为自己的数据存储并想尽量减少用户的 SQL Server 管理任务的应用程序。 l         在程序本身并入了专门的管理逻辑的应用程序。 l         想在自己的用户界面中集成 SQL Server 管理任

5、务的应用程        2你是一个邮购公司的数据库开发人员,公司有两台使用SQL Server2000的计算机,分别为CORP1和CORP2。CORP1是一台联机事务处理服务器,CORP2存储销售历史数据。CORP2作为一台连接服务器已连接到CORP1上。销售部经理要求你建立一个购买软盘的客户的列表,这个列表将每个月产生一次邮购的奖品,软盘在数据库中的类别ID为21。 你必须从SalesHistory表中刷新这个信息,这个文件存储在CORP2的一个数据库上,你要从CORP1上执行这个查询,你将使用哪条脚本语句查询? A.  EXEC sp_addlinkedserver ‘CO

6、RP2’, ‘SQL Server’        GO        SELECT CustomerID FROM CORP2.Archive.dbo.SalesHistory        WHERE CategoryID = 21 B.   SELECT CustomerID FROM OPENROWSET (‘SQLOLEDB’, ‘CORP2’; ‘p*word’, ‘SELECT  CustomerID FROM Archive.dbo.SalesHistory WHERE CategoryID = 21’) C. SELECT CustomerID  FRO

7、M  CORP2.Archive.dbo.SalesHistory  WHERE  CategoryID = 21 D.   EXEC sp_addserver ‘CORP2’ GO SELECT CustomerID FROM CORP2.Archive.dbo.SalesHistory WHERE CategoryID = 21 答案: C. 解释:对于这种情况,只要一个简单的带WHERE子句 SELECT FROM语句即可,一般格式: SELECT CustomerID FROM SalesHistory   WHERE CategoryID = 21 但是Sal

8、esHistory表在另一台服务器上,并且已经建立了另一台服务器的连接,可以直接执行分布查询,必须使用对象的四部分名称:服务器、数据库、所有者和表名,即CORP2.Archive.dbo.SalesHistory。 注: sp_linkedserver 使用sp_linkedserver建立服务器连接, 语法为: sp_addlinkedserver [ @server = ] 'server' [ , [ @srvproduct = ] 'product_name' ] [ , [ @provider = ] 'provider_name' ] [ , [ @datasrc =

9、] 'data_source' ] [ , [ @location = ] 'location' ] [ , [ @provstr = ] 'provider_string' ] [ , [ @catalog = ] 'catalog' ] 不正确答案: A: 已建立服务器连接,不要再建立服务器连接 B: 对于已建立连接的服务器,一般不用OPENROWSET访问。当访问链接服务器中的表时,OPENROWSET访问方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。 D: sp_addserver是一个非法存储过程名 3你是Trey

10、 Research公司的一个数据库开发者。你设计了两个事务用来输入职员的相关数据到公司的数据库中。 一个事务插入职员名字和地址到数据库中,这个事务很重要。 另一个事务插入职员人口统计的其他数据项,这个事务不很重要。在访问高峰时,数据库管理人通知你数据库伺候器有时候会出现错误。每当发生错误时, 数据库伺候器随机地结束一个事务。 你一定保证当数据库伺候器结束一个事务时,它从不结束比较重要的事务。 你应该做什么? A.重要事务的DEADLOCK_PRIORITY级别设置低 B.不重要事务的DEADLOCK_PRIORITY级别设置低 C.增加一段条件代码,检查重要事务的服务器返回的错误代号是

11、否为1205,若是重新启动该事务 D.在事务的SQL操作语句中增加ROWLOCK优化提示 E.把重要事务的事务隔离级别设置为SERIALIZABLE 答案:B 解释:现在是一个死锁的问题,并且随机终止一个事务。 现在有两类事务:重要事务和不重要事务 问题要求当死锁的问题发生时,要终止不重要事务而重要事务一定不要终止。通过把不重要事务的DEADLOCK_PRIORITY级别设置低,当在两个事务间发生死锁时,不重要事务首先成为牺牲品,而重要事务没有被终止。 死锁: 当某组资源的两个或多个线程之间有循环相关性时,将发生死锁。 死锁是一种可能发生在任何多线程系统中的状态,而不

12、仅仅发生在关系数据库管理系统中。多线程系统中的一个线程可能获取一个或多个资源(如锁)。如果正获取的资源当前为另一线程所拥有,则第一个线程可能必须等待拥有线程释放目标资源。这时就说等待线程在那个特定资源上与拥有线程有相关性。 如果拥有线程需要获取另外一个资源,而该资源当前为等待线程所拥有,则这种情形将成为死锁:在事务提交或回滚之前两个线程都不能释放资源,而且它们因为正等待对方拥有的资源而不能提交或回滚事务。例如,运行事务 1 的线程 T1 具有 Supplier表上的排它锁。运行事务 2 的线程 T2 具有 Part表上的排它锁,并且之后需要 Supplier表上的锁。事务 2 无法获得这一锁

13、因为事务 1 已拥有它。事务 2 被阻塞,等待事务 1。然后,事务 1 需要 Part表的锁,但无法获得锁,因为事务 2 将它锁定了。事务在提交或回滚之前不能释放持有的锁。因为事务需要对方控制的锁才能继续操作,所以它们不能提交或回滚。 说明  死锁经常与正常阻塞混淆。当一个事务锁定了另一个事务需要的资源,第二个事务等待锁被释放。默认情况下,SQL Server 事务不会超时(除非设置了 LOCK_TIMEOUT)。第二个事务被阻塞,而不是被死锁。 在该插图中,对于 Part表锁资源,线程 T1 在线程 T2 上具有相关性。同样,对于 Supplier表锁资源,线程 T2 在线程 T1

14、 上具有相关性。因为这些相关性形成了一个循环,所以在线程 T1 和线程 T2 之间存在死锁。 不正确答案: A: 如果一个事务的优先级设置为低,当死锁发生时,它首先成为牺牲品;因为重要事务要保留,所以该事务的级别不能设置为低 C: 当一个事务的成为死锁的牺牲品时,服务器返回一个1205的错误代号;当重要事务杀死后,重启该事务,这样保证了该事务不会被终止,缺点是这个方法不是最有效的,并且会影响性能,最好为选择B D: ROWLOCK优化提示使用行级锁,而不使用粒度更粗的页级锁和表级锁 E: 事务准备接受不一致数据的级别称为隔离级别。隔离级别是一个事务必须与其它事务进行隔离的程度。较低的

15、隔离级别可以增加并发,但代价是降低数据的正确性。相反,较高的隔离级别可以确保数据的正确性,但可能对并发产生负面影响。应用程序要求的隔离级别确定了 SQL Server 使用的锁定行为。 注:隔离级别 当锁定用作并发控制机制时,它可以解决并发问题。这使所有事务得以在彼此完全隔离的环境中运行,但是任何时候都可以有多个正在运行的事务。 可串行性是通过运行一组并发事务达到的数据库状态,等同于这组事务按某种顺序连续执行时所达到的数据库状态。 SQL-92 隔离级别 尽管可串行性对于事务确保数据库中的数据在所有时间内的正确性相当重要,然而许多事务并不总是要求完全的隔离。例如,多个作者工作于

16、同一本书的不同章节。新章节可以在任意时候提交到项目中。但是,对于已经编辑过的章节,没有编辑人员的批准,作者不能对此章节进行任何更改。这样,尽管有未编辑的新章节,但编辑人员仍可以确保在任意时间该书籍项目的正确性。编辑人员可以查看以前编辑的章节以及最近提交的章节。 事务准备接受不一致数据的级别称为隔离级别。隔离级别是一个事务必须与其它事务进行隔离的程度。较低的隔离级别可以增加并发,但代价是降低数据的正确性。相反,较高的隔离级别可以确保数据的正确性,但可能对并发产生负面影响。应用程序要求的隔离级别确定了 SQL Server 使用的锁定行为。 SQL-92 定义了下列四种隔离级别,SQL Ser

17、ver 支持所有这些隔离级别: 未提交读(事务隔离的最低级别,仅可保证不读取物理损坏的数据)。 提交读(SQL Server 默认级别)。 可重复读。 可串行读(事务隔离的最高级别,事务之间完全隔离)。 如果事务在可串行读隔离级别上运行,则可以保证任何并发重叠事务均是串行的。 下面四种隔离级别允许不同类型的行为。 隔离级别 脏读 不可重复读取 幻像 未提交读 是 是 是 提交读 否 是 是 可重复读 否 否 是 可串行读 否 否 否 事务必须运行于可重复读或更高的隔离级别以防止丢失更新。当两个事务检索相同的行,然后

18、基于原检索的值对行进行更新时,会发生丢失更新。如果两个事务使用一个 UPDATE 语句更新行,并且不基于以前检索的值进行更新,则在默认的提交读隔离级别不会发生丢失更新。 4  你是公司的SQL Server 2000联机事务处理数据库的数据库开发人员。许多表有一百万或更多的行,所有的表都建立了一个聚集索引,经常存取的表另外还至少有一个非聚集索引,数据库服务器上有两个RAID阵列存储数据文件,你想设置表和索引以取得最佳的I/O性能。        你在每个RAID阵列上建立了一个文件组,下一步你将作什么? a.设置频繁的互相连接的表加入同一个文件组,设置经常存取的表和所有的属于这些表的索引

19、到另一个文件组。 b.设置频繁的互相连接的表加入同一个文件组,设置经常存取的表和所有的属于这些表的非簇索引到不同的文件组。 c.设置频繁的互相连接的表加入不同的文件组,设置经常存取的表和所有的属于这些表的非簇索引到不同的文件组。 d.设置频繁的互相连接的表加入不同的文件组群,设置经常存取的表和所有的属于这些表的非簇索引到同一个文件组。 答案: C. 解释: 把频繁访问的表和它的索引存放在不同磁盘阵列的文件组,可以提高数据库的性能。因为这样可以使不同的线程来访问表和非聚集索引。表和聚集索引不能分开存放到不同的文件组。把经常连接的表分开存储到不同磁盘阵列也能提高数据库的性能。另外,创建和

20、磁盘阵列数一样多的文件个数,使得每个阵列上有一个文件,这样也能提高性能。 日志文件和数据文件分开存放到不同的磁盘阵列上也能提高性能。 不正确答案   : A:经常连接表存放到同一个文件组不能提高性能。因为这样不能并行处理。另外只有非聚集索引才能和表分别存储到不同文件组。 B:经常连接表存放到同一个文件组不能提高性能。因为这样不能并行处理 D: 把表和非聚集索引存放到同一个文件组不能提高性能。因为这样不能并行处理 5你是公司的SQL Server2000数据库开发人员,你修改了数据库中用来建立销售部月报表的几个存储过程,存储过程中包含了从三个或更多表中提取数据的复杂查询,所有这些

21、表都至少有一个索引。用户报告说这些月报表比以前的版本的明显要慢,你要改进这些报表的性能,将怎么做? a.对创建每个存储过程的DDL的脚本,使用这个脚本作为工作负载进行索引优化。 b.在SQL Profiler中捕捉每个存储过程的执行信息,使用这个信息文件作为工作负载进行索引优化。 c.修改存储过程中引用表的索引统计信息。 d.在SQL查询分析器中执行每个存储过程,使用Show Execution Plan选项。 e.在SQL查询分析器中执行每个存储过程,使用Show Server Trace选项。 答案: E. 解释: 通过查看服务器跟踪来分析和优化存储过程。使用"显示服

22、务器跟踪"选项,可以显示查询对服务器到底有何影响,通过这些信息,来分析和优化存储过程。 Note: 查询窗口跟踪窗格 "显示服务器跟踪"命令提供了对信息的访问,此信息用于确定查询对服务器方的影响。 如果"显示服务器跟踪"命令在执行查询时启用,则该命令显示跟踪窗格,此窗格提供有关事件类、子类、整型数据、文本数据、数据库 ID、持续时间、启动时间、读、写以及 CPU 使用的信息。 索引优化向导 索引优化向导使您得以为 Microsoft®SQL Server™ 2000 数据库选择和创建优化的索引集和统计信息集,而不需要深入了解 SQL Server 的数据库结构、工作负荷或内部原理。

23、 为了生成适用的优化索引集建议,该向导需要工作负荷。工作负荷包含一个保存在文件或表中的 SQL 脚本或 SQL 事件探查器跟踪,其中有 SQL 批处理或远程过程调用 (RPC) 事件类以及 Event Class 和 Text数据列。 Incorrect answers: A:索引优化向导使用工作负载作为输入,存储过程的脚本不能作为其输入 SQL 语言主要有两种:一种是数据定义语言 (DDL),用于定义和管理 SQL 数据库中的所有对象;另一种是数据操作语言 (DML),用于选择、插入、更新和删除使用 DDL 定义的对象中的数据。Transact-SQL DDL 用于管理数据库、表和视

24、图等对象,每个对象类通常都包含 CREATE、ALTER 和 DROP 语句,如 CREATE TABLE、ALTER TABLE 和 DROP TABLE。 DDL不能索引优化向导的输入 B:索引优化可以提高存储过程的的性能,但是没有数据发生变化并且查询很复杂。最好还是通过查看服务器跟踪来发现问题。 C:选择合适的索引和工作负载是很复杂、耗时,对于中度复杂的数据库和负载也有可能出错。若想优化索引,最好使用索引优化向导。 D:执行计划能够提供一些线索,说明存储过程是怎样执行的。一个执行计划只是说明对一个特殊的查询查询优化器是怎样优化的。这些信息是有用的,它能用来优化查询的性能。然而执行

25、计划不是分析复杂查询的最好方法。 6你是一个国际进口商的数据库开发人员,你正在创建数据库,用来存储订购信息的,通过C/S模式的应用程序输入订购数据,每当输入一个新的定单,要分配唯一的一个定单号,定单号必须以递增的方式签发,平均每天有10000定单要输入。你创建了一个Orders表,包含OrderNumber列,接下来你应怎么做? A.      把该列的数据类型设为. uniqueidentifier B.      把该列的数据类型设为INT ,并设置具有IDENTITY属性 C.      把该列的数据类型设为INT ,并创建一个用户函数,该函数返回表中的最大定单号 D. 

26、   把该列的数据类型设为INT ,创建NextKey表,包含NextOrder(INT)列,再创建一个存储过程取出和更新NextKey表中的数据。 答案: B. 解释: 对任何表都可创建包含系统所生成序号值的一个标识符列,该序号值唯一标识表中的一行。例如,当在表中插入行时,标识符列可自动为应用程序产生唯一的客户收据号码。标识符列在其所定义的表中包含的数值通常是唯一的。这意味着在包含标识符列的其它表中可使用与之相同的数值进行标识。 一个表只能有一列定义为 IDENTITY 属性,而且该列必须以 decimal、int、numeric、smallint、bigint 或 tinyint

27、 数据类型定义。 可指定种子和增量值。二者的默认值均为 1。 标识符列不允许空值,也不能包含 DEFAULT 定义或对象。 在设置 DENTITY 属性后,可以使用 IDENTITYCOL 关键字在选择表中引用该列。 不正确答案: A: MS SQL Server 2000 在复制表时使用uniqueidentifier数据类型,来保证列值的全球唯一性。 使用 uniqueidentifier 数据 uniqueidentifier数据类型存储 16 字节的二进制值,该值的使用与全局唯一标识符 (GUID) 一样。GUID 是一个唯一的二进制数字;世界上的任何两台计算机都不会生成

28、重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络中,分配必须具有唯一性的标识符。 uniqueidentifier列的 GUID 值通常由以下方式获得: · 在 Transact-SQL 语句、批处理或脚本中调用NEWID函数。 · 在应用程序代码中,调用返回 GUID 值的应用程序 API 函数或方法。 Transact-SQL NEWID 函数以及应用程序 API 函数和方法从它们网卡上的标识数字以及 CPU 时钟的唯一数字生成新的 uniqueidentifier 值。每个网卡都有唯一的标识号。由 NEWID返回的 uniqueidentifier使

29、用服务器上的网卡生成。由应用程序 API 函数和方法返回的 uniqueidentifier使用客户机上的网卡生成。 一般不将 uniqueidentifier定义为常量,因为很难保证实际创建的 uniqueidentifier具有唯一性。指定 uniqueidentifier常量的方法有两种: 字符串格式 '6F9619FF-8B86-D011-B42D-00C04FC964FF'二进制格式 0xff19966f868b11d0b42d00c04fc964ff可以使用NEWID()函数作为该字段的默认值 C: 函数是由一个或多个 Transact-SQL 语句组成的子程序,可

30、用于封装代码以便重新使用。Microsoft® SQL Server™ 2000 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。 可使用 CREATE FUNCTION 语句创建、使用 ALTER FUNCTION 语句修改、以及使用 DROP FUNCTION 语句除去用户定义函数。每个完全合法的用户定义函数名 (database_name.owner_name.function_name) 必须唯一。 必须被授予 CREATE FUNCTION 权限才能创建、修改或除去用户定义函数。不是所有者的用户在 Transact-S

31、QL 语句中使用某个函数之前,必须先给此用户授予该函数的适当权限。若要创建或更改在 CHECK 约束、DEFAULT 子句或计算列定义中引用用户定义函数的表,还必须具有函数的 REFERENCES 权限。 在函数中,区别处理导致删除语句并且继续在诸如触发器或存储过程等模式中的下一语句的 Transact-SQL 错误。在函数中,上述错误会导致停止执行函数。接下来该操作导致停止唤醒调用该函数的语句。 用户定义函数的类型 SQL Server 2000 支持三种用户定义函数: · 标量函数 · 内嵌表值函数 · 多语句表值函数 D: 创建另外一个表用来跟踪定单号,在这个例

32、子中是不合适的。 7你是一个技术培训中心的数据库开发人员,现在,行政人员在纸上记录有学生、教师、课程和教室的安排数据,培训中心想废除纸张管理而改用数据库来管理这些数据,你设计了下列表, 你想提高查询反映时间和冗余数据降到最小,应怎么办? A.      创建Instructors表,包含InstructorID 、InstructorName 和OfficePhone列 。在Courses表中增加InstructorID列 B.      把Classroom表中的所有列移到Courses表中,删除Classroom表 C.      把Courses表中主键约束删除,而用C

33、ourseID 和CourseTitle组合主键代替 D.     删除ClassroomID列,而建立ClassroomNumber 和ClassTime主键约束。 答案: A. 解释 标准化数据库是非常有效的,现在这个数据库的设计是非标准化的,Courses表中包含教师的数据,当一个教师有多余一门课时,就会有重复数据,InstructorName 和 OfficePhone要为每门课程登记。这个数据库的标准化设计应该是: 创建一个新的表Instructors 该表中包含InstructorID,作为候选主键 在Instructors表中增加 InstructorNam

34、e 和 OfficePhone 删除Courses表中InstructorName 和 OfficePhone列, 在Courses表中增加InstructorID列,作为外键,连接表Instructors中的InstructorID 不正确答案: B: 把Classroom表中的所有列移到Courses表中,只能使问题更糟糕,学生每选择一门课,学生的数据就要输入一次,数据库将更不规范化。 C:把Courses表中的主键改为CourseID 和 CourseTitle的组合主键,数据库将更不规范化。这样将不能有两门课有相同的CourseTitle,从而每年(学期)就要为课程起

35、不同的名字。 D: 改变Classroom的主键数据库并不能得以改善,相反,ClassroomID将是冗余,此方法并没有解决Courses表中InstructorName 和 OfficePhone这两列的问题。 8你将设计一个数据库包括用户定购。用户将在每次的定购大量的产品时设置一个序号,可以在一个订单中定购各种不同的产品。具体建库如下: 现你需要提高查询速度和简化多余数据,你应该怎么处理?(各个正确答复提出一部分的解答。所以选择2个选项) A.   创建新的定购表OrderDetail表。表中添加OrderID, ProductID,和Quantity列。 B.   

36、将OrderID和ProductID组成Orders表新的主键。仍然有冗余且不佳 C.  删除Orders表中ProductID和Quantity列。 D.   在Orders表格中创建唯一约束OrderID列。 E.   将Products表中UnitPrice列移到Orders表内。 Answer: A, C. 解释:从一个逻辑的数据库设计出发,我们可以看到Orders 和Products 表的关系存在问题。我们希望两表有如下的关系: l         每份定购将包括一个和多个产品。 l         每个产品可以对应0,1或者多个序号 简言之,我们在Orde

37、rs和Products 表中要建立多对多的关系,但是SQL服务器不允许多对多的关系,所以我们必须建立联系Orders和Products表的新表,通过两个一对多的关系实现多对多关系。我们可以这么做: l       建新表OrderDetail; l       在OrderDetail 表中添加OrderID, ProductID,和Quantity列。 l       在Orders表中移除Quantity 和ProductID列。 l       在OrderDetail表中创建外键OrderID 列,对应Orders表中的OrderID列。 l       在OrderDe

38、tail表中创建外键ProductID列,对应Products表中的ProductID列。 现在,可以更加规范数据库。而且提高了查询时间去掉多余数据。 另外一种想法是:在本事务中OrderID, ProductID 和Quantity列是必须优先考虑的,因此创建一个新表是有益的。并且,可以把Quantity列从Order表中移除,以减少数据冗余。 错误答案解析: B:    创建一个不涉及OrderID 和ProductID 列的主键并不好。作为一个合理的数据库设计ProductID 列并不能完全约束Orders 表内的non-key 列,也不应是主键的一部分。相反地,Order

39、s 表将被一分为二。 D:   在Orders 表内的OrderID 列创建UNIQUE约束,确保OrderID列的值是唯一的同时也阻止出现值为空。但是并不解决Orders和Products表的关系问题。 E:  将Product表内的UnitPrice列移到Orders表内并不能解决问题。UnitPrice列记录产品的价格是属于Products表,不能移到Orders表内。唯一的方法是建立新表,以描述Products和Orders表的关系。 9你是一个出版公司的数据库开发人员,要查看特定的书名的每天的销售情况,建立了如下的存储过程: CREATE PROCEDURE get_s

40、ales_for_title @title varchar(80), @ytd_sales int OUTPUT AS SELECT @ytd_sales = ytd_sales FROM titles WHERE title = @title IF @@ROWCOUNT = 0 RETURN (-1) ELSE RETURN(0) 另外建立了一个脚本执行这个存储过程,如果执行成功,将返回对应于该书的每天的销售情况的报表,如果执行失败,将返回“No Sales Found”,怎样建立这个脚本? a.  DECLARE @retval int DECLARE @ytd

41、int EXEC get_sales_for_title  ‘Net Etiquette’, @ytd IF @retval < 0 PRINT ‘No sales found’ ELSE PRINT ‘Year to date sales: ’ + STR (@ytd) GO b.  DECLARE @retval int DECLARE @ytd int EXEC get_sales_for_title ‘Net Etiquette’, @ytd OUTPUT IF @retval < 0 PRINT ‘No sales found’ ELSE PRINT ‘

42、Year to date sales: ’ + STR (@ytd) GO c.  DECLARE @retval int DECLARE @ytd int EXEC get_sales_for_title ‘Net Etiquette’,@retval OUTPUT IF @retval < 0 PRINT ‘No sales found’ ELSE PRINT ‘Year to date sales: ’ + STR (@ytd) GO d.  DECLARE @retval int DECLARE @ytd int EXEC @retval = get_s

43、ales_for_title ‘Net Etiquette’, @ytd OUTPUT IF @retval < 0 PRINT ‘No sales found’ ELSE PRINT ‘Year to date sales: ’ + STR (@ytd) GO 答案: D. 解释 : 这个存储过程将返回对应于书名的每天的销售情况的报表,是一个RETURN存储过程,我们必须在存储过程执行后,保存其返回值,在存储过程外部是可以使用的。该例中,在在存储过程‘get_sales_for_title’的第一行声明的变量 @retval是保存返回值的, ‘Net Etiquette’是

44、书的标题,RETURN存储过程正确语法是: DECLARE 返回值 EXEC 返回值=  存储过程名称   OUTPUT 在该例中,正确的语法是: DECLARE @retval int DECLARE @ytd EXEC @retval = get_sales_for_title ‘Net Etiquette’, @ytd OUTPUT 不正确答案   : A:脚本的第3行,执行存储过程没有输出返回值 B:脚本的第3行,执行存储过程没有输出返回值 C:脚本的第3行,执行存储过程没有输出返回值 10 你是一个集装箱制造公司的数据库开发人员,公司制造的集装箱有不同

45、的尺寸和形状,存储的集装箱 信息的表有 Size、Container、Shape,如图所示。 数据存储在表中的例子如下图所示。 一般来说,集装箱的尺寸周期性的改变,数据库的用户需要知道集装箱的容量,容量是基于  Shape、size表中的数据计算得到的。你要隐藏计算的细节,使用一个 SELECT查询可以方便的得到,你将怎么做? A.    建立一个用户定义的函数,使用 ContainerID作为参数,返回集装箱的容量。 B.    建立一个存储过程,使用 ContainerID作为参数,返回集装箱的容量。 C.    在 Container表中加入

46、名为 volume 的一列,当一个新集装箱加入表中时,建立一个触发器计算和存储这列的值。 D.    在 Container 表中加入一个计算过的列计算集装箱的容量。 正确答案:A 解释:被统计的列可以直接放置到查询声明中。我们这里想要掩藏演算的细节,显然我们掩藏演算通过定义一个用户定义的计算函数。 注意1:用户定义函数是SQL Server 2000.的一大新特性 该函数是一个有一个或多个Transact-SQL声明的子程序,它可以用于压缩代码以重新使用。CREATE FUNCTION语句来建立用户定义函数。ALTER FUNCTION来实现修改,the DRO

47、P FUNCTION用于实现删除。SQL Server 2000支持两种类型的用户定义函数:标量函数。该函数在被定 义的返回语句中返回类型中返回一个单独的数值。而表数值函数,其返回一个表。还有两种类型的表数值函数:内嵌小应用程序以及多重语句的程序。 注意2: 可计算的列 可计算的列是一种虚拟的列,它的计算是应用同一表列的其他列的表达式,它并没有存储在表内。这个表达式可是是非计算的列名,常数,函数,变量,以及这些一个或多个操作数连接起来的组合但是不可能是一个子查询。可计算列可以用在查询列表中。查询列表是用语句排序的,常规的表达式也可以应用在其他的地方。然而,一个可计算列不能用于缺省或者定义为

48、外键或者非空定义限制,但是如果该可计算列值被确定的表达式定义且结果的数据类型在索引列是被允许的情况下,它在索引中可以做为键列,或着是主键的一部分,或是唯一限制。 不正确的答案解析: B.存储程序的返回值不能用于查询的SELECT列表内。注意:存储程序能够返回数据作为输出参数,该参数可以返回一个数据或者是指针变量。代码经常是整型的数值,而每个SELECT语句的结果集包括在存储程序中或者是被该存储程序调用的其他存储程序内。且全局指针变量能被外部的存储程序参照。存储程序协助达到逻辑的一致的实施横跨应用。能够设计执行一些普通的计划任务SQL语句能在存储程序中被设计,编码,测试一次。各种应用需要

49、执行,然后任务可能简单地执行存储程序。编制程序企业逻辑入一个唯一的存储程序并且提供一个单独的控制观点以保证商业惯例正确地实施。 存储程序同样能实现改善性能。许多的任务被执行为一系列的SQL语句。条件逻辑被应用到第一个SQL语句的结果决定哪一个后续的SQL语句被执行。如果这些SQL语句以及条件逻辑别写到一个存储程序内,他们将成为服务器上单一执行计划的一部分。结果并不需要返回给客户机来应用条件逻辑。所有的工作都是由服务器来完成的。 C.只是利用插入触发器并没有什么效果,如果容器的体积改变值会被更新,触发器也将被更新。 注意:触发器是一系列的存储程序,当UPDATE, INSERT, or D

50、ELETE语句操作表或视图时触发器自动执行。当数据被修改时触发也可用于自动执行企业条例以及被执行来拓展限制、缺省以及规则的整型测试逻辑。每当他们提供应用的必需的功能限制和缺省应该被使用。触发器只有当UPDATE, INSERT or DELETE是针对表或视图操作时能够用于运行计算和返回结果。触发器所返回的结果是有任何触发器内的查询语句来产生的。包括触发器内的SELECT语句而不是那些只含参数的语句,这些只含参数的语句并不被推荐因为用户并不希望在操作UPDATE, INSERT, or DELETE时任何数据返回。 D.SQL Server表包含可计算的列。这些可计算的列只能运用同一表中的常

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服