Microsoft SQL Server 2005技术内幕:T-SQL程序设计

出版时间:2007-8  出版社:电子工业出版社  作者:本-甘,萨卡,沃尔特  页数:514  字数:688000  译者:赵立东  
Tag标签:无  

内容概要

本书是Inside Microsoft SQL Server 2005系列四本著作中的一本。它详细介绍了T-SQL的内部构造,包含了非常全面的编程参考。它提供了使用Transact-SQL(T-SQL)的专家级指导,T-SQL是用于SQL Server的最常见的也是功能最强大的编程语言。该书由Itzik Ben-Gan权威执笔,重点关注语言特性以及它们如何被SQL Server引擎解释和处理。  通过本书,你将深入了解T-SQL的高级用法,包括触发器、用户自定义函数、异常处理等。该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解复杂的逻辑并掌握T-SQL。  本书适合于专业数据库开发者、BI开发者、DBA和以SQL Server作为后台数据库的一般应用程序开发者,读者可以通过书中的最佳实践、高级技巧和代码示例来掌握这门复杂的编程语言,以切合实际的方案来解决复杂的实际问题。

作者简介

Itzik Ben-Gan是Solid Quality Learning的导师和创始人。从1999年开始,他一直是Microsoft SQL Server MVP(最有价值专家),并在全世界已经开展过无数次T-SQL查询、T-SQL优化和编程方面的培训。Itzik是Microsoft SQL Server方面几本著作的作者。他在SQL ServerMagazine和MSD

书籍目录

序前言致谢引言第1章  数据类型相关的问题,XML和CLR UDT  1.1  DATETIME数据类型    DATETIME的存储格式    时间处理  Datetime相关的查询问题 1.2  与字符相关的问题  模式匹配  区分大小写(Case-Sensitive)的筛选器 1.3  大型对象(Large Object,LOB)   MAX 说明符  BULK行集提供程序 1.4  隐式转换(Implicit Conversion)   标量表达式  筛选表达式 1.5  基于CLR的用户定义类型  UDT理论简介  开发UDT 1.6  XML数据类型  关系数据库中的XML支持  什么时候应该使用XML代替关系表现形式?  数据库中的XML序列化对象  使用开放架构(Open Schema)的XML  作为存储过程参数的XML数据类型  Xquery修改语句 1.7  结论第2章  临时表和表变量 2.1  临时表  局部临时表  全局临时表 2.2  表变量  限制条件  tempdb  范围和可见性  事务上下文  统计信息 2.3  tempdb相关的注意事项 2.4  表表达式 2.5  比较临时对象 2.6  综合练习——关系分区(Relational Division)  2.7  结论第3章  游标 3.1  使用游标 3.2  游标开销 3.3  单独处理每一行 3.4  按顺序访问  自定义聚合  连续聚合  最大并发会话  匹配问题 3.5  结论第4章  动态SQL第5章  视图第6章  用户定义函数第7章  存储过程第8章  触发器第9章  事务第10章  错误处理第11章  Service Broker附录A  CLR程序指南A.1  创建CLRUtilities数据库: SQL Server A.2  部署:Visual StudioA.3  部署和测试:Visual Studio 和 SQL Server 索引中英文术语对照表关于作者

