文件已上传到百度网盘,附件中是下载地址。真正免积分免费无水印完整版,绝不出现仅下载到部分章节,书中广告页要求QQ联系支付宝购买完整版的流氓行为! 欢迎免积分下载更多本人独有网上难寻觅的 高清IT电子书:http://download.csdn.net/user/sinophp123 人无我有,人有我优,人优我廉!我的版本是全网最清晰的独家制作版本,还不要资源分。 同样一本书,下我的就可以了! (美)kris hadlock(著) 姚军(译) 人民邮电出版社 9787115330857 2013-10-01
2022-08-15 17:36:21 1KB JavaScript Framework 可视化 框架
1
编译原理之[鲸书] 高级编译器设计与实现,带详细书签 目前市面上这本书的电子扫描版不带书签,于是抽了点时间添加了书签,希望大家喜欢。3,4 个小时的苦劳换1个积分,只为以后能传更大的资源,若有问题请轻拍。希望大家支持啊。 压缩包内有这本书中文版的两个版本,一个为书签默认展开版;另一为默认书签折叠版,但有 瑕疵:点了书签后需要向前翻一页才对得上。 采用(Foxit PDF Page Organizer Pro 2.93绿色特别版, http://ishare.iask.sina.com.cn/f/7181059.html)把书签默认展开版转化为书签默认折叠版 ,折叠版的书签不准确,希望有高手帮助分析下,解决这个问题。
2022-08-01 15:09:31 50.58MB 编译原理 龙虎鲸书 详细书签
1
(good)Ucos_II2.52 源码中文译注(钟常慰_我已添加详细书签),非常详细的说明;好资料;
2022-07-24 13:05:50 2.39MB ucos 源码
1
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 1.10 小结 正如你可以从到目前为止的例子中看出的,SQL语言提供了很多不同的选择来得到同样的结果集。你可能还注意到了一点就是这5个核心的SQL语句都可以使用类似的构造,例如子查询。关键是需要搞清楚在各种不同的使用场景下哪种构造是最高效的。我们将在本书后面的内容中阐述如何做到这一点。 如果你对本章的例子的理解有任何困难,请一定花点时间复习Beginning Oracle SQL或者Oracle文档中的SQL Reference Guide。在本书中接下来的部分我们假设你已经很好地理解了5个核心SQL语句的基本构造:SELECT、INSERT、UPDATE、DELETE和MERGE。 Oracle SQL 高级编程 详细书签版 2013-------》2022
2022-06-20 18:05:37 43.88MB Oracle SQL 高级编程 详细书签版
1
这本经典、畅销的数据结构教材详细介绍了数据抽象的基础知识,强调作为面向对象方法基础原理的规范和实施之间的区别。书中使用的软件工程原则和概念以及UML图便于增强学生的理解。 ◆ 详细介绍了数据抽象,强调规范和实现之间的区别 ◆ 广泛介绍了各种面向对象的编程技术 ◆ 重点是核心的数据结构,而不是非必要的C++语言语法 ◆ 说明了类和ADT在问题解决过程中的作用 ◆ 诠释了ADT的主要应用,如查找航班图、事件驱动的模拟和八皇后问题 ◆ 大部分章节中的例子都使用了标准模板库(STL) ◆ 介绍了递归 ◆ 附录中提供了基本的C++语法,以帮助学生从其他语言转换为C++ 第1章 数据抽象:墙 1 1.1 面向对象的概念 2 1.1.1 面向对象分析与设计 2 1.1.2 面向对象解决方案的特征 3 1.2 获得更好的解决方案 4 1.2.1 内聚 5 1.2.2 耦合 5 1.3 规范 6 1.3.1 操作契约 7 1.3.2 特殊情况 8 1.3.3 抽象 9 1.3.4 信息隐藏 10 1.3.5 最小且完整的接口 11 1.4 抽象数据类型 12 1.4.1 设计ADT 14 1.4.2 涉及其他ADT的ADT 17 1.5 ADT包 18 1.5.1 确定行为 18 1.5.2 指定数据和操作 19 1.5.3 ADT的模板接口 22 1.5.4 使用ADT包 24 C++片段1 C++类 29 C1.1 待解决的问题 30 C1.1.1 私有数据字段 31 C1.1.2 构造函数和析构函数 32 C1.1.3 方法 32 C1.1.4 防止编译错误 33 C1.2 实现解决方案 34 C1.3 模板 35 C1.4 继承 37 C1.4.1 基类和派生类 38 C1.4.2 重写基类方法 40 C1.5 虚方法和抽象类 42 C1.5.1 虚方法 42 C1.5.2 抽象类 43 第2章 递归:镜子 45 2.1 递归解决方案 46 2.2 返回值的递归 48 2.2.1 递归值函数:n的阶乘 49 2.2.2 箱式跟踪 52 2.3 执行动作的递归 55 2.4 递归与数组 62 2.4.1 逆置数组项 63 2.4.2 折半查找 64 2.4.3 查找数组中的最大值 68 2.4.4 查找数组中第k个最小值 69 2.5 组织数据 71 2.6 更多示例 75 2.6.1 Fibonacci数列(兔子繁殖) 75 2.6.2 组织游行队伍 78 2.6.3 从n个事物中选出k个 79 2.7 递归和效率 81 第3章 基于数组的实现 91 3.1 办法 92 3.1.1 核心方法 93 3.1.2 使用大小固定的数组 93 3.2 ADT包的基于数组的实现 94 3.2.1 头文件 95 3.2.2 定义核心方法 96 3.2.3 测试核心方法 98 3.2.4 实现更多方法 101 3.2.5 删除项的方法 103 3.2.6 测试 106 3.3 在实现中使用递归 107 3.3.1 getIndexOf方法 107 3.3.2 getFrequencyOf方法 108 C++片段2 指针、多态和内存分配 113 C2.1 变量的内存分配和方法的前期绑定 114 C2.2 需要解决的问题 115 C2.3 指针与程序的自由存储 116 C2.3.1 释放内存 118 C2.3.2 避免内存泄漏 119 C2.3.3 避免悬挂指针 122 C2.4 虚方法和多态 124 C2.5 数组的动态分配 126 第4章 基于链表的实现 129 4.1 预备知识 130 4.2 ADT包的基于链表的实现 133 4.2.1 头文件 134 4.2.2 定义核心方法 135 4.2.3 实现更多方法 138 4.3 在基于链表的实现中使用递归 143 4.4 测试多个ADT实现 145 4.5 比较基于数组的实现和基于链表的实现 148 第5章 作为问题求解技术的递归 155 5.1 定义语言 156 5.1.1 语法知识基础 156 5.1.2 两种简单的语言 158 5.2 代数表达式 160 5.2.1 代数表达式的类型 160 5.2.2 前缀表达式 162 5.2.3 后缀表达式 166 5.2.4 完全括号化表达式 168 5.3 回溯 168 5.3.1 查找航线 168 5.3.2 八皇后问题 173 5.4 递归和数学归纳法的关系 179 5.4.1 递归阶乘函数的正确性 179 5.4.2 Hanoi塔的工作量 180 第6章 栈 189 6.1 ADT栈 190 6.1.1 在设计解决方案期间开发ADT 190 6.1.2 ADT栈的规范 192 6.2 栈的简单应用 197 6.2.1 检查括号匹配 197 6.2.2 识别语言中的字符串 199 6.3 栈在代数表达式中的应用 200 6.3.1 计算后缀表达式 201 6.3.2 中缀表达式与后缀表达式的等价转换 202 6.4 使用栈查找航班图 205 6.5 栈和递归的关系 212 C++片段3 异常 221 C3.1 背景知识 222 C3.2 断言 223 C3.3 抛出异常 224 C3.4 处理异常 227 C3.4.1 多个catch块 228 C3.4.2 未捕获的异常 229 C3.5 程序员定义的异常类 232 第7章 实现ADT栈 235 7.1 基于数组的实现 236 7.2 基于链表的实现 239 7.3 在实现中使用异常 243 第8章 列表 247 8.1 指定ADT列表 248 8.2 使用列表操作 252 8.3 ADT列表的模板接口 255 第9章 实现列表 259 9.1 基于数组的ADT列表实现 260 9.1.1 头文件 261 9.1.2 实现文件 262 9.2 基于链表的ADT列表实现 266 9.2.1 头文件 266 9.2.2 实现文件 268 9.2.3 在LinkedList的方法中使用递归 275 9.3 两种实现的比较 279 第10章 算法的效率 283 10.1 什么是好的解决方案 284 10.2 测量算法的效率 285 10.2.1 算法的执行时间 286 10.2.2 算法增长率 287 10.2.3 分析与大O表示法 288 10.2.4 正确分析问题 291 10.2.5 查找算法的效率 293 第11章 排序算法及其效率 299 11.1 基本排序算法 300 11.1.1 选择排序 300 11.1.2 起泡排序 303 11.1.3 插入排序 305 11.2 较快排序算法 307 11.2.1 归并排序 307 11.2.2 快速排序 312 11.2.3 基数排序 319 11.3 各种排序算法的比较 321 C++片段4 类关系和重用 325 C4.1 回顾继承 326 C4.1.1 类的公有、私有和受保护部分 331 C4.1.2 公有、私有和受保护继承 332 C4.1.3 is-a和as-a关系 333 C4.2 包含:has-a关系 334 C4.3 回顾抽象基类 335 第12章 有序表及其实现 339 12.1 指定ADT有序表 340 12.1.1 ADT有序表的模板接口 342 12.1.2 使用有序表的操作 343 12.2 基于链表的实现 344 12.2.1 头文件 344 12.2.2 实现文件 345 12.2.3 基于链表的实现的效率 348 12.3 使用ADT列表的实现 348 12.3.1 包含 349 12.3.2 公有继承 352 12.3.3 私有继承 356 第13章 队列和优先队列 363 13.1 ADT队列 364 13.2 ADT队列的简单应用 367 13.2.1 读取字符串 367 13.2.2 识别回文 368 13.3 ADT优先队列 369 13.4 应用:模拟 371 13.5 面向位置和面向值的ADT 379 第14章 队列和优先队列的实现 387 14.1 ADT队列的实现 388 14.1.1 使用ADT列表的实现 388 14.1.2 基于链表的实现 390 14.1.3 基于数组的实现 394 14.1.4 比较实现 399 14.2 ADT优先队列的实现 400 C++片段5 运算符重载和友元访问 405 C5.1 重载运算符 406 C5.1.1 重载=进行赋值 408 C5.1.2 重载+进行连接 410 C5.2 友元访问和<<的重载 411 第15章 树 415 15.1 术语 416 15.1.1 树的类型 417 15.1.2 树的高度 419 15.1.3 满二叉树、完全二叉树和平衡二叉树 421 15.1.4 二叉树的最大和最小高度 422 15.2 ADT二叉树 425 15.2.1 二叉树的遍历 425 15.2.2 二叉树的操作 428 15.2.3 ADT二叉树的模板接口 430 15.3 ADT二叉查找树 432 15.3.1 二叉查找树的操作 433 15.3.2 查找二叉查找树 434 15.3.3 创建二叉查找树 435 15.3.4 遍历二叉查找树 437 15.3.5 二叉查找树操作的效率 437 第16章 树的实现 443 16.1 二叉树中的节点 444 16.1.1 基于数组的表示 444 16.1.2 基于链表的表示 446 16.2 ADT二叉树基于链表的实现 447 16.2.1 头文件 447 16.2.2 实现 450 16.3 ADT二叉查找树基于链表的实现 458 16.3.1 ADT二叉查找树操作的算法 458 16.3.2 BinarySearchTree类 469 16.4 在文件中保存二叉查找树 471 16.5 树排序 474 16.6 一般树 474 C++片段6 迭代器 479 C6.1 迭代器 480 C6.1.1 常见的迭代器操作 481 C6.1.2 使用迭代器操作 482 C6.1.3 实现迭代器 483 C6.2 迭代器的高级功能 485 第17章 堆 489 17.1 ADT堆 490 17.2 堆的基于数组的实现 493 17.2.1 基于数组的堆操作的算法 494 17.2.2 实现 498 17.3 ADT优先队列的堆实现 502 17.4 堆排序 504 第18章 字典及其实现 511 18.1 ADT字典 512 18.2 可能的实现 517 18.2.1 ADT字典的基于数组的有序实现 519 18.2.2 ADT字典的二叉查找树实现 521 18.3 选择实现 523 18.4 散列 529 18.4.1 散列函数 532 18.4.2 解决冲突 534 18.4.3 散列的效率 539 18.4.4 如何确立散列函数 542 18.4.5 字典遍历:散列的低效操作 543 18.4.6 使用散列和分离链实现ADT字典 544 第19章 平衡查找树 551 19.1 平衡查找树 552 19.2 2-3树 553 19.2.1 遍历2-3树 555 19.2.2 查找2-3树 556 19.2.3 在2-3树中插入数据 558 19.2.4 从2-3树中删除数据 562 19.3 2-3-4树 567 19.3.1 查找和遍历2-3-4树 569 19.3.2 在2-3-4树中插入数据 569 19.3.3 从2-3-4树中删除数据 572 19.4 红-黑树 573 19.4.1 查找和遍历红-黑树 575 19.4.2 红-黑树的插入和删除 575 19.5 AVL树 577 第20章 图 583 20.1 术语 584 20.2 将图作为ADT 587 20.3 图的遍历 591 20.3.1 深度优先查找 592 20.3.2 广度优先查找 593 20.4 图的应用 595 20.4.1 拓扑排序 595 20.4.2 生成树 598 20.4.3 最小生成树 600 20.4.4 最短路径 603 20.4.5 回路 606 20.4.6 一些复杂问题 608 第21章 外部存储中的数据处理 615 21.1 了解外部存储 616 21.2 排序外部文件的数据 618 21.3 外部字典 624 21.3.1 确定外部文件的索引 626 21.3.2 外部散列 629 21.3.3 B-树 632 21.3.4 遍历 639 21.3.5 多索引 640 C++片段7 标准模板库 647 C7.1 STL容器 648 C7.1.1 STL容器适配器 649 C7.1.2 顺序容器 650 C7.1.3 关联容器 654 C7.2 STL算法 657 附录A 回顾C++基础 659 附录B 编程中的重要主题 697 附录C 统一建模语言 719 附录D 软件生命周期 727 附录E 数学归纳法 733 附录F 算法验证 737 附录G C++文件基础 741 附录H C++头文件和标准函数 751 附录I C++文档系统 755 附录J ASCII字符代码 757 附录K 针对Java编程人员的C++知识 759 附录L 针对Python编程人员的C++知识 767
2022-04-26 15:48:52 147.19MB C++ 面向对象 架构 算法
1
《程序员修炼之道》由一系列独立的部分组成,涵盖的主题从个人责任、职业发展,知道用于使代码保持灵活、并且易于改编和复用的各种架构技术,利用许多富有娱乐性的奇闻轶事、有思想性的例子及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。无论你是初学者,是有经验的程序员,还是软件项目经理,本书都适合你阅读。读者对象:无论你是初学者,还是有经验的程序员,还是软件项目经理,本书都适合你阅读。 第1章 注重实效的哲学 1 1 我的源码让猫给吃了 2 2 软件的熵 3 3 石头汤与煮青蛙 5 4 足够好的软件 8 5 你的知识资产 10 6 交流 14 第2章 注重实效的途径 19 7 重复的危害 20 8 正交性 25 9 可撤消性 33 10 曳光弹 36 11 原型与便笺 40 12 领域语言 43 13 估算 48 第3章 基本工具 55 14 纯文本的威力 56 15 shell游戏 60 16 强力编辑 63 17 源码控制 67 18 调试 69 19 文本操纵 77 20 代码生成器 80 第4章 注重实效的偏执 85 21 按合约设计 86 22 死程序不说谎 95 23 断言式编程 97 24 何时使用异常 100 25 怎样配平资源 103 第5章 弯曲,或折断 111 26 解耦与得墨忒耳法则 112 27 元程序设计 117 28 时间耦合 121 29 它只是视图 127 30 黑板 134 第6章 当你编码时 139 31 靠巧合编程 140 32 算法速率 144 33 重构 149 34 易于测试的代码 153 35 邪恶的向导 160 第7章 在项目开始之前 163 36 需求之坑 163 37 解开不可能解开的谜题 172 38 等你准备好 174 39 规范陷阱 176 40 圆圈与箭头 178 第8章 注重实效的项目 181 41 注重实效的团队 181 42 无处不在的自动化 186 43 无情的测试 191 44 全都是写 200 45 极大的期望 205 46 傲慢与偏见 208 附录A 资源 209 专业协会 209 建设藏书库 210 Internet资源 212 参考文献 221 附录B 练习解答 225 索引 249 注重实效的程序员之快速参考指南 263
2022-04-05 19:00:03 25.05MB 程序员 修炼 架构 专家
1
《Java Web 开发就该这样学》基于建构主义教育思想,通过大量循序渐进的案例,让学生在体验中掌握Java Web 相关知识,同时获得编程能力、排错能力和学习能力,《Java Web 开发就该这样学》多次使用陷阱式教学法,帮助学生深刻理解所学知识,掌握实现Web 编程的不同技术特点。 《Java Web 开发就该这样学》详细介绍了Java Web 程序设计的前端技术、开发和部署,以及一些衍生技术变化。在内容上,本着使用不同技术尽可能实现相同功能的原则,让读者能够充分体会认识每个技术的优缺点。 《Java Web 开发就该这样学》的内容和组织形式立足于高校教学教材的要求,适用于从职业院校到重点本科院校的教师教学和学生学习,可以作为Java Web 程序设计的入门教材,或者面向就业的实习实训教材,同时可作为计算机技术的培训教材,读者完全可以通过《Java Web 开发就该这样学》自学Java Web 技术。 第1章 认识Tomcat 1 1.1 什么是Web Server 1 1.2 选择Tomcat 来学习 2 1.3 安装Tomcat 2 1.4 MyTomcat 6 1.5 MyIE 10 1.6 再谈Tomcat 12 第2章 学习HTML 14 2.1 认识HTML 14 2.2 做百度的首页 15 2.3 搜狐邮箱的用户登录 24 2.4 京东的购物车 28 2.5 用表格定位搜狐邮箱的用户登录界面 32 2.6 使用CSS 实现搜狐邮箱的用户登录 41 2.6.1 绝对定位 41 2.6.2 div 43 2.6.3 级联样式 44 2.7 在网页上显示时间 49 2.7.1 为什么要学习JavaScript 49 2.7.2 获取时间 50 2.7.3 定义函数 54 2.7.4 js 文件 55 2.7.5 显示到其他地方 57 2.7.6 能动的时间 58 2.7.7 漂浮的时间显示 60 2.8 再看搜狐邮箱的用户登录 63 2.9 京东商城的新用户注册 67 2.9.1 String 对象操作 73 2.9.2 正则表达式 74 2.9.3 密码框验证 78 2.9.4 邮箱地址验证 84 2.10 搜狐首页的菜单条 85 2.11 QQ 空间的设置 89 第3章 Servlet 94 3.1 Servlet 怎么运行 94 3.1.1 编写第一个Servlet 96 3.1.2 部署 100 3.2 用户登录 104 3.3 重要的XML 111 3.3.1 XML 112 3.3.2 DTD 113 3.3.3 Schema 117 3.3.4 CSS 和XSL 122 3.3.5 DOM 126 3.3.6 SAX 131 3.3.7 XML 总结 132 3.4 购物网站的商品展示 133 3.4.1 数据库设计 133 3.4.2 展示页面程序 134 3.4.3 查询评论数量 141 3.4.4 分离数据库连接 141 3.4.5 分页显示 144 3.4.6 在每个页面上都显示用户名 149 3.5 用户注册 151 3.5.1 生成验证码图片 152 3.5.2 绘制干扰线 154 3.5.3 更新验证码 156 3.5.4 注册处理程序 157 3.5.5 使用AJAX 验证用户名是否冲突 159 3.5.6 用AJAX 实现分页显示 162 第4章 JSP 177 4.1 用户登录 178 4.1.1 设置中文编码 180 4.1.2 编写脚本 180 4.1.3 连接数据库 181 4.1.4 跳转 182 4.2 购物网站的商品展示 185 4.3 将用户登录结合到商品展示页面中 190 4.3.1 使用Cookie 192 4.3.2 将两个网页合并 195 4.4 购物车 196 4.4.1 实现加减按钮和删除商品的功能 201 第5章 使用JavaBean 205 5.1 使用JavaBean 实现用户验证 205 5.1.1 定义JavaBean 205 5.1.2 运用JavaBean 208 5.1.3 JavaBean 的作用域 209 5.1.4 在JavaBean 中使用内置对象 210 5.2 使用JavaBean 来实现商品展示 212 5.2.1 规划和设计JavaBean 212 5.2.2 改造JSP 214 5.2.3 将数据库和页面彻底分离开 216 5.3 实现购物车逻辑 221 第6章 使用自定义标记TAG 226 6.1 使用JSP、JavaBean 和TAG 实现商品显示 229
2022-03-29 23:51:09 42.4MB Java Web HTML
1
百科全书式的C语言编程宝典,值得每个程序员珍藏。 囊括C语言从基础知识到高级开发技术的全景式解读。 毋庸置疑,C语言从产生到现在的各个阶段,都是最重要和最流行的编程语言之一。熟悉和掌握C语言程序设计,已经成为程序员的一门必修课。本书言简意赅、通俗易懂,知识点覆盖全面,详细介绍了C语言的程序设计及最新的C语言编程技术。 本书分4篇,共29章,分别介绍了C语言基础、C语言进阶、C语言的接口技术和现代C语言的扩展。首先,介绍了C语言及其开发环境,并全面介绍了C语言的基本语法知识;接着,详细讲解了C语言的一些高级程序应用;然后,介绍了C语言与其他主流编程语言的接口;最后,讲解了现代C语言的一些扩展应用和高级技术。 本书结构安排紧凑、讲解详细、实例丰富。C语言程序设计的初学者通过本书可以快速掌握C语言程序设计方法。同时,本书对现代C语言程序的接口和高级技术进行了全面讲解,对具有一定开发经验的设计人员也有非常好的参考价值。本书可以作为C语言初学者的入门教材,也可作为C语言程序员的参考手册,还可作为大中专院校学生及电脑培训班的参考书。
2022-03-26 19:04:08 138.05MB C语言 开发 手册
1
Java程序员面试笔试宝典.pdf(高清扫描版,带超详细书签目录)
2022-03-18 10:21:28 46.14MB java
1
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server 2008实战(SQL Server程序员和DBA不可或缺的权威参考手册) 基本信息 原书名: SQL Server 2008 Transact-SQL Recipes: A Problem-Solution Approach 原出版社: Apress 作者: (美)Joseph Sack 译者: 金迎春 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115221063 上架时间:2010-3-5 出版日期:2010 年2月 开本:16开 页码:713 版次:1-1 编辑推荐    SQL Server程序员和DBA不可或缺的权威参考手册    查询方便,迅速解决工作中的难题    大量来自微软内部的技巧 内容简介    t-sql一直以来都是 sql server编程的基础。和传统的 t-sql书籍不同,本书以独特的 “技巧 ”形式来介绍知识点,涵盖了数据处理(增删改、视图、索引、存储过程、触发器等)、数据应用(web服务、 clr集成、分布式查询等)和数据库配置(主体、安全、数据库镜像和快照、备份等)3个方面的内容。其中每一个技巧中都包含了有代表性的示例和精炼的解析。    本书实用、高效、技巧性强,适用于 sql server专业技术人员,也可供初学者学习参考。 作译者   Joseph Sack 世界知名的SQL Server技术专家,微软认证数据库管理员(MCDBA),有10多年的SQL Server开发和管理工作经验。目前就职于微软公司高级现场工程组(Premier Field Engineering team)。除本书外,他撰写的SQL Server 2000 Fast Answers for DBAs and Developers(即本书前身)是Amazon五星著作,与人合写的Pro SQL Server 2005也广受好评。他的博客地址是http://joesack.com/WordPress/。 目录 封面 -19 封底 -18 扉页 -17 版权 -16 版权声明 -15 译者序 -14 前言 -12 致谢 -11 目录 -10 第1章 SELECT 1 1.1 基本的SELECT语句 1 1.1.1 从表中选择指定列 2 1.1.2 从所有行中选择所有列 2 1.2 使用基本WHERE子句进行有选择的查询 3 1.2.1 使用WHERE子句指定结果集中返回的行 3 1.2.2 组合搜索条件 4 1.2.3 否定搜索条件 5 1.2.4 保持WHERE子句无歧义 5 1.3 使用运算符和表达式 6 1.3.1 在日期范围搜索中使用BETWEEN 7 1.3.2 使用比较运算符 8 1.3.3 检测NULL值 9 1.3.4 基于一组值返回行 9 1.3.5 LIKE和通配符结合使用 9 1.3.6 声明变量及为变量赋值 11 1.4 数据分组 12 1.4.1 使用GROUP BY子句 12 1.4.2 使用GROUP BY ALL 13 1.4.3 使用HAVING选择性地查询分组的数据 13 1.5 对结果排序 14 1.5.1 使用ORDER BY子句 15 1.5.2 在排序的结果中使用TOP关键字 16 1.6 SELECT子句技术 18 1.6.1 使用DISTINCT消除重复值 18 1.6.2 在聚合函数中使用DISTINCT 18 1.6.3 使用列别名 19 1.6.4 使用SELECT创建脚本 20 1.6.5 字符串拼接 21 1.6.6 使用SELECT创建逗号分隔的列表 21 1.6.7 使用INTO子句 22 1.7 子查询 23 1.8 从多个数据源查询 24 1.8.1 使用内联结 25 1.8.2 使用外联结 26 1.8.3 使用交叉联结 27 1.8.4 在同一查询中多次引用同一个表 27 1.8.5 使用衍生表 28 1.8.6 使用UNION组合结果集 29 1.9 使用APPLY来为每行调用表值函数 30 1.9.1 使用CROSS APPLY 30 1.9.2 使用OUTER APPLY 32 1.10 数据源高级技术 33 1.10.1 使用TABLESAMPLE来返回随机行 33 1.10.2 使用PIVOT把单列值转化为多列和聚合数据 34 1.10.3 使用UNPIVOT规范化数据 36 1.10.4 使用EXCEPT和INTERSECT返回不重复的或匹配的行 38 1.11 汇总数据 40 1.11.1 使用CUBE汇总数据 40 1.11.2 使用ROLLUP来汇总数据 42 1.11.3 使用分组集创建自定义汇总 43 1.11.4 展现GROUPING生成的行 44 1.11.5 使用GROUPING_ID标识分组级别 46 1.12 公共表表达式 49 1.12.1 使用非递归的公共表表达式 49 1.12.2 使用递归的公共表表达式 52 第2章 执行、捕获和跟踪数据修改 55 2.1 INSERT 55 2.1.1 向表中插入一行 55 2.1.2 使用默认值插入行 56 2.1.3 显式向一个IDENTITY列插入值 57 2.1.4 在表中插入拥有uniqueidentifier列的行 59 2.1.5 使用INSERT...SELECT语句插入行 59 2.1.6 调用存储过程插入数据 60 2.1.7 通过VALUES插入多个行 62 2.1.8 将VALUES作为表源来使用 62 2.2 UPDATE 63 2.2.1 更新一行 64 2.2.2 根据FROM和WHERE子句更新行 65 2.2.3 更新大值数据类型的列 66 2.2.4 使用OPENROWSET和BULK插入或更新图片文件 68 2.2.5 在维护SQL Server事务控制时向文件系统存储非结构化数据 69 2.2.6 “就地”赋值并修改数据库值 73 2.3 DELETE 75 2.3.1 删除行 75 2.3.2 截断表 76 2.4 高级数据修改技术 77 2.4.1 使用TOP分块修改数据 77 2.4.2 在一条语句中执行INSERT、UPDATE和DELETE 78 2.5 捕获和跟踪数据修改的改变 81 2.5.1 返回数据修改语句影响的行 81 2.5.2 异步捕获表数据修改 83 2.5.3 从CDC表查询所有变更 87 2.5.4 从CDC表查询净变更 89 2.5.5 翻译CDC更新掩码 90 2.5.6 使用LSN边界 92 2.5.7 禁用对表和数据库的变更数据捕获 93 2.5.8 以最小的磁盘开销跟踪净数据更改 93 第3章 事务、锁定、阻塞和死锁 100 3.1 事务控制 100 3.1.1 使用显式事务 101 3.1.2 使用DBCC OPENTRAN显示最早的活动事务 104 3.1.3 通过会话查询事务信息 104 3.2 锁定 106 3.2.1 查看锁的活动 108 3.2.2 控制表的锁升级行为 109 3.3 事务、锁定和并发 110 3.4 阻塞 115 3.4.1 找到并解决阻塞进程 116 3.4.2 配置语句等待锁释放的时长 118 3.5 死锁 118 3.5.1 使用跟踪标志位找出死锁 119 3.5.2 设置死锁优先级 121 第4章 表 123 4.1 表基础 123 4.1.1 创建表 126 4.1.2 为既有表添加列 126 4.1.3 修改列定义 127 4.1.4 创建计算列 128 4.1.5 减少NULL列的存储空间 129 4.1.6 删除表中的列 131 4.1.7 报告表信息 132 4.1.8 删除表 132 4.2 排序规则基础 133 4.2.1 查看排序规则元数据 133 4.2.2 指定列的排序规则 134 4.3 键 134 4.3.1 创建有主键的表 135 4.3.2 为既有表增加主键约束 136 4.3.3 创建一个有外键引用的表 136 4.3.4 为既有表增加外键 137 4.3.5 创建递归外键引用 138 4.3.6 允许外键的级联修改 139 4.4 代理键 140 4.4.1 在创建表的时候使用IDENTITY属性 141 4.4.2 使用DBCC CHECKIDENT来查看和纠正IDENTITY种子值 142 4.4.3 使用ROWGUIDCOL属性 143 4.5 约束 143 4.5.1 创建唯一约束 144 4.5.2 为既有表增加UNIQUE约束 145 4.5.3 使用CHECK约束 145 4.5.4 为既有表增加CHECK约束 146 4.5.5 禁止和启用约束 147 4.5.6 在表创建时使用DEFAULT约束 148 4.5.7 为既有表增加DEFAULT约束 149 4.5.8 从表删除约束 150 4.6 临时表和表变量 150 4.6.1 使用临时表在批处理中进行多次查找 151 4.6.2 创建表变量来保存临时结果集 152 4.7 管理超大型表 153 4.7.1 实现表分区 154 4.7.2 确定数据在分区中的位置 157 4.7.3 增加新的分区 158 4.7.4 移除分区 160 4.7.5 把分区移动到不同的表 161 4.7.6 移除分区函数和分区方案 162 4.7.7 用文件组提高VLDB的可管理性 162 4.7.8 用数据压缩减少磁盘空间使用 164 第5章 索引 167 5.1 索引预览 167 5.1.1 创建表索引 169 5.1.2 在非键列上强制唯一性 170 5.1.3 在多个列上创建索引 171 5.1.4 定义索引列排序方向 172 5.1.5 查看索引元数据 172 5.1.6 禁用索引 174 5.1.7 删除索引 174 5.1.8 使用DROP_EXISTING改变既有索引 174 5.2 控制索引创建的性能和并发性 175 5.2.1 在tempdb中创建临时索引 175 5.2.2 控制索引创建的并行执行计划 176 5.2.3 在索引创建过程中允许用户表访问 176 5.3 索引选项 177 5.3.1 使用索引INCLUDE 177 5.3.2 使用PAD_INDEX和FILLFACTOR 178 5.3.3 禁用页和/或行索引锁定 178 5.4 管理超大型索引 179 5.4.1 在文件组上创建索引 180 5.4.2 实现索引分区 180 5.4.3 为行的子集做索引 181 5.4.4 减小索引的大小 182 第6章 全文搜索 183 6.1 全文索引和全文目录 183 6.1.1 创建全文目录 183 6.1.2 创建全文索引 184 6.1.3 修改全文目录 186 6.1.4 修改全文索引 187 6.1.5 检索全文目录和索引元数据 189 6.1.6 从全文索引中去掉普通字符串 190 6.1.7 删除全文索引 193 6.1.8 删除全文目录 193 6.2 基本搜索 194 6.2.1 使用FREETEXT来搜索全文索引的列 194 6.2.2 使用CONTAINS来搜索单词 195 6.3 高级搜索 196 6.3.1 使用CONTAINS和通配符来搜索 196 6.3.2 使用CONTAINS来搜索变形匹配 196 6.3.3 使用CONTAINS根据词的相邻搜索结果 197 6.4 排名搜索 197 6.4.1 根据含义返回排名搜索结果 198 6.4.2 根据权值返回排名搜索结果 199 第7章 视图 201 7.1 普通视图 201 7.1.1 创建基本视图 202 7.1.2 查询视图定义 203 7.1.3 显示视图及其结构 204 7.1.4 刷新视图定义 205 7.1.5 修改视图 206 7.1.6 删除视图 206 7.1.7 使用视图修改数据 206 7.2 视图加密 207 7.3 索引视图 208 7.3.1 创建索引视图 208 7.3.2 强制优化器为索引视图使用索引 210 7.4 分区视图 211 第8章 SQL Server函数 216 8.1 聚合函数 216 8.1.1 返回平均值 217 8.1.2 返回行总数 217 8.1.3 找出表达式中的最小值和最大值 218 8.1.4 返回值的和 218 8.1.5 使用统计聚合函数 219 8.2 数学函数 219 8.3 字符串函数 221 8.3.1 把字符值转化为ASCII以及把ASCII转回字符 222 8.3.2 返回整数和字符Unicode值 222 8.3.3 获取某个字符串在另一个字符串中的起始位置 223 8.3.4 使用通配符找到某个字符串在另一个字符串中的起始位置 223 8.3.5 检测字符串相似度 224 8.3.6 获取字符串最左和最右部分 224 8.3.7 检测字符串中的字符数或者字节数 225 8.3.8 把字符串的一部分替换成另一个字符串 226 8.3.9 把字符串填充到字符串中 226 8.3.10 在小写和大写之间进行转化 227 8.3.11 移除前导空格和尾部空格 228 8.3.12 重复一个表达式N次 228 8.3.13 重复一个空格N次 229 8.3.14 逆序输出表达式 229 8.3.15 返回表达式的一块 229 8.4 处理NULL 230 8.4.1 用另一个值替换NULL值 230 8.4.2 使用ISNULL进行灵活的搜索 230 8.4.3 返回表达式列表中第一个非NULL值 232 8.4.4 当两个表达式相等的时候返回NULL值,否则返回第一个表达式 232 8.5 日期函数 233 8.5.1 返回当前日期和时间 233 8.5.2 在时区间进行转换 234 8.5.3 增加或减少日期值 235 8.5.4 找出两个日期的差 236 8.5.5 显示日期一部分的字符串值 237 8.5.6 使用DATEPART显示日期一部分的整数值 237 8.5.7 使用YEAR、MONTH和DAY显示日期一部分的整数值 238 8.6 类型转换 238 8.6.1 转换数据类型 238 8.6.2 将日期转换为文本形式 239 8.6.3 以字符串字面量表示二进制数据 240 8.6.4 计算表达式返回的数据类型 241 8.7 排名函数 242 8.7.1 生成递增行号 242 8.7.2 根据排名返回行 244 8.7.3 根据无间隔排名返回行 245 8.7.4 使用NTILE 246 8.8 使用系统函数检测服务器、数据库以及连接级别的配置 246 8.8.1 确定每周的第一天 246 8.8.2 查看当前会话使用的语言 247 8.8.3 查看和设置当前连接锁超时设置 247 8.8.4 显示当前存储过程上下文的嵌套级别 248 8.8.5 返回当前SQL Server实例名和SQL Server版本 248 8.8.6 返回当前连接的会话ID(SPID) 249 8.8.7 返回打开事务的数量 249 8.8.8 获取之前语句影响的行数 250 8.8.9 获取系统统计信息 250 8.8.10 显示数据库和SQL Server设置 251 8.8.11 返回当前数据库ID和名称 252 8.8.12 返回数据库对象名和ID 253 8.8.13 返回当前用户会话的应用程序和主机 253 8.8.14 获取当前用户和登录名上下文 253 8.8.15 查看用户连接选项 254 8.9 IDENTITY和uniqueidentifier函数 255 8.9.1 返回最后一个标识值 255 8.9.2 返回标识列的种子和增量值 256 8.9.3 创建新的uniqueidentifier值 256 第9章 条件处理、流控制和游标 258 9.1 条件处理 258 9.1.1 使用CASE来计算单个输入表达式 258 9.1.2 使用CASE来计算布尔表达式 260 9.1.3 使用IF...ELSE 261 9.2 流控制 262 9.2.1 使用RETURN 263 9.2.2 使用WHILE 264 9.2.3 使用GOTO 266 9.2.4 使用WAITFOR 267 9.3 游标 268 第10章 存储过程 273 10.1 存储过程基础 273 10.1.1 创建基本的存储过程 274 10.1.2 创建带参数的存储过程 275 10.1.3 使用OUTPUT参数 277 10.1.4 修改存储过程 278 10.1.5 删除存储过程 279 10.1.6 在SQL Server启动时自动执行存储过程 279 10.1.7 报告存储过程元数据 281 10.1.8 为存储过程建立文档 281 10.2 存储过程安全 282 10.2.1 加密存储过程 282 10.2.2 使用EXECUTE AS来指定过程的安全上下文 283 10.3 重新编译和缓存 286 10.3.1 每次存储过程执行时重新编译 286 10.3.2 清空过程缓存 287 第11章 用户定义函数和类型 289 11.1 UDF基础 289 11.1.1 创建标量用户定义函数 290 11.1.2 创建内联用户定义函数 294 11.1.3 创建多语句用户定义函数 296 11.1.4 修改用户定义函数 299 11.1.5 查看UDF元数据 300 11.1.6 移除用户定义函数 301 11.2 从UDF获益 301 11.2.1 维护可重用的代码 302 11.2.2 交叉引用的自然键值 303 11.2.3 使用多语句UDF替代视图 306 11.3 UDT基础知识 308 11.3.1 创建和使用用户定义类型 308 11.3.2 找出使用用户定义类型的列和参数 310 11.3.3 删除用户定义类型 311 11.3.4 传入表值参数 312 第12章 触发器 315 12.1 DML触发器 316 12.1.1 创建AFTER DML触发器 316 12.1.2 创建INSTEAD OF DML触发器 319 12.1.3 在DML触发器中处理事务 322 12.1.4 根据修改的列控制DML触发器 324 12.1.5 查看DML触发器元数据 325 12.2 DDL触发器 326 12.2.1 创建审核数据库级别的事件的DDL触发器 326 12.2.2 创建审核服务器级别的事件的DDL触发器 328 12.2.3 使用登录触发器 329 12.2.4 查看DDL触发器元数据 331 12.3 管理触发器 332 12.3.1 修改触发器 332 12.3.2 启用和禁止表触发器 333 12.3.3 限制触发器嵌套 334 12.3.4 控制触发器递归 335 12.3.5 设置触发器触发次序 336 12.3.6 删除触发器 338 第13章 CLR集成 339 13.1 CLR概述 339 13.2 什么时候使用(不使用)程序集 340 13.3 CLR对象概述 341 13.4 创建CLR数据库对象 341 13.4.1 启用SQL Server的CLR支持 342 13.4.2 为CLR存储过程写程序集 342 13.4.3 把程序集编译成DLL文件 345 13.4.4 把程序集载入SQL Server 345 13.4.5 创建CLR存储过程 346 13.4.6 创建CLR标量用户定义函数 348 13.4.7 创建CLR触发器 350 13.5 管理程序集 352 13.5.1 查看程序集元数据 352 13.5.2 修改程序集权限 352 13.5.3 从数据库移除程序集 353 第14章 XML、分层和空间数据 354 14.1 使用原生XML 354 14.1.1 创建XML数据类型列 354 14.1.2 插入XML数据到列 355 14.1.3 使用架构验证XML数据 356 14.1.4 获取XML数据 358 14.1.5 修改XML数据 361 14.1.6 XML索引 362 14.2 在XML文档与关系型数据之间进行转换 363 14.2.1 将关系型数据格式化为XML 363 14.2.2 将XML转换为关系型 366 14.3 使用原生分层数据 368 14.3.1 存储分层数据 368 14.3.2 返回指定的祖先 370 14.3.3 返回子节点 371 14.3.4 返回节点的深度 371 14.3.5 返回根节点 372 14.3.6 确定节点是否为当前节点的子节点 372 14.3.7 更改节点位置 372 14.4 原生空间数据 373 14.4.1 存储空间数据 373 14.4.2 查询空间数据 376 第15章 提示 380 15.1 使用联结提示 380 15.2 使用查询提示 382 15.3 使用表提示 384 15.3.1 不锁定执行查询 385 15.3.2 强制SEEK覆盖SCAN 385 第16章 错误处理 388 16.1 系统定义和用户定义的错误消息 388 16.1.1 查看系统错误信息 388 16.1.2 创建用户定义错误消息 389 16.1.3 删除用户定义错误消息 391 16.2 手动引发错误 391 16.3 捕获和处理应用程序错误 393 16.3.1 旧风格的错误处理 394 16.3.2 使用TRY...CATCH进行错误处理 396 16.3.3 不重编写存储过程来应用TRY...CATCH 398 16.3.4 嵌套错误处理 398 第17章 主体 401 17.1 Windows级别的主体 401 17.1.1 创建Windows登录名 402 17.1.2 查看Windows登录名 403 17.1.3 修改Windows登录名 403 17.1.4 删除Windows登录名 404 17.1.5 拒绝Windows用户或用户组的SQL Server访问 405 17.2 SQL Server级别的主体 405 17.2.1 创建SQL Server登录名 407 17.2.2 查看SQL Server登录名 407 17.2.3 修改SQL Server登录名 408 17.2.4 管理登录名的密码 409 17.2.5 删除SQL登录名 409 17.2.6 管理服务器角色成员 410 17.2.7 报告固定服务器角色信息 411 17.3 数据库级别的主体 412 17.3.1 创建数据库用户 413 17.3.2 报告数据库用户信息 414 17.3.3 修改数据库用户 414 17.3.4 从数据库删除数据库用户 415 17.3.5 修复孤立的数据库用户 415 17.3.6 报告固定数据库角色信息 416 17.3.7 管理固定数据库角色成员 417 17.3.8 管理用户定义的数据库角色 418 17.3.9 管理应用程序角色 420 第18章 安全对象、权限和审核 423 18.1 权限总览 424 18.2 服务器范围的安全对象和权限 426 18.2.1 管理服务器权限 428 18.2.2 查询服务器权限 429 18.3 数据库范围的安全对象和权限 430 18.3.1 管理数据库权限 431 18.3.2 查询数据库权限 432 18.4 架构范围的安全对象和权限 434 18.4.1 管理架构 436 18.4.2 管理架构的权限 437 18.5 对象的权限 438 18.6 管理权限访问安全对象范围 440 18.6.1 检测当前连接的安全对象的权限 440 18.6.2 通过安全对象范围报告主体的权限 441 18.6.3 改变安全对象所有权 445 18.6.4 允许SQL登录名访问非SQL Server的资源 446 18.7 对安全对象的主体审核SQL实例和数据库级别活动 447 18.7.1 定义审核数据源 447 18.7.2 捕获SQL实例范围的事件 450 18.7.3 捕获数据库范围的事件 452 18.7.4 查询捕获的审核数据 455 18.7.5 管理、修改和移除审核对象 458 第19章 加密 462 19.1 通过通行短语加密 462 19.2 主密钥 464 19.2.1 备份及还原服务主密钥 465 19.2.2 创建、重新生成以及删除数据库主密钥 466 19.2.3 备份及还原数据库主密钥 467 19.2.4 从数据库主密钥删除服务主密钥加密 468 19.3 非对称密钥加密 469 19.3.1 创建非对称密钥 469 19.3.2 查看当前数据库中的非对称密钥 470 19.3.3 修改非对称密钥的私钥密码 470 19.3.4 使用非对称密钥对数据进行加密和解密 471 19.3.5 删除非对称密钥 473 19.4 对称密钥加密 473 19.4.1 创建对称密钥 474 19.4.2 查看当前数据库中的对称密钥 475 19.4.3 改变对称密钥加密方式 475 19.4.4 使用对称密钥进行加密和解密 476 19.4.5 删除对称密钥 479 19.5 证书加密 479 19.5.1 创建数据库证书 479 19.5.2 查看数据库中的证书 480 19.5.3 备份和还原证书 480 19.5.4 管理证书的私钥 482 19.5.5 使用证书加密和解密 483 19.5.6 通过对称密钥自动打开和解密 484 19.6 透明数据加密 486 19.6.1 启用透明数据加密 486 19.6.2 管理和移除TDE 487 第20章 Service Broker 489 20.1 示例场景:在线书店 489 20.2 创建基本的Service Broker应用程序 490 20.2.1 启用数据库的Service Broker活动 491 20.2.2 创建加密用的数据库主密钥 491 20.2.3 管理消息类型 492 20.2.4 创建约定 493 20.2.5 创建队列 494 20.2.6 创建服务 496 20.2.7 启动对话 497 20.2.8 查询队列中传入的消息 499 20.2.9 检索并响应消息 499 20.2.10 结束会话 501 20.2.11 设定Service Broker会话的优先级 503 20.3 创建用来处理消息的存储过程 505 20.4 远程服务器Service Broker的实现 507 20.4.1 启用传输安全模式 510 20.4.2 启用对话安全模式 512 20.4.3 创建路由和远程服务绑定 514 20.5 事件通知 517 第21章 配置和查看SQL Server的选项 520 第22章 创建和配置数据库 524 22.1 创建、修改和删除数据库 524 22.1.1 使用默认配置创建数据库 524 22.1.2 查看数据库信息 525 22.1.3 使用文件选项创建数据库 526 22.1.4 使用用户定义文件组创建数据库 528 22.1.5 设置数据库用户访问 530 22.1.6 重命名数据库 532 22.1.7 删除数据库 533 22.1.8 分离数据库 533 22.1.9 附加数据库 535 22.2 配置数据库选项 535 22.2.1 查看数据库选项 536 22.2.2 配置ANSI SQL选项 536 22.2.3 配置自动选项 538 22.2.4 创建或修改允许外部访问的数据库 539 22.2.5 使用非服务器默认排序规则创建或改变数据库 540 22.2.6 配置游标选项 541 22.2.7 启用日期相关性优化 542 22.2.8 修改数据库参数化行为 543 22.2.9 为事务启用读取一致性 546 22.2.10 配置数据库恢复模式 547 22.2.11 配置页验证 548 22.3 控制数据库访问和拥有关系 550 22.3.1 修改数据库状态为联机、离线或紧急状态 550 22.3.2 修改数据库拥有者 551 22.4 管理数据库文件和文件组 552 22.4.1 为既有的数据库添加数据文件或日志文件 552 22.4.2 从数据库删除数据或日志文件 553 22.4.3 重新分配数据或事务日志文件 554 22.4.4 修改文件的逻辑名称 555 22.4.5 增加数据库文件的大小和修改它的增长选项 556 22.4.6 为既有的数据库添加文件组 557 22.4.7 设置默认文件组 557 22.4.8 删除文件组 558 22.4.9 使数据库或文件组为只读 559 22.5 查看和管理数据库空间使用 560 22.5.1 查看数据库空间使用情况 560 22.5.2 收缩数据库或数据库文件 561 第23章 数据库完整性和优化 565 23.1 数据库检查 565 23.1.1 使用DBCC CHECKALLOC检查磁盘空间分配结构的一致性 565 23.1.2 使用DBCC CHECKDB检查所有数据库的分配和结构完整性 567 23.2 表和约束 569 23.2.1 使用DBCC CHECKFILEGROUP检查文件组中所有表的分配和结构完整性 569 23.2.2 使用DBCC CHECKTABLE检查表和索引视图的数据完整性 570 23.2.3 使用DBCC CHECKCONSTRAINTS检查表的完整性 573 23.2.4 使用DBCC CHECKCATALOG检查系统表的一致性 574 23.3 索引维护 575 23.3.1 重建索引 575 23.3.2 索引碎片整理 577 23.3.3 重建堆 578 第24章 维护数据库对象和对象依赖关系 579 24.1 数据库对象维护 579 24.1.1 修改用户创建的数据库对象的名称 579 24.1.2 修改对象的架构 581 24.2 对象依赖关系 581 24.2.1 标识对象依赖关系 581 24.2.2 标识引用和被引用的实体 583 24.2.3 查看对象定义 585 第25章 数据库镜像 587 25.1 上下文中的数据库镜像 587 25.2 数据库镜像体系结构 588 25.3 设置数据库镜像 589 25.3.1 创建镜像端点 590 25.3.2 备份和还原主体数据库 593 25.3.3 创建数据库镜像会话 595 25.4 设置总结 597 25.5 运行数据库镜像 598 25.5.1 改变运行模式 598 25.5.2 进行故障转移 599 25.5.3 暂停或继续镜像会话 600 25.5.4 停止镜像会话和删除端点 600 25.6 镜像和配置选项 601 25.6.1 监视镜像状态 601 25.6.2 配置连接超时时限 601 第26章 数据库快照 603 26.1 快照基础 603 26.1.1 创建和查询数据库快照 603 26.1.2 删除数据库快照 605 26.1.3 从数据库快照恢复数据 605 第27章 链接服务器和分布式查询 608 27.1 链接服务器基础 608 27.1.1 为另一SQL Server实例创建链接服务器 609 27.1.2 配置链接服务器属性 610 27.1.3 查看链接服务器信息 611 27.1.4 删除链接服务器 611 27.2 链接服务器登录名 612 27.2.1 添加链接服务器登录名映射 612 27.2.2 查看链接登录名 613 27.2.3 删除链接服务器登录名映射 613 27.3 执行分布式查询 614 27.3.1 在链接服务器上执行分布式查询 614 27.3.2 创建和使用引用4部分组成的链接服务器名的别名 615 27.3.3 使用OPENQUERY执行分布式查询 616 27.3.4 使用OPENROWSET执行临时的查询 617 27.3.5 使用OPENROWSET BULK选项从文件中读取数据 618 第28章 查询性能调优 621 28.1 查询性能技巧 622 28.2 捕捉和评估查询性能 623 28.2.1 使用sys.dm_exec_requests捕捉执行的查询 623 28.2.2 使用T-SQL命令查看评估的查询执行计划 624 28.2.3 查看执行运行时信息 627 28.2.4 查看性能统计信息和缓存的查询计划 629 28.2.5 基于查询或计划模式查看聚合的性能统计信息 630 28.2.6 标识出最大瓶颈 632 28.2.7 通过数据库和文件标识出I/O争用 633 28.3 索引调优 634 28.3.1 显示索引碎片 635 28.3.2 显示索引使用情况 637 28.4 统计信息 638 28.4.1 手动创建统计信息 639 28.4.2 行子集上创建统计信息 640 28.4.3 更新统计信息 640 28.4.4 生成及更新所有表的统计信息 641 28.4.5 查看详细的统计信息 642 28.4.6 删除统计信息 643 28.5 杂项技术 643 28.5.1 使用动态SQL的替代方法 644 28.5.2 强制SQL Server使用查询计划 646  28.5.3 不修改应用程序的SQL去应用提示 648 28.5.4 从缓存创建计划指南 651 28.5.5 检查计划指南的有效性 653 28.5.6 使用计划指南将非参数化查询参数化 653 28.5.7 限制查询资源消耗竞争 656 第29章 备份与恢复 662 29.1 创建备份和恢复计划 662 29.2 生成备份 663 29.2.1 执行基本的完全备份 665 29.2.2 压缩备份 666 29.2.3 命名和描述备份和媒体 668 29.2.4 配置备份保持期 669 29.2.5 条带化备份集 670 29.2.6 使用命名的备份设备 670 29.2.7 镜像备份集 672 29.2.8 执行事务日志备份 673 29.2.9 不破坏备份序列创建备份 674 29.2.10 执行差异备份 675 29.2.11 备份单个文件或文件组 675 29.2.12 执行部分备份 677 29.2.13 查看备份元数据 678 29.3 还原数据库 679 29.3.1 从完全备份还原数据库 679 29.3.2 从事务日志备份还原数据库 682 29.3.3 从差异备份还原数据库 684 29.3.4 还原文件或文件组 685 29.3.5 执行部分(PARTIAL)还原 686 29.3.6 还原页面 687 29.3.7 用多种恢复路径识别数据库 688 索引 691 译者序   不知不觉我已经从事数据库相关工作十年了,可以说是与SQL Server一起成长起来的,6.5、7.0、2000、2005,到现在的2008,每一次版本的更新都显著地增强了SQL Server的性能。   比如SQL Server 7.0带来了OLE DB和MSDE。服役时间最长的SQL Server 2000及后续的Service Pack带来了诸如Notification Services、Reporting Services、对Web的支持以及对XML的支持。SQL Server 2005新增了多种T-SQL指令,例如PIVOT/UNPIVOT和公共表表达式(Common Table Expression,CTE)等,强化了XML的处理能力,并新增了原生XML数据类型以及支持原生XML数据类型的XML查询操作符,大幅强化了数据库引擎的安全性功能,并支持数据结构变更的触发程序(DDL Trigger)等。   而本书介绍的SQL Server 2008在T-SQL方面带来了:   可以由管理者设置以调整执行资源的资源调节器(Resource Governer);   数据压缩能力;   DDL(数据定义语言)审核能力;   透明数据加密(Transparent Data Encryption);   本地的DATE和TIME分割的数据类型,并且支持时间位移的DATETIMEOFFSET和更精确的DATETIME2数据类型;   稀疏字段(Sparse Column)的支持,可节省因为NULL值所占据的存储空间;   空间数据类型,包含geometry以及geography数据类型,分别用来存储地理和几何的数据,有助于GIS系统的开发;   变更数据捕获(Change Data Capture);   hierarchyid数据类型,可以存储分层数据;   MERGE命令,可根据与来源数据表联结的结果,在目标数据表上执行插入、更新或删除操作;   ……   因为本书的重点是在T-SQL,其他方面的新增功能就不再阐述了。可以看到,新增的内容还是很多的,而这些内容会贯穿于本书所有章节。   本书在以下几个方面特色鲜明。   知识面广,几乎涵盖所有SQL Server 2008 T-SQL的内容。在学习和工作中遇到的任何T-SQL问题都可以在本书中找到答案。   讲解通俗,突出基础,言简意赅。你可以通过本书迅速找到你关心的T-SQL内容,并很快理解它是如何使用的。   示例丰富。书中提供了大量的代码示例,方便读者理论与实践相结合。通过实际操作,让读者更容易理解相应的内容。   本书主要适合如下读者阅读。 .  初学者可以从头到尾把书细读下来,同时跟着示例在测试环境中做练习。   数据库工作人员可以把它当作参考书,在工作中遇到问题就去查对应的内容。   程序开发人员在做数据库相关的开发工作时,也会从中得到很好的支持。   在校学生通过本书掌握相关知识和技能,在职场竞争中就多一样有力的武器。   在此,我要感谢麦格特尔网络科技有限公司技术部的所有同事,没有他们对我工作的支持,我是没办法完成本书的翻译的。翻译过程中得到了朱晔和孙铭先生的帮助,在此表示感谢。最后,感谢我的父母和妻子,他们是我完成本书的最大动力!还要感谢在我翻译期间出生的宝宝金曼妮,你的诞生是我最好的礼物,你的到来让我的人生更有意义。   由于时间仓促,书中难免存在错漏之处,欢迎读者指正。读者在阅读过程中发现任何问题,都可以发邮件到TSQLRecipes@hotmail.com和我交流。    前言   本书的目的在于快速提供使用T-SQL语言解决问题和执行任务的技巧。为了让你快速了解各个任务及其相关的T-SQL解决方案,我以问题/解决方案的形式编写了本书。你可以从中查找你希望执行的任务,看一下怎么做,然后在你自己的系统中执行。本书编写时遵循了以下几条关键原则。   保持简洁,仅提供完成工作所需要的信息。   让各种技巧之间和各章之间彼此独立——尽量避免交叉引用和内容分散。   主要关注可完全使用T-SQL执行操作的特性。例如,书中会讨论新的资源调控器特性,因为DBA一般会使用T-SQL对它进行部署,但是不会讨论基于策略的管理,因为它对SQL Server代理、SQL Server Management Objects(SMO)和SQL Server Management Studio有底层依赖。幸运的是,大多数新的SQL Server引擎改进都是完全基于T-SQL的,因此本书会讨论这些内容。   涵盖了从初级到高级的各种技巧。每一章都是从基本的技巧开始,然后逐渐上升到更高级的主题。   SQL Server 2008的新特性会贯穿在本书应用它们的各章节中。如果你只是想查找T-SQL更新了哪些新特性,也不用担心,对于每章涉及的新特性,我都会在章首处列出。   尽管本书的关键原则是保持内容简洁,但你会注意到本书还是很厚。这是SQL Server特性集持续扩展的结果,然而请放心,技巧部分还是比较简洁的,并且本书的编排让你能够快速找到完成工作所需要的答案。   本书适合SQL Server开发人员、管理员、应用程序开发人员以及那些负责开发数据库或管理SQL Server环境的IT多面手阅读。你可以从头到尾阅读本书,也可以直接翻到你感兴趣的主题来读。你可以在应聘或考试之前使用本书重温一下某些主题。对于有经验的SQL Server专业人士来说,如果有些命令或技术忘记了,本书可以帮助他们迅速拾起它们的用法。   感谢你的阅读!   
2022-03-14 15:33:59 48.06MB SQL Server 实战 DBA
1