Microsoft SQL Server 2008技术内幕:T-SQL查询


Microsoft SQL Server 2008技术内幕:T-SQL查询

文章插图
Microsoft SQL Server 2008技术内幕:T-SQL查询【Microsoft SQL Server 2008技术内幕:T-SQL查询】《Microsoft SQL Server 2008技术内幕:T-SQL查询》是2010年9月由电子工业出版社出版的图书,作者是本·甘(ItzikBen-Gan) 。
基本介绍作者:本·甘(ItzikBen-Gan)
译者:成保栋李保强
ISBN:9787121117350
页数:608页
定价:99.00元
出版社:电子工业出版社
出版时间:2010年9月
副标题:T-SQL查询
内容介绍本书全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能最佳化等方面的内容,以及SQL Server 2008新增加的一些特性 。主要内容包括SQL的基础理论、查询最佳化、查询算法及複杂度,以及在使用子查询、表表达式、排名函式、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际套用时会遇到的各种高级查询问题和解决方案 。作为一本讲述T-SQL高级查询的专业图书,本书旨在结合实践中的各种常见问题,教读者如何用SQL作为语言工具来思考问题,揭示基于集合查询的强大威力 。本书内容丰富、文字简洁明快,列举的实例具有一定的难度,而且实用性很强,可以把它们作为解决实际问题的标準模式 。阅读本书,可以充分地理解T-SQL语言和良好的编程实践,学会如何编写更加有效而强大的查询语句 。本书适合有经验的程式设计师和DBA阅读,是在SQL Server 2008中编写和最佳化SQL查询的必备参考图书 。作者介绍Itzik Ben-GanItzik Ben-Gan是Solid Quality Mentors的首席顾问和创始人 。他从1999年以来一直是SQL Server方面的Microsoft MVP(最有价值的专业人员) 。Itzik在世界各地从事T-SQL查询、查询最佳化和编程相关的培训工作 。Itzik是几本关于T-SQL图书的作者 。他为SQL Server Magazine和MSDN撰写过很多文章,在许多业界的专题会议上发表演讲,包括Tech Ed、DevWeek、PASS和SQL Server Magazine Connections 。Lubor KollarLubor Kollar 是微软公司的集团项目经理(Group Program Manager) 。从1996年以来,他一直从事SQL Server的开发组织 。在加入微软之前,他在IBM开发过各种DB2引擎 。目前,Lubor正在领导SQL Server Customer Advisory Team(SQL CAT)从事世界範围内最具挑战性的SQL Server开发 。SQL CAT负责维持客户和SQL Server新版本发行之间的密切联繫 。SQL CAT的另一个主要目标是传播从最先进的SQL Server开发中学习到的智慧 。公众接触SQL CAT的一个主要渠道是Web网站 。Dejan SarkaDejan Sarka主要从事资料库和商业智慧型套用方面的开发 。除了做项目,他把大约一半的时间都用于教学和谘询工作 。他经常在一些最重要的国际会议上发表演讲,包括PASS、TechEd和SqlDevCon 。他也是微软一些区域性事件中不可或缺的人物,例如NT Conference(微软在中东欧最大的会议) 。他是Slovenian SQL Server和.NET User Group的创始人 。Dejan是7本关于资料库和SQL Server图书的主要作者、合着者或客串作者 。Dejan也讲授Solid Quality learning的两门课程:Data Modeling Essentials 和 Data Mining with SQL Server 2008 。Steve KassSteve Kass是University of Wisconsin 大学毕业的数学专业的博士,目前是Drew University大学数学系和计算机系的教授,从1988年以来一直从事教学 。他于2002年成为SQL Server Microsoft MVP,为SQL Server Magazine撰写文章,在SQL Server Magazine Connections上发表演讲,是New York City区域的用户组成员 。Steve已经在Complex Systems 和 the Journal of Algebra上发表过一些数学论文 。作品目录目录Table of Contents序言 I致谢 III前言 V第1章 逻辑查询处理 11.1 逻辑查询处理的各个阶段 21.1.1 逻辑查询处理阶段简介 21.2 客户/订单场景下的查询示例 41.3 逻辑查询处理阶段详解 51.3.1 步骤1:FROM阶段 51.3.2 步骤2:WHERE阶段 91.3.3 步骤3:GROUP BY阶段 101.3.4 步骤4:HAVING阶段 111.3.5 步骤5:SELECT阶段 121.3.6 步骤6:排序用的ORDER BY阶段 131.4 逻辑查询处理的深入内容 161.4.1 表运算符 161.4.2 OVER子句 231.4.3 集合运算符 251.5 总结 26第2章 集合论和谓词逻辑 272.1 自然语言表述到数学表示的转换 272.1.1 严格定义(well-Definedness) 282.1.2 相等、恆等和同一性 302.1.3 数学命名约定 302.1.4 数字 312.1.5 上下文 322.1.6 函式、参数和变数 332.1.7 指令和算法 342.2 集合论 342.2.1 集合的标记方法 352.2.2 集合的严格定义 362.2.3 论域 362.2.4 真实性 382.2.5 罗素悖论(Russell’s Paradox) 402.2.6 有序对、元组和笛卡尔积 412.2.7 空集 422.2.8 集合的特徵函式 432.2.9 集合的基数(Cardinality) 432.2.10 顺序 442.2.11 集合运算符 472.2.12 集合的划分(Partition) 492.2.13 集合论的推广 502.3 谓词逻辑 502.3.1 程式语言中的逻辑功能 502.3.2 命题和谓词 512.3.3 排中律 532.3.4 与、或、非运算 532.3.5 逻辑等价 552.3.6 逻辑蕴含 552.3.7 量化(Quantification) 562.3.8 替代和推广 582.4 关係 592.4.1 自反性、对称性和传递性 592.5 一个实际的套用 602.6 总结 63第3章 关係模型 653.1 关係模型简介 653.1.1 关係、元组和类型 653.1.2 关係模型:快速摘要 703.2 关係代数和关係计算 703.2.1 基本运算符 713.2.2 关係代数 713.2.3 关係演算 793.2.4 T-SQL支持 803.3 数据完整性 813.3.1 声明式约束 823.3.2 实施完整性的其他方法 843.4 资料库正规化和其他设计主题 863.4.1 解决函式依赖的範式 873.4.2 更高级的範式 923.4.3 反规範化(Denormalization) 953.4.4 一般化和特殊化 963.5 总结 98第4章 查询最佳化 994.1 本章用到的样本数据 994.2 最佳化方法论 1024.2.1 分析实例级别的等待 1044.2.2 关联等待和伫列 1114.2.3 确定行动方案 1124.2.4 细化到资料库/档案级别 1134.2.5 细化到进程级别 1154.2.6 最佳化索引和查询 1324.3 查询最佳化的工具 1334.3.1 查询执行计画的快取 1334.3.2 清空快取 1344.3.3 动态管理对象 1344.3.4 STATISTICS IO 1354.3.5 测量查询的运行时间 1354.3.6 分析执行计画 1364.3.7 提示(Hint) 1444.3.8 跟蹤/Profiler 1454.3.9 资料库引擎最佳化顾问 1454.3.10 数据收集和管理数据仓库 1464.3.11 使用SMO来複製统计信息 1464.4 索引最佳化 1464.4.1 表和索引的结构 1464.4.2 索引访问方法 1534.4.3 索引策略的分析 1914.4.4 碎片 2004.4.5 分区 2014.5 準备样本数据 2024.5.1 数据準备 2024.5.2 TABLESAMPLE 2064.6 基于集合的方法和叠代/过程方法的比较,以及一个最佳化练习 2084.7 总结 214第5章 算法和複杂性 2155.0.1 你有一个1夸特的硬币吗? 2155.1 如何度量算法(How Algorithms Scale) 2175.1.1 二次缩放(Quadratic Scaling)的一个例子 2175.1.2 具有线性複杂度的算法 2185.1.3 指数和超指数複杂度 2185.1.4 次线性(sublinear)複杂度 2195.1.5 常量複杂度 2195.1.6 複杂度的技术定义 2205.1.7 複杂度的比较 2215.2 经典算法和算法策略 2225.2.1 排序算法 2235.2.2 字元串查找 2255.3 一个实际的应用程式 2265.3.1 识别测量数据的趋势 2265.3.2 LISLP算法的複杂度 2265.3.3 用T-SQL解决最长上升子序列的长度问题 2275.4 总结 229第6章 子查询、表表达式和排名函式 2316.1 子查询 2326.1.1 独立子查询 2326.1.2 相关子查询 2356.1.3 行为不当的子查询 2446.1.4 不常用的谓词 2456.2 表表达式(Table Expressions) 2466.2.1 派生表 2476.2.2 公用表表达式 2496.3 分析排名函式 2556.3.1 行号 2576.3.2 排名和密集排名(Dense Rank) 2716.3.3 组号(Tile Number) 2726.4 数字辅助表 2766.5 缺失範围和现有範围(也称为间断和孤岛) 2796.5.1 缺失範围(间断) 2816.5.2 现有範围(孤岛) 2886.6 总结 296第7章 联接和集合运算 2977.1 联接 2977.1.1 旧语法和新语法 2977.1.2 基本联接类型 2987.1.3 其他的联接分类 3067.1.4 上一年度的滑动合计 3177.1.5 联接算法 3207.1.6 拆分元素 3267.2 集合运算 3327.2.1 UNION 3327.2.2 EXCEPT 3337.2.3 INTERSECT 3347.2.4 集合运算的优先权 3357.2.5 在集合运算中使用INTO 3367.2.6 避开不支持的逻辑阶段 3367.3 总结 338第8章 数据聚合和透视 3398.1 OVER 子句 3398.2 决胜属性(Tiebreaker) 3418.3 连续聚合 3438.3.1 累积聚合(Cumulative Aggregation) 3448.3.2 滑动聚合(Sliding Aggregation) 3488.3.3 年初至今(YTD) 3498.4 透视转换(Pivoting) 3508.4.1 透视转换属性 3508.4.2 关係除法 3538.4.3 聚合数据 3558.5 逆透视转换 3578.6 自定义聚合 3608.6.1 使用透视转换的自定义聚合 3618.6.2 用户定义聚合函式(UDA,User Defined Aggregate) 3628.6.3 专用解决方案 3708.7 直方图(Histogram) 3808.8 分组因子 3838.9 分组集 3858.9.1 样例数据 3868.9.2 GROUPING SETS从属子句 3878.9.3 CUBE从属子句 3898.9.4 ROLLUP从属子句 3908.9.5 分组集代数 3928.9.6 GROUPING_ID函式 3958.9.7 保存分组集 3978.9.8 排序 3998.10 总结 400第9章 TOP和APPLY 4019.1 SELECT TOP 4019.1.1 TOP和确定性 4029.1.2 TOP和输入表达式 4039.1.3 TOP和修改 4049.1.4 增强的TOP 4069.2 APPLY 4079.3 使用TOP和APPLY解决常见问题 4089.3.1 每组中的TOP n 4089.3.2 匹配当前值和前一个值 4139.3.3 分页 4169.3.4 随机行 4199.3.5 中值(Median) 4219.4 逻辑转换 4229.5 总结 424第10章 数据修改 42510.1 插入数据 42510.1.1 增强的VALUES子句 42510.1.2 SELECT INTO 42610.1.3 BULK行集提供程式 42810.1.4 按最小方式记录日誌的操作 43010.1.5 INSERT EXEC 44710.1.6 序列机制 45010.1.7 全局唯一标识符(GUID) 45410.2 删除数据 45410.2.1 TRUNCATE与DELETE 45410.2.2 删除包含重複数据的行 45510.2.3 基于联接的DELETE 45610.3 更新数据 45810.3.1 基于联接的UPDATE 45810.3.2 更新大值数据类型 46110.3.3 用SELECT和UPDATE语句进行赋值 46210.4 合併数据 46510.4.1 MERGE语句基础 46710.4.2 额外增加一个谓词 47010.4.3 多个WHEN子句 47110.4.4 WHEN NOT MATCHED BY SOURCE子句 47210.4.5 MERGE Values 47310.4.6 MERGE与触发器 47410.5 OUTPUT子句 47510.5.1 带有OUTPUT的INSERT 47610.5.2 带有OUTPUT的DELETE 47710.5.3 带有OUTPUT的UPDATE 47810.5.4 带有OUTPUT的MERGE 48010.5.5 可组合的DML 48110.6 总结 482第11章 查询分区表 48311.1 在SQL Server中进行分区 48311.1.1 分区视图 48311.1.2 分区表 48411.2 总结 496第12章 图、树、层次结构和递归查询 49712.1 术语 49712.1.1 图 49712.1.2 树 49812.1.3 层次结构 49812.2 套用场景 49812.2.1 员工组织图 49812.2.2 材料清单(BOM) 50012.2.3 道路系统 50212.3 叠代/递归 50512.3.1 下属 50512.3.2 祖先 51312.3.3 带有路径枚举的子图/子树 51612.3.4 排序 51812.3.5 环 52012.4 具体化路径 52312.4.1 维护数据 52312.4.2 查询 52712.5 使用HIERARCHYID数据类型的具体化路径 53112.5.1 维护数据 53212.5.2 查询 53712.5.3 使用HIERARCHYID的其他方面 54012.6 嵌套集合 54812.6.1 分配左值和右值 54912.6.2 查询 55312.7 传递闭包(Transitive Closure) 55512.7.1 有向无环图 55512.7.2 无向有环图 55912.8 总结 566索引 567