章节摘录

  上世纪90年代后期Microsoft SQL Server 7.0发布后不久,我向微软IT部门的一位资深开发人员询问她和她的团队使用SQL Server时所用的编程语言。“过去我们用C和Visual Basic写代码,但是现在我们只使用T-SQL进行开发。”这让我非常吃惊。那时我已经从事开发新版SQL Server的工作大概已经3年了,后来我才意识到一些非常大的项目也在使用T-SQL开发。此后,微软加大了对新版SQL Server 的投入,包括对T-SQL语言的重要改进。世界上的SQL Server 实例数量成倍增长,今天很多的开发人员、数据库管理员、数据分析师、测试人员以及架构师都选择T-SQL作为开发语言,在很多时候,这也是他们唯一使用的编程工具。  仔细观查T-SQL的结构你会发现有两种类型的语句,其中一类是选择、插入和更新数据库中的数据的语句,另一类是提供流控制、输出、变量声明和处理以及我们在大部分非数据库编程语言可以找到的其他功能。SELECT、INSERT、SEND和RECEIVE属于第一类,DECLARE、 BEGIN、 IF、ELSE、 WAITFOR和PRINT属于第二类。Itzik Ben-Gan根据两类语句之间的大概界线把T-SQL分到两本书——Inside Microsoft SQL Server 2005: T-SQL Quexying和Inside Microsoft SQL Server 2005: T-SQL Programming。  这两本书都不是一个完整的语言参考,也没有必要写这样一本书,因为你可以从微软网站http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx下载语言参考。相反,Itzik Ben-Gan利用他丰富的T-SQL教学经验把非常复杂的主题包括在他的书中,还包含SQL Server 2005中新增的功能。让教师写书的另一个优势是他已经向他的学生讲解过无数个与这些主题相关的问题。Itzik Ben-Gan非常巧妙地利用这些经验呈现这些素材,就好像回答问题一样,同时书中还包含大量的示例和技巧。我最喜欢的技巧在第一章。它解释了如何使用一个小测试表确定对一个大表执行的ALTER TABLE语句会花费几秒还是几小时。这个重要的技巧会是一个真正的救生员(或是事业提高者)。但要注意,不要忘记使用一个非空的测试表!  本书中我最喜欢的示例是第4章动态SQL中的动态Pivot。SQL Server 2005引入了PIVOT 和UNPIVOT语句,但它们无法处理未知元素数量的旋转。这个限制倍受用户批评。Itzik Ben-Gan向你展示了如何在SQL Server 2005 中利用一个由3个语句组成的批处理(如果不算变量声明)实现动态pivoting。如果你使用的不是SQL Server的最新版本,你会在本书中找到SQL Server 2005之前版本的动态pivot的批处理方法。它使用了10条语句,通过比较这两个版本的动态pivot,你会发现SQL Server 2005的强大的编程能力。本书包括SQL Server 2005之前版本的代码段和命令方法,这使得本书对那些还没使用SQL Server 2005的开发人员来说也非常具有吸引力,他们可以直接使用2005之前版本的解决方案。  《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》这本书包含了大量实用的代码示例,你可以很轻易地把它们应用到自己的工作中。本书的作者除了关注示例的正确性之外,还考虑到安全、性能及潜在的阻塞等因素。因此,本书所包含的大量示例的查询计划都经过检查并与其他计划作过比较。例如,在第9章中,你会发现关于如何使用动态管理视图(DMV)以检测阻塞的场景。DMV是SQL Server 2005中新引入的,它提供了关于服务器状态的信息,这些信息可以用于监视服务器实例的状态、诊断问题和调整性能。  SQL Server是一个复杂的产品,几乎任何问题都不止一种解决方法。Itzik Ben-Gan及合著者彻底地检查每个问题的多种选择并解释应该如何从中做出选择。有时一种方法通常更好些,但经常有利也有弊,这时作者会给出做出正确选择的标准。例如,在第1章你将学习在T-SQL中表示2006年2月12日时,为什么应该使用20060212而不是02/12/06 或 12/02/06。在第2章比较表变量和临时表。在第3章你将学习到如何使用游标,以及更为重要是,什么时候不应该使用游标。第4章描述了EXEC和sp_executesql之间的区别。在接下来的第5章中,你将学习什么时候应用使用公用表表达式(CTE),它是SQL Server 2005中新增的,可以代替创建视图。第7章介绍存储过程,解释了为什么对象名称应该限定架构。第8章阐明了出于性能考虑,什么时候应该把触发器中的inserted或deleted表中的内容转移到临时表中。在第11章你将学习什么时候使用Service Broker,以及什么时候使用MSMQ或BizTalk更好。这份清单远未详尽,只是让你品味一下本书的内容。

媒体关注与评论

  在关系数据库中,以集合(set)的方式来处理大量记录才有效率,使得 SQL(Structure Query Language)语言无法被C#/Java/Visual Basic 等面向对象语言取代。而善用数据是信息系统成功的关键因素之一,现今大量交易、数据整合、商业智能的结构性需求大增,将使SQL显得更加重要。  随着 Microsoft SQL Server 版本的演进,衍生自 ANSI SQL 的 T-SQL(Transact Structure Query Language)语言变得独立且功能强大,拥有众多用户,是解决各种数据问题的主流语言。在 SQL Server 的功能大量扩增并广泛进入企业各系统后,日益庞大的数据量让 T-SQL 发挥了重要的作用。  虽然讨论 T-SQL 的书很多,但因为 SQL Server 2005 巨幅扩增了功能,且标准化了许多语法,将原来需要通过系统存储过程、DBCC 才能创建、设置或维护的功能,都回归到标准的 T-SQL 语法,并放宽了语法的自由度。例如:引入 .NET 对象作为 SQL Server 服务器端对象、XML 数据类型与 XQuery 语法、Service Broker 消息队列服务、以 DDL 建立系统登录与数据库用户、通过 T-SQL 维护索引、TOP 运算符可以搭配变量或子查询,以及搭配 CTE 使用在 UPDATE、DELETE 语法中、聚合运算搭配 OVER 运算符等,诸多功能在 SQL Server 2000中是无法用T-SQL办到的。因此,以往的 T-SQL 书籍将不足以讲解2005版SQL Server 的功能。  若论微软 SQL Server方面的最重要著作,大概非 Inside Microsoft SQL Server 系列丛书莫属了。从SQL Server 6.5 以来,一直常驻在专业 SQL Server DBA 案头的,就是对应各版本的Inside Microsoft SQL Server系列丛书了。这不是笔者的妄加赞誉,而是素有信息界诺贝尔奖称呼的图灵奖(Turing Award)得主 Jim Gray 在该系列书籍的序言中所说的。笔者本身也以读过该系列的书,代表进入了该版本的世界(例如要熟悉 SQL Server 2000,先读Inside Microsoft SQL Server 2000),以此为深入了解 SQL Server 的标准。  由于大幅改版与新增功能,导致以往出书速度还蛮快的 Inside Microsoft SQL Server 系列,这次让大家从 SQL Server 2005 上市后等了一年。也由于功能繁多,原本已极为厚重的 Inside Microsoft SQL Server 再也无法以单行本面世,而改为四本合集的系列丛书。先前 Inside SQL Server 各版本的作者 Kalen Delaney,在此次 Inside Microsoft SQL Server 2005 的四本书中,改任丛书编辑(Series Editor),并亲自撰写《Inside Microsoft SQL Server 2005 : The Storage Engine》一书。  此刻,我们需要全面地重新认识 T-SQL,够分量的书籍大概非《Inside Microsoft SQL Server 2005 : T-SQL Querying》和本书莫属。两书的作者群里,以资深的讲师与顾问 Itzik Ben-Gan 为首,包含SQL Server 2005 团队的两位产品经理,分别负责SQL Server 查询引擎和 Service Broker 的深入介绍,以及其他拥有多年经验的顾问与教师们合作撰写。因此,两本书中皆有着技术底层的详细解说,搭配各项功能的最佳应用实践。  这两本书主要以集合数据处理(set-based query)和程序逻辑(procedural programming)两个方面来区分。前者重视 SQL DML 语法的逻辑和效率,本书则强化搭配过程控制(如 IF、WHILE、游标等)所建构的服务器端对象,如函数、存储过程、CLR 对象、Service Broker 等。  笔者一直认为技术书籍与联机帮助不同的地方是技术书籍提供应用场景与阅读趣味,将技术与实际应用串起来。因为联机帮助写得像字典,若将信息语言的应用比喻为作文,则一般人很难光靠一本字典学会作文。我们需要看文章来模拟笔触、技法与结构。在学习信息技术时,自然需要实际场景和程序代码范例。而这两本书所提供的 T-SQL 范例大都简短有力,两三行就切中要旨,由范例就可看出作者的功力。对于 T-SQL 的方方面面,作者们都进行了提纲挈领、深入浅出的讲解,不管是凸显语法结构、运算符、适用性,还是建立服务器对象,都让有T-SQL基础的人能迅速抓住重点。  使用T-SQL如同激荡脑力的智力测验,同一个问题让人惊叹的解法层出不穷,需要经验与知识的累积,是技术与艺术的展现。而这两本书读来让人愉悦,有如在读 T-SQL 的秘技,作者整合了不同的技术,并将它们混在一起使用。例如,以一般的 SELECT 语法查询,要将多笔记录的域值组成符号分隔的单一字符串时,会采用类似如下的做法。  DECLARE @c nvarchar(4000)  SET @c=  SELECT @c=@c + CustomerID +, FROM Customers  SELECT @c  在上述范例中,会返回 Customers 数据表中以逗号分隔所有客户编号的单一字符串。但作者在本书中,强调此种方法的不确定性,因为微软并没有明文保证此种连接字符串的方法一定可行。但由于 FOR XML 子句在 2005 版本时多了 PATH 选项,因此该组字符串可以换成如下标准的查询方式。  SELECT CustomerID + , AS [text()]  FROM Customers FOR XML PATH()  书中充满了此种结合不同技术的意想不到之解法,让懂得关键之人顿感妙趣横生,不懂奥妙之人,仍可借鉴引用。  本书的目的是为了帮助你熟悉 T-SQL 语言,并通过该语言撰写 SQL Server 服务器端的对象,例如视图、用户自定义函数、存储过程、触发器等,由于未解释 T-SQL 基础语法定义,属于进阶的书籍。其内各章节大都彼此独立,且作者所拟的章节针对性很强,你可以浏览后,选择主题切入。日后在工作上需要应用到该项功能时,再回头精研作者所阐述的要旨。  前4章详细解释了T-SQL一般使用中让人困扰的用法,例如以字符类型描述日期时间时,最好采用 [yy]yymmdd[ hh:mm[:ss][.mmm]] 格式,例如以‘20060423 20:14:42.132’来表示时间最佳。另外还探讨了动态组织与执行 SQL 语法、临时表(Temporary Table)和表变量(Table Variable)的迷思、游标(Cursor)的正确使用方式等,针对以 T-SQL 撰写商业逻辑时常用的技巧,作者详加剖析了较佳的用法。  在其后的章节中,分别解释了为何要在服务器端创建视图、函数、存储过程、触发器、端点、Service Broker 等对象,以及事务管理和错误处理。书中解释了许多关于性能的议题,如第6章特别强调了用户自定义函数的正面价值在于:提供了安全、弹性以及程序的可维护性外,但它可能损伤性能。而第7章说明了存储过程虽然会因为缓存执行计划而提升性能,但若数据分布不平均,造成索引误用,依然损伤性能。因此需要小心搭配整个存储过程的 WITH RECOMPILE 选项,或是 SQL Server 2005 新提供的:单句查询语法搭配 OPTION(RECOMPILE)选项。  读到 Service Broker 的产品经理 Roger Wolter 所撰写的第11章时,才能理解由于时间的压力,为了赶上市而分割 SQL Server 2005 的部分功能。但因功能尚未完成,导致保留的 T-SQL 语法让人莫测高深,这些情况在本章有了解释。例如 Service Broker 在打开对话时,总要以BEGIN DIALOG CONVERSATION 语法开始,笔者就一直怀疑是否自己的英文能力太差,为何看不出Conversation 加 Dialog 这个关键词的用途?原来 Conversation 分为 Dialog 和 Monolog 两种,Dialog 是两边的服务可以互为通信,Monolog 则是发起端单方面的声明。但 Monolog 在这个版本还未做出来,而为了下一个版本的兼容性,本版就需要保留使用 Dialog 关键词。另外,在建立 Service Broker 的对话时,来源端的 Service 名称可以直接指定 Service 对象名称,但目的端却需要用字符串格式,读了此书才知道因为未来目的端可能不局限是 SQL Server 所提供的服务,因此以一般的文字字符串来描述。  本书的译者赵立东老师有6年的开发经验,精通 .NET 和 SQL Server。赵老师翻译本书非常认真,不仅更正了原书提出的勘误,且在翻译过程中,经常与原作者Itzik讨论和并向他请教,同时也不时和笔者交换意见。所以,在他翻译的过程中,我受益不少。译者与博文视点曾合作翻译了《Programming ASP.NET中文版第3版》一书。此外,他也正在和其他译者一起翻译《Inside Microsoft SQL Server 2005:T-SQL Querying》一书,并担任该书的审校工作,这本书是笔者期待的另一本佳作。  胡百敬  2007年5月于台湾

编辑推荐

  《Microsoft SQL Server2005技术内幕:T-SQL程序设计》适合于专业数据库开发者、BI开发者、DBA和以SQL Server作为后台数据库的一般应用程序开发者,读者可以通过书中的最佳实践、高级技巧和代码示例来掌握这门复杂的编程语言,以切合实际的方案来解决复杂的实际问题。

图书封面

图书标签Tags

评论、评分、阅读与下载


    Microsoft SQL Server 2005技术内幕:T-SQL程序设计 PDF格式下载


用户评论 (总计49条)

 
 

  •   这本书写得非常好.内容也比较深入一些,而且有不少好的东西.是掌握SQLSERVER高级应用很值得学习的书.
  •   要深入学习SQLServer的,必看书籍
  •   如果是自认为还是初学SQL,你可以暂时不看这书。如果你还想更深入一点的学习SQL,必看此书!绝对不是夸张。不过建议先看这本书的姊妹篇《SQLService2005技术内幕-TSQL查询》先了解查询方面的基本知识比较好。我就是这么看的。再次强烈推荐!
  •   这一套都是神作,本来我觉得这本不如存储引擎和查询,因为对我这样写了N年存储过程的人来说没啥太大的价值,事实证明我错了SQL2005的确有许多新的东西,但这些新的东西未必是这么好用的,一旦不慎,会死得很惨。最近的开发中单表死锁和实物终结我都遇上了,亏了这本书帮了大忙。
  •   当当网的发货速度真快,我一天半就收到书了。。书的印刷和装订很精美,看上去很舒服。。内容的确是很有深度,和那本T-SQL查询比起来深入了不少,我大略看了一下感觉还不错。。入门或者想逐步提高我觉得还是买T-SQL查询要好一些,我就是先买了这本书发现有的地方看不懂才又买了那本的,两本书之间有的地方是相互参考的。。
  •   我认为这本书的优点在于:1、没有废话,没有像很多书那样,写一大堆发展历史,基础教程等等从帮助上贴一大堆东西。2、书中的实例写的非常好,很经典,让人感觉T-SQL也能写出如此美妙的东西。
  •   如题!不过在看此书之前建议先看该系列的“T—SQL查询”,免得看不懂打击自己!
  •   很好的书,但适合有一定sql基础的人
  •   不愧为微软权威书深度广度都达一定水平由很多部分都是现在所理解不了也看不懂的看来需要用很长一段时间消化了
  •   不知道别人的看书习惯是什么,但是我要说这本书我看起来太舒服了,排版很不错。代码尤其写得好,简介明了,还据的例子全。无论什么阶段的都能看,而且还能学到不少东西。相信我的,我现在在北大青鸟学软件呢,我推荐。
  •   非常经典的著作.本套书有3本了.现在又出2008了,还没中文的.也非常的不错!
  •   好书啊,期待本系列第三本书
  •   很专业,很棒,但很难啃的书
  •   这本书不错,不过写的不是很全,也看到了一些平时不注意的地方
  •   期待另两本书的出版!
  •   很好的参考书,还有一本配套的,准备过一段时间就买了.呵...
  •   很适合DBA
  •   经典好书,强烈推荐!
  •   非常经典,入门到精通。
  •   不错,很好,很强大
  •   上周定的到现在还米送来
  •   考MCSD.net的好书
  •   爱你!
  •   我选择我喜欢!
  •   印刷不错。内容详实简练。
  •   下了单,没货,很晕!
  •   现在在市场上要找一本较深入介绍SQLSERVER的书太难了。此书整体感觉还行,介绍的比较深入。注:该系列的书不适合初学者。
  •   使用了全新的的架构,在日期与时间操作,T-SQL和CLR用户自定义函数、存储过程、触发器、事务和新的错误处理结构上都有了新的方式.还没看完,细节有待发掘.
  •   有点深度,说实话很多地方看不懂我是搞网站程序开发的.SQL水平估计就是学校水平吧本来想买回来提高自己水平的结果一半以上的内容看不懂所以建议大家如果SQL没达到一定水平的话还是别买的好,学习学习再买
  •   本书适合有一定基础的读者,编程思想对数据库设计与维护有一定的启发。
  •   买了书,这本看得最少,因为涉及到程序的,我真是看一个头大,但是还需要~只能像手册字典那样,需要就查查~
  •   现在做开发,只是拿来用,还没有深入地研究,,,,
  •   有点难懂.水平需要比较高才行.是属于高级篇了.
  •   这本还不错,但是有些比较深的话题只是点了一下...让人很难受......无法深入学习..只好再看其他相关资料
  •   部门买的书,利用率比较高,看的人不是很多
  •   里面写的很详细,这一些列都挺好的
  •   正在看,应该是不错的书
  •   书不错,只是纸张没有预想的好,呵呵。。
  •   大致翻了一下,还不错~
  •   讲的还可以,特别是一些例子,蛮到位的,正在努力的往下看!~!~!~
  •   Inmyopinion,thecontentissogood.ifthebookisenglishnotchinese,itshouldbebetter.
  •   满意,很好的学习资料
  •   不知道是不是自己水平的问题期待t**l查询
  •   慕名而去买的这本书。其实一般。可能翻译的问题,好像还差一点。总的评价一般吧。
  •   对于初级的读者来说,还是不适合,因为里面说得有些泛泛.而对于有几年的工作经验了的人来说,应该是一个选择.
  •   我买的其它商品怎么没有加积分?
  •   书本身写的没啥问题但是书籍的质量不敢恭维是盗版的截图部分不清晰装订质量也不好前面的红页都脱页了第一次上当当买书就遇到这种事郁闷
  •   不会吧,这么久了还没到货,都10天了如果再不来,下次不来当当买书了太慢了!!!!!!!!!!!
  •   最近又订了一本书,这次是邮局汇款,当当网办事效率是相当低,都快一个星期了,还在等待审核!远不如卓越网!!!
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7