
本书全面介绍SQL Server 2012各方面的知识,全书由5部分组成:第1部分为数据库的基础篇,介绍了数据库的类型、概念、对象、SQL语言等;第2部分为SQL Server 2012的准备篇,介绍SQL Server 2012的功能、特性、各版本的比较、安装方法、SQL Server 2012的服务、客户端的工具等;第3部分为SQL Server 2012的基本操作篇,介绍如何管理与配置SQL Server 2012服务器,如何创建数据库和数据表,以及如何对数据库里的数据进行操作;第4部分为数据库管理篇,介绍如何使用T-SQL程序对数据进行复杂的运算,以及如何使用视图、存储过程、触发器、索引、用户定义数据类型、用户定义函数、全文索引、游标、事务和锁等方面的知识;第5部分为SQL Server高级技术和SQL Server 2012的主要新增功能,介绍如何进行数据库备份与恢复,如何规划数据库,如何保证数据库的安全、自动化管理,如何使用性能工具优化数据库、数据的导入导出、Analysis Services、Reporting Services、SQL Server Integration Service、包含数据库、文件表等技术。
前 言 目前的企业发展越来越快,在这些企业中可能会面对许多数据方面的问题,更好地利用数据可以为企业带来更多的效益,降低管理、生产等各方面的成本。例如,从众多信息里找出有用的信息,将有用的信息整合在一起以便随时查询,查询出来的数据以什么方式呈现给用户,根据这些数据如何做出更快、更准确的决策,提高开发团队的生产力和灵活度,如何在减少投入的同时扩展基础架构以满足更多的要求,等等。 SQL Server就是为解决这些问题而诞生的,SQL Server 2012在之前版本的基础上新增了许多功能,使其功能进一步加强,是目前最新、功能最为强大的SQL Server版本,是一个能用于大型联机事务处理、数据仓库和电子商务等方面应用的数据库平台,也是一个能用于数据集成、数据分析和报表解决方案的商业智能平台。SQL Server 2012扩展了性能、可靠性、可用性、可编程性和易用性等各个方面的功能,为系统管理员和普通用户带来了强大的、集成的、便于使用的工具,使系统管理员与普通用户能更方便、更快捷地管理数据库或设计开发应用程序。 为了帮助众多初学者更快掌握SQL Server 2012数据库基础,也为了有一定基础的读者能够更快地提高,笔者精心编著了本书。本书依照读者的学习规律,由浅入深、循序渐进地介绍了SQL Server 2012的运用知识。 在本书中,先介绍了数据库的基础概念,然后介绍如何安装SQL Server 2012软件、SQL Server 2012中有哪些服务和工具。在了解这些基本概念之后,再学习如何创建数据库、数据表,如何对数据表里的记录进行操作。在这些基础之上,介绍了更多数据库对象的运用方法,进一步介绍了SQL Server 2012中的复制与发布、自动化管理、性能提高、数据仓库、SSIS、包含数据库、文件表等高级知识。 为了让读者能尽快掌握SQL Server 2012的相关知识,本书的每个章节都是先介绍相关概念,然后介绍如何在SQL Server 2012的图形界面里完成学到的操作。为了让有一定基础的读者能方便地提高,在介绍完图形界面操作之后,还介绍了如何用T-SQL语句完成同样的操作。 在本书中,所有示例都经过反复实验,确认可以准确无误地运行。只要读者可以灵活运行这些示例,就可以充分掌握SQL Server 2012的精髓,轻松建立所需的数据库系统并高效地应用。 本书特色 实例丰富,内容充实:在本书中,针对每一个知识点都列举了大量实例来说明该功能如何实现,其中仅T-SQL语言的相关实例就有近450个。除了这些T-SQL实例之外,还有大量的图形界面实例,这些实例完整地介绍了如何实现SQL Server 2012中的众多功能。 讲解通俗,步骤详细:在本书中,每个实例的步骤都使用通俗易懂的语言描述,并配以插图讲解和文字说明,读者只需按照步骤操作,就可以体会到SQL Server 2012的强大功能,并在学习中掌握实际运用技巧。 由浅入深,难易穿插:本书的读者对象包括入门级和提高级两类,因此在书中的每个章节里对知识点的介绍都是由浅入深,并穿插讲解。例如在介绍如何创建数据库时,会先以图形界面为例,讲解如何使用向导进行操作,此部分内容适合入门级读者阅读;在介绍完图形界面的操作之后,会介绍如何用T-SQL语言来创建数据库,并详细介绍了创建数据库的T-SQL语句参数,该部分内容适合提高级读者阅读。 本书内容 第1章:介绍了数据库的类型和概念、常见的数据库对象有哪些、数据库管理系统有哪些基本功能、SQL语言是什么。 第2章:在了解了数据库的基本概念之后,介绍SQL Server 2012是什么、SQL Server 2012有什么新特性和新功能、SQL Server 2012众多版本之间有什么区别,然后介绍了安装SQL Server 2012的系统要求,如何安装SQL Server 2012,如何升级到SQL Server 2012。 第3章:在学习了安装SQL Server 2012的基础上,介绍了SQL Server 2012中有哪些后台服务,有哪些管理工具,最后还介绍了如何使用SQL Server Management Studio。 第4章:此章知识是使用SQL Server 2012的第一步,介绍了SQL Server 2012的工作模式、如何连接与断开数据库服务器,然后介绍如何配置SQL Server服务、远程服务、服务器,最后介绍了如何查看SQL Server 2012的日志。 第5章:主要介绍管理数据库相关知识,包括如何创建数据库,如何修改数据库配置,如何分离与附加数据库,如何让数据库脱机和联机,如何收缩数据库,如何删除数据库,如何编写数据库的脚本。 第6章:主要介绍如何管理数据库,包括什么是数据表、创建数据表时可能要使用的数据类型有哪些、如何创建数据表、如何修改数据表结构、如何删除数据表、如何编写数据表脚本,然后介绍了关系图、临时表、已分区表的相关内容。 第7章:主要介绍如何操作数据表中的记录,包括如何查看、插入、更新和删除记录,如何对数据表里的记录进行复杂的查询。 第8章:在了解了如何操作数据表中的记录之后,进一步介绍如何通过T-SQL程序来进行更复杂的记录操作,其中包括如何引用数据库对象、T-SQL中的批处理、注释、数据类型转换、运算符、常量和变量、流程控制、常用函数和关键字。 第9章:主要介绍视图的操作,包括什么是视图,如何创建、查看、修改与删除视图,如何将视图与架构绑定,如何检查视图中的数据变动,如何编辑视图中的记录,如何为视图重命名。 第10章:主要介绍存储过程的操作,包括什么是存储过程,如何创建、修改、执行和删除存储过程,常用的系统存储过程有哪些。 第11章:主要介绍触发器的操作,包括什么是触发器、触发器的分类、触发器的工作原理,在了解了触发器的基础上学习如何创建、修改、启用、禁用和删除触发器,最后还介绍了触发器的嵌套、递归,以及触发器的应用技巧。 第12章:主要介绍索引的操作,包括什么是索引、索引结构与分类,在了解了索引的基础上学习如何创建、查看、修改、禁用和删除索引,然后介绍如何重新生成和重新组织索引,最后介绍视图的索引。 第13章:在了解了数据类型的基础上学习如何创建、使用和删除用户定义数据类型和函数。 第14章:介绍什么是全文索引、全文索引的体系结构,如何创建和删除全文目录,如何创建和删除全文索引,如何填充全文索引,如何使用全文搜索等。 第15章:主要介绍游标的应用,包括什么是游标,如何定义与删除游标,如何打开与关闭游标,如何使用游标处理数据,游标的分类,游标的嵌套,游标变量的使用方法,游标中常用的变量、函数和存储过程等。 第16章:主要介绍事务与锁的相关概念,包括什么是事务和锁、如何编写事务、事务的嵌套、事务的保存点、事务的隔离级别、锁的对象和模式、什么是死锁等。 第17章:主要介绍如何对数据库进行备份与恢复,包括备份与恢复的基础知识、备份的类型、恢复的模式、如何备份数据库、如何还原数据库、如何管理备份设备、如何进行自动备份。 第18章:主要介绍SQL Server 2012中的系统数据库、系统数据表、系统视图以及系统函数,最后还介绍了如何规划数据库。 第19章:主要介绍如何保证SQL Server 2012的安全,包括SQL Server 2012身份验证模式、访问权限、用户的设置、角色的分类、角色的设置、架构以及如何确保数据库服务器的安全。 第20章:主要介绍如何进行SQL Server自动化管理,包括SQL Server代理与操作员的基础知识,如何创建与删除作业,如何启用与禁用作业,如何手动和自动执行作业,如何创建与删除警报,如何启用与禁用警报,如何修改警报,什么是通知,如何使用维护计划,如何查看错误日志。 第21章:主要介绍SQL Server Profiler和数据库引擎优化顾问两个工具的使用方法,包括什么是SQL Server Profiler,如何创建跟踪,如何存储与载入事件记录,如何创建跟踪模板,还介绍了数据库引擎优化顾问是什么,如何使用数据库引擎优化顾问。 第22章:主要介绍如何在SQL Server中导入与导出数据、在导入与导出数据时如何转换数据类型,如何在不同的数据源与目标源之间导入或导出数据。 第23章:主要介绍什么是Analysis Services,如何创建数据源,如何创建数据源视图,如何创建多维数据集,如何部署Analysis Services项目,如何查看多维数据集。 第24章:主要介绍什么是Reporting Services,如何创建报表服务器项目,如何创建数据源,如何创建报表,如何发布报表,如何自定义报表信息。 第25章:主要介绍SQL Server Integration Service,包括SSIS的开发和用途。 第26章:主要介绍SQL Server 2012安全新特性——包含数据库,其中讲解了部分包含数据库和完整包含数据库存在的一些差异。 第27章:主要介绍SQL Server 2012开发新特性——文件表(FileTable),其中讲解了文件表的基本概念和注意事项,然后演示了一些文件表的基本操作,如增、删、改等操作。 适合阅读本书的读者 本书具有实例丰富、知识全面等特点,因此本书既可以作为初学者学习SQL Server 2012的入门教程,也可以作为中级读者的提高教程。本书包含大量、详细的T-SQL语法介绍,也可作为参考手册进行查阅,对高级读者也有一定的帮助。 具体来说,本书适合如下读者阅读: SQL Server初、中级读者。 数据库管理员(DBA)。 数据库系统开发与维护人员。 SQL Server终端用户。 大、中专院校相关专业的师生。 本书作者 本书第1~20章由廖梦怡编写,第21~27章由王金柱编写,最终由王金柱进行统筹整理,同时参与编写的还有张燕、杜海梅、孟春燕、吴金艳、鲍凯、庞雁豪、杨锐丽、鲍洁、王小龙、李亚杰、张彦梅、刘媛媛、李亚伟、张昆,在此一并表示感谢。
目 录 第1部分 基础篇 第1章 认识数据库 2 1.1 数据库的类型 2 1.1.1 结构型数据库 2 1.1.2 网络型数据库 2 1.1.3 关系型数据库 2 1.1.4 面向对象型数据库 3 1.2 数据库的基本概念 3 1.2.1 数据 3 1.2.2 数据库 3 1.2.3 数据库管理系统 3 1.2.4 数据库系统 3 1.3 常见的数据库对象 3 1.3.1 表与记录 4 1.3.2 主键与外键 4 1.3.3 索引 4 1.3.4 约束 4 1.3.5 视图 5 1.3.6 关系图 5 1.3.7 默认值 5 1.3.8 规则 5 1.3.9 存储过程 5 1.3.10 触发器 6 1.3.11 用户和角色 6 1.4 数据库管理系统的基本功能 6 1.4.1 定义数据 6 1.4.2 处理数据 6 1.4.3 保证数据安全 6 1.4.4 备份和恢复数据 6 1.5 SQL语言简介 6 1.5.1 SQL语言的历史 7 1.5.2 SQL语言的优点 7 1.5.3 SQL语言分类 7 1.6 数据库系统的用户 8 1.7 小结 8 第2章 SQL Server 2012简介及安装 9 2.1 SQL Server 2012简介 9 2.1.1 SQL Server 2012数据平台 9 2.1.2 使用SQL Server 2012的优势 10 2.2 SQL Server 2012的新功能 10 2.2.1 可信任性 11 2.2.2 开发和管理生产效率 11 2.2.3 商业智能 12 2.3 SQL Server 2012各版本介绍及对比 14 2.4 安装SQL Server 2012的系统要求 14 2.4.1 CPU与内存要求 14 2.4.2 硬盘空间要求 15 2.5 安装SQL Server 2012 15 2.6 升级到SQL Server 2012 26 2.6.1 升级之前要考虑的问题 26 2.6.2 升级注意事项 27 2.6.3 升级到SQL Server 2012 28 2.7 小结 29 第2部分 准备篇 第3章 初识SQL Server 2012 32 3.1 服务器上的后台服务 32 3.1.1 SQL Server服务 33 3.1.2 SQL Server Active Directory Helper服务 33 3.1.3 SQL Server Agent服务 33 3.1.4 SQL Server Analysis Services 服务 33 3.1.5 SQL Server Browser服务 34 3.1.6 SQL Server FullText Search 服务 34 3.1.7 SQL Server Integration Services服务 34 3.1.8 SQL Server Reporting Services服务 34 3.1.9 SQL Server VSS Writer服务 35 3.2 客户端管理工具 35 3.2.1 SQL Server Management Studio企业管理器 35 3.2.2 Reporting Services配置 35 3.2.3 SQL Server Configuration Manager配置管理器 37 3.2.4 SQL Server错误和使用情况 报告 38 3.2.5 SQL Server Profiler探查器 39 3.2.6 数据库引擎优化顾问 41 3.2.7 Visual Studio 2012 42 3.2.8 SQL Server Business Intelligence Development Studio工具 43 3.3 SQL Server Management Studio 43 3.3.1 认识SQL Server Management Studio的界面 43 3.3.2 更改SQL Server Management Studio的界面布局 43 3.3.3 使用查询编辑器 44 3.3.4 利用编辑器自动生成查询语句 45 3.3.5 脱机编写SQL语句后连接 到服务器 46 3.3.6 全屏显示查询编辑器 46 3.3.7 使用模板编写SQL语句 46 3.3.8 创建自定义模板 48 3.3.9 使用项目脚本和解决方案 49 3.4 小结 50 第3部分 基础操作篇 第4章 数据库服务器管理 52 4.1 连接与断开数据库服务器 52 4.1.1 用SQL Server Management Studio连接服务器 52 4.1.2 断开与数据库服务器的连接 54 4.2 使用配置管理器配置SQL Server服务 54 4.2.1 启动/停止/暂停/重新启动服务 54 4.2.2 配置服务的启动模式 57 4.2.3 更改登录身份 58 4.3.4 SQL Server 2012使用的网 络协议 59 4.2.5 为SQL Server 2012配置 共享内存协议 59 4.2.6 为SQL Server 2012配置 TCP/IP协议 61 4.2.7 配置客户端网络协议的使 用顺序 64 4.2.8 隐藏实例 65 4.3 配置SQL Server 2012服务器 65 4.3.1 服务器属性的常规设置 66 4.3.2 服务器属性的内存设置 66 4.3.3 服务器属性的处理器设置 68 4.3.4 服务器属性的安全性设置 69 4.3.5 服务器属性的连接设置 70 4.3.6 服务器属性的数据库设置 71 4.3.7 服务器属性的高级选项设置 72 4.3.8 服务器属性的权限设置 74 4.4 小结 74 第5章 数据库管理 75 5.1 创建数据库前的准备 75 5.1.1 数据库命名规则 75 5.1.2 创建数据库需要的权限 76 5.1.3 数据库的所有者 76 5.1.4 数据库的上限 76 5.1.5 数据库文件和文件组 76 5.1.6 记录数据库操作的事务日志 77 5.1.7 数据库状态 77 5.2 在SQL Server Management Studio 中创建数据库 77 5.3 使用Create database语句创建数据库 83 5.3.1 基本语法 83 5.3.2 T-SQL中的语法约定 84 5.3.3 参数讲解 85 5.3.4 Create database语句需要 注意的功能 86 5.3.5 举例说明 86 5.3.6 使用模板 89 5.4 修改数据库设置 92 5.4.1 使用SQL Server Management Studio修改数据库设置 92 5.4.2 查看数据库的基本信息 93 5.4.3 增加、删除与修改数据库文件 93 5.4.4 修改数据库的所有者 95 5.4.5 设置全文索引 96 5.4.6 增加、删除与修改文件组 96 5.4.7 修改数据库的排序规则 97 5.4.8 修改数据库的兼容性 98 5.4.9 限制用户的访问 98 5.4.10 设置用户及角色对数据库 的使用权限 98 5.4.11 修改数据库名称 100 5.5 使用Alter database语句修改数据库 101 5.5.1 基本语法 101 5.5.2 参数说明 101 5.5.3 Alter database语句的注意 事项 104 5.5.4 典型案例 104 5.6 分离与附加数据库 106 5.6.1 分离数据库 106 5.6.2 附加数据库 109 5.7 脱机和联机数据库 113 5.7.1 脱机数据库 113 5.7.2 联机数据库 114 5.8 删除数据库 115 5.8.1 在SQL Server Management Studio中删除数据库 115 5.8.2 用Drop database语句删 除数据库 116 5.9 收缩数据库 116 5.9.1 自动收缩数据库 117 5.9.2 手动收缩数据库 117 5.9.3 手动收缩数据库文件 119 5.10 编写数据库脚本 121 5.11 小结 123 第6章 数据表管理 124 6.1 数据表简介 124 6.1.1 数据表的分类 125 6.1.2 认识列 125 6.2 数据类型 125 6.2.1 精确数字型 126 6.2.2 近似数字型 127 6.2.3 日期和时间型 127 6.2.4 字符串型 128 6.2.5 Unicode字符串型 128 6.2.6 二进制字符串型 128 6.2.7 其他数据类型 129 6.2.8 用户自定义型 129 6.3 在SQL Server Management Studio 中创建表 130 6.3.1 定义数据表的字段和主键 130 6.3.2 设置默认值 132 6.3.3 设置标识列 132 6.3.4 建立表与表之间的关系 133 6.3.5 创建索引 136 6.3.6 创建约束 137 6.3.7 设置数据表所在文件组 139 6.4 用T-SQL语言创建表 140 6.4.1 基本语法 140 6.4.2 参数说明 140 6.4.3 创建新表 145 6.4.4 创建标识字段 146 6.4.5 创建带标识种子和标识增量 的标识字段 146 6.4.6 创建非Null字段 146 6.4.7 字段的默认值 147 6.4.8 将创建的表放在文件组中 147 6.4.9 使用Check约束 147 6.4.10 设置字段的排序规则 148 6.4.11 创建外键 148 6.4.12 设置外键的更新规则和 删除规则 148 6.4.13 创建Unique约束 149 6.4.14 创建计算列 149 6.4.15 设置数据表的约束 150 6.4.16 Create table语句的注意 事项 150 6.5 在SQL Server Management Studio 中修改表 150 6.5.1 修改数据表名 150 6.5.2 插入、移动和删除数据表的 字段 151 6.5.3 修改字段数据类型 152 6.5.4 修改主键、外键、索引和 约束 152 6.5.5 修改数据表属性 152 6.6 用T-SQL语言修改数据表结构 154 6.6.1 基本语法 154 6.6.2 参数说明 154 6.6.3 修改字段属性 158 6.6.4 添加字段 159 6.6.5 添加字段并设置字段属性 159 6.6.6 删除字段 159 6.6.7 添加约束 159 6.6.8 禁用约束 159 6.6.9 启用约束 160 6.6.10 删除约束 160 6.6.11 设置主键 160 6.6.12 修改字段名和数据表名 161 6.6.13 Alter table语句的注意事项 161 6.7 在SQL Server Management Studio 中删除表 161 6.8 用Drop table删除数据表 164 6.9 编写表脚本 164 6.10 数据库关系图的使用 165 6.10.1 创建数据库关系图并添加 数据表 165 6.10.2 添加相关联的数据表 167 6.10.3 更改数据表的显示模式 167 6.10.4 在关系图中删除数据表 168 6.10.5 建立和删除表与表之间的 关联 168 6.11 临时表简介 169 6.12 已分区表简介 170 6.13 小结 170 第7章 数据(记录)操作 172 7.1 在SQL Server Management Studio 中查看记录 172 7.1.1 选择前1000行 172 7.1.2 返回前几条记录 173 7.2 在SQL Server Management Studio 中插入记录 173 7.3 用Insert语句插入记录 175 7.3.1 基本语法 175 7.3.2 参数说明 175 7.3.3 简单地插入语句 176 7.3.4 按表中不同字段顺序插入 记录 176 7.3.5 插入值少于字段数的记录 177 7.3.6 在标识列字段里插入字段 内容 177 7.3.7 从数据表中查询记录并插入 到另一个表中 177 7.3.8 从数据表中查询部分字段 记录并插入到另一个表中 178 7.3.9 从数据表中查询记录插入其他 表并为字段添加固定内容 178 7.3.10 在Insert语句中使用exec 子句 179 7.3.11 在数据中只插入默认值 179 7.4 插入记录的注意事项 179 7.5 用Update语句更新记录 180 7.5.1 基本语法 180 7.5.2 参数说明 180 7.5.3 简单的更新语句 182 7.5.4 使用计算值更新记录 182 7.5.5 引用其他表里的字段值更 新记录 182 7.5.6 使用top子句更新记录 182 7.6 在SQL Server Management Studio 中删除记录 183 7.7 用Delete语句删除记录 183 7.7.1 基本语法 183 7.7.2 参数说明 184 7.7.3 简单的删除语句 184 7.7.4 删除多条记录 185 7.7.5 引用其他表里的字段值来 删除记录 185 7.8 用Truncate table语句删除记录 185 7.9 用Select语句进行查询 186 7.10 用Select子句设定查询内容 186 7.10.1 基本语法 186 7.10.2 参数说明 187 7.10.3 查询表中所有列 187 7.10.4 查询表中某几列 188 7.10.5 为查询添加计算列 188 7.10.6 查看最前记录 189 7.10.7 查看不重复记录 190 7.10.8 查询表中的标识列或GUID 列 191 7.11 用From子句指定查询哪些表 191 7.11.1 基本语法 191 7.11.2 参数说明 192 7.11.3 简单的From子句 193 7.11.4 从两个表中联合查询记录 193 7.11.5 从多个表中联合查询记录 195 7.11.6 Join的其他类型 195 7.11.7 使用表别名 197 7.11.8 表Join自身 198 7.12 用Where子句设定查询条件 198 7.12.1 基本语法 198 7.12.2 参数说明 199 7.12.3 单个查询条件 200 7.12.4 设置多个查询条件 200 7.12.5 在查询条件里使用函数 201 7.12.6 查询两个条件之间的记录 201 7.12.7 查询字段内容为Null的 记录 201 7.12.8 将结果集作为查询条件 202 7.12.9 模糊查询 202 7.12.10 在模糊查询中查询含有 通配符的文本 204 7.12.11 使用EXISTS关键字 204 7.12.12 使用ALL,ANY和SOME 关键字 205 7.13 使用Order by子句排序 206 7.13.1 基本语法 206 7.13.2 参数说明 206 7.13.3 按一个字段排序 207 7.13.4 按多个字段排序 207 7.14 使用Group by子句分组 207 7.14.1 基本语法 207 7.14.2 参数说明 207 7.14.3 Group by的基本用法 208 7.14.4 在Group by中使用表达式 208 7.14.5 使用with cube对所有字 段进行汇总 209 7.14.6 使用with rollup对第一个 字段进行汇总 210 7.14.7 使用Group by all对所有 数据分组 210 7.15 使用Having子句在分组中设置查 询条件 211 7.15.1 基本语法 211 7.15.2 使用Having对分组设置 查询条件 212 7.16 使用Compute子句归类 212 7.16.1 基本语法 212 7.16.2 参数说明 213 7.16.3 使用Compute归类 213 7.16.4 使用Compute by归类 214 7.17 使用Union子句合并多个查询结果 214 7.17.1 基本语法 215 7.17.2 参数说明 215 7.17.3 使用Union All合并两个查 询结果集 215 7.17.4 使用Union合并两个查询 结果集 216 7.17.5 使用Union加入临时数据 216 7.17.6 在Union的结果集里排序 216 7.17.7 在Union的结果集里分组 217 7.18 使用Select into子句为查询结果 建立新表 217 7.18.1 基本语法 217 7.18.2 使用Select into创建一个 新表 217 7.18.3 在Select into中设置复杂 的查询条件 218 7.18.4 使用Select into复制表结构 218 7.19 在不同的数据库中查询记录 218 7.20 Null字段的处理方法 219 7.20.1 使用Null时要注意的事项 219 7.20.2 检查字段内容是否为Null 219 7.20.3 使用ISNULL函数替换 Null值 220 7.21 OUTPUT和WRITE子句 220 7.21.1 OUTPUT子句 220 7.21.2 WRITE子句 221 7.22 小结 222 第4部分 数据库管理篇 第8章 T-SQL程序 224 8.1 T-SQL概述 224 8.1.1 什么是T-SQL 224 8.1.2 T-SQL的语法约定 224 8.2 数据库对象的引用方法 225 8.2.1 引用数据库对象的方法 225 8.2.2 架构 226 8.2.3 创建自定义架构 227 8.3 T-SQL中的批处理 227 8.3.1 一次执行多个T-SQL语句 228 8.3.2 使用GO语句分隔多个批 228 8.4 T-SQL中的注释 229 8.4.1 --注释 229 8.4.2 /*……*/注释 229 8.5 T-SQL数据类型及转换 230 8.5.1 使用Cast转换数据类型 230 8.5.2 使用Convert转换数据类型 231 8.5.3 隐式数据类型转换 232 8.5.4 数据类型转换时的注意事项 233 8.6 兼容级别设置 233 8.6.1 语法 233 8.6.2 使用SQL Server Management Studio更改兼容级别 234 8.6.3 数据库兼容的注意事项 235 8.6.4 兼容级别导致的影响 235 8.6.5 兼容级别示例 237 8.6.6 兼容级别对ORDER BY的 影响示例 237 8.7 T-SQL运算符 240 8.7.1 算术运算符 240 8.7.2 赋值运算符 240 8.7.3 位运算符 240 8.7.4 比较运算符 240 8.7.5 逻辑运算符 241 8.7.6 字符串串联运算符 241 8.7.7 一元运算符 241 8.7.8 复合运算符 242 8.7.9 运算符的优先级 243 8.8 T-SQL中的常量 243 8.8.1 字符串常量 243 8.8.2 Unicode常量 243 8.8.3 二进制常量 244 8.8.4 bit常量 244 8.8.5 datetime常量 244 8.8.6 integer常量 244 8.8.7 decimal常量 245 8.8.8 float和real常量 245 8.8.9 money常量 245 8.8.10 uniqueidentifier常量 245 8.8.11 在T-SQL中使用常量 245 8.9 T-SQL中的变量 246 8.9.1 局部变量 246 8.9.2 全局变量 248 8.10 T-SQL的流程控制 250 8.10.1 Begin…End语句 250 8.10.2 If…Else语句 251 8.10.3 While语句 252 8.10.4 Case语句 254 8.10.5 Goto语句 256 8.10.6 Waitfor语句 257 8.10.7 Return语句 258 8.10.8 Try…Catch语句 258 8.10.9 Execute语句 259 8.11 Convert函数 260 8.11.1 语法 261 8.11.2 二进制与字符十六进制 转换示例 261 8.12 日期和时间功能 262 8.12.1 语法 262 8.12.2 ISO周-日示例 263 8.12.3 日期功能的注意事项 263 8.13 Grouping Sets分组 264 8.13.1 语法 264 8.13.2 注意事项 264 8.13.3 Grouping Sets分组示例 265 8.14 T-SQL的常用函数 265 8.14.1 聚合函数 265 8.14.2 日期和时间函数 266 8.14.3 数学函数 266 8.14.4 字符串函数 267 8.14.5 文本和图像函数 268 8.14.6 配置函数 268 8.14.7 游标函数 268 8.14.8 元数据函数 268 8.14.9 行集函数 269 8.14.10 安全函数 269 8.14.11 系统统计函数 270 8.14.12 其他函数 270 8.15 不应使用的关键字 272 8.16 小结 273 第9章 视图 274 9.1 视图简介 274 9.2 创建视图 275 9.2.1 在SQL Server Management Studio中创建视图 276 9.2.2 使用Create view语句创建 视图 277 9.3 查看与修改视图 280 9.3.1 查看视图 280 9.3.2 在SQL Server Management Studio中修改视图 281 9.3.3 使用Alter view语句修改视图 281 9.4 加密视图 282 9.5 限制视图所用的表或视图不能更改 设计和删除 283 9.6 检查视图的数据变动 285 9.7 编辑视图中的记录 285 9.7.1 编辑视图中的记录的限制 285 9.7.2 在SQL Server Management Studio中操作视图记录 286 9.7.3 使用Insert,Update和Delete 语句操作视图记录 286 9.8 删除视图 287 9.8.1 在Management Studio中 删除视图 287 9.8.2 使用Drop view语句删除 视图 287 9.9 为视图重命名 287 9.10 小结 288 第10章 存储过程 289 10.1 存储过程简介 289 10.1.1 存储过程的概念 289 10.1.2 使用存储过程的优点 289 10.1.3 存储过程的分类 290 10.2 创建存储过程 290 10.2.1 使用Create procedure语 句创建存储过程 290 10.2.2 在SQL Server Management Studio中建立存储过程 292 10.3 修改存储过程 293 10.3.1 使用Alter procedure语句 修改存储过程 294 10.3.2 在SQL Server Management Studio中修改存储过程 294 10.3.3 修改存储过程名 295 10.4 执行存储过程 295 10.5 设计存储过程的高级技巧 298 10.5.1 设计存储过程时的注意事项 298 10.5.2 参数传递的方式 299 10.5.3 存储过程的返回值 300 10.5.4 不显示影响行数的通知 302 10.5.5 临时存储过程 303 10.5.6 嵌套调用存储过程 303 10.5.7 查看存储过程的依赖关系 304 10.5.8 加密存储过程 305 10.5.9 查看存储过程的源代码 305 10.5.10 设计存储过程组 306 10.6 删除存储过程 307 10.6.1 使用Drop procedure语句 删除存储过程 307 10.6.2 在SQL Server Management Studio中删除存储过程 307 10.7 常用的系统存储过程 308 10.7.1 sp_help:查看对象信息 308 10.7.2 sp_helpdb:查看数据库 信息 309 10.7.3 sp_helpfile:查看数据库 文件信息 309 10.7.4 sp_helpfilegroup:查看文 件组信息 309 10.7.5 sp_helpindex:查看索引 信息 309 10.7.6 sp_helpsort:查看排序及 字符集信息 309 10.7.7 sp_helpstats:查看列和索 引的统计信息 309 10.7.8 sp_helptext:查看对象内容 310 10.7.9 sp_helptrigger:查看触发 器信息 310 10.7.10 sp_lock:查看锁信息 310 10.7.11 sp_monitor:查看系统统 计信息 310 10.7.12 sp_rename:修改对象名 310 10.7.13 sp_renamedb:修改数据 库名 311 10.7.14 sp_who:查看用户和进程 信息 311 10.7.15 sp_columns:查看列信息 311 10.7.16 sp_databases:查看数据 库信息 311 10.7.17 sp_fkeys:查看外键信息 311 10.7.18 sp_pkeys:查看主键信息 312 10.7.19 sp_server_info:查看SQL Server信息 312 10.7.20 sp_tables:查看表或视图 信息 312 10.7.21 sp_stored_procedures: 查看存储过程信息 312 10.8 CLR存储过程 313 10.8.1 创建CLR存储过程的步骤 313 10.8.2 开启CLR支持 313 10.8.3 编写CLR存储过程内容 313 10.8.4 将CLR存储过程编译成 DLL文件 316 10.8.5 注册程序集 316 10.8.6 创建引用程序集的存储过程 317 10.8.7 执行CLR存储过程 317 10.9 小结 318 第11章 触发器 319 11.1 触发器简介 319 11.1.1 触发器的概念和作用 319 11.1.2 触发器的种类 320 11.2 DML触发器的分类 320 11.3 DML触发器的工作原理 320 11.3.1 After触发器的工作原理 321 11.3.2 Instead Of触发器的工作 原理 321 11.4 设计DML触发器的注意事项及 技巧 321 11.4.1 设计触发器的限制 321 11.4.2 如何用触发器取得字段修 改前和修改后的数据 322 11.4.3 使用DML触发器的注意 事项 322 11.5 设计After触发器 323 11.5.1 设计简单的After触发器 323 11.5.2 测试触发器功能 325 11.5.3 建立触发器的SQL语句 326 11.6 设置After触发器的激活顺序 328 11.7 触发器的嵌套 330 11.8 触发器的递归 333 11.9 设计Instead Of触发器 333 11.9.1 Instead Of触发器的使用 范围 334 11.9.2 设计简单的Instead Of触 发器 334 11.10 查看DML触发器 335 11.10.1 在SQL Server Management Studio中查看触发器 335 11.10.2 使用系统存储过程查看 触发器 336 11.11 修改DML触发器 337 11.12 删除DML触发器 338 11.13 禁用与启用DML触发器 338 11.14 DDL触发器 339 11.15 设计DDL触发器 339 11.15.1 建立DDL触发器的语句 339 11.15.2 测试触发器功能 342 11.16 查看与修改DDL触发器 344 11.17 触发器的应用技巧 345 11.17.1 如何知道触发器修改了 多少条记录 345 11.17.2 如何知道插入记录的自 动编号是多少 346 11.17.3 如何知道某个字段是否 被修改 346 11.17.4 如何返回错误信息 348 11.18 小结 349 第12章 索引 350 12.1 索引简介 350 12.2 索引的结构 350 12.3 索引的分类 351 12.3.1 聚集索引与非聚集索引 351 12.3.2 唯一索引 351 12.3.3 复合索引与包含性列索引 352 12.3.4 视图索引 352 12.3.5 全文索引 352 12.3.6 XML索引 352 12.4 系统自动建立的索引 353 12.4.1 主键字段 353 12.4.2 Unique字段 353 12.5 建立索引的注意事项 354 12.6 在SQL Server Management Studio 中创建索引 354 12.7 使用Create index语句创建索引 357 12.7.1 基本语法 357 12.7.2 参数说明 358 12.7.3 创建简单的索引 358 12.7.4 创建简单的复合索引 359 12.7.5 创建唯一索引 359 12.7.6 创建聚集索引 359 12.7.7 创建降序的非聚集索引 359 12.7.8 创建包含性列索引 360 12.7.9 创建索引并指定其所在的 文件组 360 12.7.10 创建索引并设置填充因子 360 12.7.11 创建索引并设置填充索引 360 12.7.12 创建复杂的索引 361 12.8 查看与修改索引 361 12.8.1 在SQL Server Management Studio中查看与修改索引 361 12.8.2 使用sp_helpindex查看索引 363 12.8.3 使用sys.indexes视图查 看索引信息 363 12.8.4 使用Alter index语句修改 索引 364 12.9 重新生成和重新组织索引 365 12.9.1 在SQL Server Management Studio中重新生成索引 366 12.9.2 在SQL Server Management Studio中重新组织索引 366 12.9.3 使用REBUILD参数重新 生成索引 367 12.9.4 使用REORGANIZE参数 重新组织索引 368 12.9.5 使用SQL Server Management Studio查看索引碎片 368 12.9.6 使用函数sys.dm_db_index_ physical_stats查看索引 碎片 368 12.10 禁用索引 370 12.10.1 在SQL Server Management Studio中禁用索引 370 12.10.2 使用DISABLE参数禁用 索引 371 12.11 重命名索引 371 12.12 删除索引 371 12.12.1 删除索引的注意事项 371 12.12.2 在SQL Server Management Studio中删除索引 372 12.12.3 使用Drop index语句删 除索引 372 12.13 索引视图 372 12.13.1 索引视图简介 372 12.13.2 创建索引视图 372 12.14 小结 373 第13章 用户定义数据类型和函数 374 13.1 用户定义数据类型 374 13.1.1 创建用户定义数据类型 374 13.1.2 使用用户定义数据类型 376 13.1.3 删除用户定义数据类型 377 13.2 用户定义函数 378 13.2.1 用户定义函数与存储过程 的比较 378 13.2.2 用户定义函数类型 379 13.2.3 创建标量值函数 379 13.2.4 创建内联表值函数 381 13.2.5 创建多语句表值函数 382 13.2.6 在SQL Server Management Studio里创建用户定义函数 384 13.2.7 查看与修改用户定义函数 385 13.2.8 使用用户定义函数 385 13.2.9 删除用户定义函数 387 13.3 小结 387 第14章 全文索引 388 14.1 全文索引简介 388 14.2 全文索引常用术语 388 14.3 全文索引的体系结构 389 14.4 全文目录管理 390 14.4.1 创建全文目录 390 14.4.2 查看与修改全文目录 391 14.4.3 删除全文目录 392 14.5 全文索引管理 392 14.5.1 创建全文索引的注意事项 392 14.5.2 创建全文索引 392 14.5.3 查看与修改全文索引 396 14.5.4 启用和禁用全文索引 397 14.5.5 删除全文索引 397 14.6 填充全文索引 397 14.6.1 填充全文索引的方式 398 14.6.2 填充全文索引 398 14.6.3 定时填充全文索引 398 14.7 使用全文搜索查询数据 400 14.7.1 使用CONTAINS搜索 401 14.7.2 使用FREETEXT搜索 405 14.7.3 使用CONTAINSTABLE 搜索 406 14.7.4 使用FREETEXTTABLE 搜索 408 14.7.5 搜索image字段 408 14.8 与全文索引相关的T-SQL语句 409 14.8.1 创建全文目录 409 14.8.2 更改全文目录属性 410 14.8.3 创建全文索引 410 14.8.4 更改全文索引属性 411 14.8.5 删除全文索引 412 14.8.6 删除全文目录 412 14.9 小结 413 第15章 游标 414 15.1 游标简介 414 15.2 游标的基本操作 415 15.2.1 定义游标 415 15.2.2 打开游标 416 15.2.3 读取游标 417 15.2.4 关闭和删除游标 417 15.3 游标的运用 418 15.3.1 用游标处理数据 418 15.3.2 全局游标与本地游标 421 15.3.3 游标的嵌套 422 15.3.4 使用游标变量 423 15.3.5 在存储过程中使用游标 参数 427 15.4 在游标中常用的变量、函数和存 储过程 428 15.4.1 使用系统全局变量查看游 标信息 428 15.4.2 使用函数查看游标状态 429 15.4.3 使用系统存储过程查看游 标属性 430 15.5 小结 434 第16章 事务与锁 436 16.1 事务简介 436 16.1.1 事务的特性 436 16.1.2 事务的工作流程 437 16.1.3 执行事务的注意事项 438 16.1.4 事务的工作原理 438 16.1.5 事务执行的模式 439 16.2 编写事务 439 16.2.1 编写事务的原则 439 16.2.2 编写事务 440 16.3 嵌套事务 442 16.3.1 使用嵌套事务的注意事项 442 16.3.2 嵌套事务示例 443 16.3.3 获取嵌套的层次 445 16.4 事务保存点 447 16.5 事务的隔离级别 449 16.6 锁简介 449 16.7 锁的对象和模式 450 16.8 死锁 451 16.9 小结 452 第5部分 SQL Server高级技术篇 第17章 数据库备份与恢复 454 17.1 备份与恢复介绍 454 17.1.1 备份类型 454 17.1.2 恢复模式 455 17.1.3 如何备份数据库 456 17.1.4 数据库备份到哪里 457 17.2 在SQL Server Management Studio 中备份数据库 458 17.3 使用T-SQL语言备份数据库 461 17.3.1 完整备份与差异备份 461 17.3.2 备份文件和文件组 464 17.3.3 事务日志备份 465 17.4 备份设备管理 466 17.4.1 查看备份设备的内容 466 17.4.2 通过备份设备来备份数 据库 467 17.4.3 验证备份的内容 468 17.4.4 删除备份设备 469 17.5 在SQL Server Management Studio 中还原数据库 469 17.5.1 还原数据库的方式 470 17.5.2 还原数据库前要注意的 事项 470 17.5.3 还原数据库备份 470 17.5.4 还原文件和文件组备份 472 17.5.5 使用现有的备份创建新的 数据库 473 17.6 用T-SQL语言还原数据库 474 17.6.1 还原完整备份 474 17.6.2 还原差异备份 476 17.6.3 还原事务日志备份 477 17.6.4 还原文件和文件组备份 477 17.6.5 将数据库还原到某个时间点 478 17.6.6 将文件还原到新位置上 478 17.7 建立自动备份的维护计划 479 17.8 小结 481 第18章 系统数据库与用户数据库 483 18.1 SQL Server 2012系统数据库介绍 483 18.1.1 master系统数据库 483 18.1.2 tempdb临时数据库 483 18.1.3 model模板数据库 484 18.1.4 msdb系统数据库 484 18.1.5 resource系统数据库 485 18.2 系统表与视图介绍 485 18.2.1 msdb数据库里的表 486 18.2.2 系统视图 488 18.2.3 系统函数 489 18.3 规划数据库 489 18.3.1 数据库文件 489 18.3.2 文件组 490 18.3.3 计算数据库文件的大小 491 18.4 小结 492 第19章 SQL Server 2012的安全 493 19.1 SQL Server 2012的身份验证模式 493 19.2 访问权限 495 19.3 用户 495 19.3.1 添加用户 495 19.3.2 使用用户登录 496 19.3.3 为用户设置权限 497 19.4 角色 501 19.4.1 角色简介 501 19.4.2 服务器角色 501 19.4.3 将用户设为服务器角色 成员 502 19.4.4 数据库角色 502 19.4.5 将用户设为数据库角色 成员 503 19.4.6 创建用户自定义数据库 角色 504 19.4.7 应用程序角色 504 19.4.8 创建应用程序角色 504 19.4.9 使用应用程序角色 505 19.5 架构 506 19.6 确保数据库服务器的安全 507 19.7 小结 509 第20章 SQL Server的自动化管理 510 20.1 SQL Server代理 510 20.1.1 SQL Server代理简介 510 20.1.2 启动和停止SQL Server 代理 511 20.1.3 SQL Server代理的设置 511 20.1.4 指定SQL Server代理的 登录账户 514 20.2 操作员 515 20.3 作业 516 20.3.1 新建作业 516 20.3.2 手动执行作业 519 20.3.3 调度作业 520 20.3.4 查看历史记录 521 20.3.5 删除、禁用与启用作业 521 20.4 警报与通知 522 20.4.1 新建警报 522 20.4.2 修改警报 524 20.4.3 启动、禁用与删除警报 524 20.4.4 通知 524 20.5 维护计划 525 20.6 错误日志 527 20.7 小结 528 第21章 SQL Server的性能工具 529 21.1 SQL Server Profiler 529 21.1.1 SQL Server Profiler简介 529 21.1.2 新建跟踪 530 21.1.3 存储事件记录 531 21.1.4 载入事件记录 531 21.1.5 新建跟踪模板 531 21.1.6 值得注意的功能 532 21.2 数据库引擎优化顾问 533 21.2.1 数据库引擎优化顾问介绍 533 21.2.2 使用数据库引擎优化顾问 533 21.3 小结 534 第22章 数据导入与导出 535 22.1 SQL Server导入导出向导 535 22.2 数据导入导出 535 22.3 数据导入导出时的数据类型转换 538 22.4 在不同数据源与目标之间传输数据 538 22.5 小结 540 第23章 Analysis Services 541 23.1 Analysis Services简介 541 23.1.1 数据仓库 541 23.1.2 数据仓库的结构 542 23.1.3 创建数据仓库的步骤 543 23.1.4 联机分析处理(OLAP) 543 23.1.5 数据挖掘 544 23.2 定义数据源 544 23.3 定义数据源视图 546 23.4 定义多维数据集 548 23.5 部署Analysis Services项目 551 23.6 查看多维数据集 553 23.7 使用客户端软件查看多维数据 554 23.8 小结 557 第24章 Reporting Services 558 24.1 创建报表服务器项目 558 24.2 创建数据源 559 24.3 创建报表 560 24.4 发布报表 563 24.5 自定义报表信息 564 24.6 小结 568 第25章 SQL Server Integration Service 569 25.1 SSIS简介 569 25.1.1 SSIS的概述 569 25.1.2 SQL Server 2012中SSIS 的改进 570 25.2 SSIS结构 571 25.2.1 SSIS的用途 571 25.2.2 SSIS包的组成 572 25.3 SSIS的开发 577 25.3.1 设计和实现包 577 25.3.2 部署包 582 25.4 小结 587 第26章 SQL Server 2012安全新特性—— 包含数据库 588 26.1 部分包含数据库的概念及术语 588 26.1.1 SQL Server 2012使其数 据库独立于实例的方法 588 26.1.2 部分包含数据库的概念 588 26.1.3 部分包含数据库的术语 588 26.1.4 包含 589 26.1.5 部分包含数据库 590 26.1.6 用户使用部分包含数据库 的好处 590 26.1.7 数据库移动 590 26.1.8 初始数据库开发 590 26.1.9 数据库管理 591 26.1.10 限制 591 26.1.11 标识数据库包含关系 591 26.2 SQL Server 2012部分包含数据库 应用实例 591 26.2.1 启用功能 591 26.2.2 新增用户 593 26.2.3 登录 594 26.3 小结 595 第27章 SQL Server 2012开发新特性—— 文件表(FileTable) 596 27.1 文件表的概述与定义 596 27.2 文件表的功能优点 596 27.2.1 文件表功能 596 27.2.2 文件表特性 597 27.2.3 文件表优点 597 27.3 使用文件表的注意事项 598 27.3.1 管理注意事项 598 27.3.2 FileTable不支持内存映射 文件 598 27.4 启用文件表的先决条件 598 27.4.1 在实例级别启用FILESTREAM 598 27.4.2 在数据库级别进行的准备 598 27.5 创建、更改和删除文件表 601 27.5.1 创建文件表 601 27.5.2 更改文件表 602 27.5.3 删除文件表 603 27.6 将文件加载到文件表中 603 27.6.1 将文件加载到文件表中的 方法 603 27.6.2 大容量加载文件表 604 27.7 在文件表中使用目录和路径 604 27.7.1 在T-SQL中使用文件表 目录 604 27.7.2 使用相对路径编写可移植 代码 605 27.7.3 文件表中存储项的完整 路径 605 27.8 使用文件I/O API访问文件表 605 27.8.1 开始使用文件I/O API访问 文件表 605 27.8.2 在文件表中创建文件和 目录 606 27.8.3 在文件表中读取、写入、 更新和删除目录 606 27.9 文件表应用实例 607 27.9.1 启用文件表 607 27.9.2 配置文件组 608 27.9.3 创建文件表 611 27.9.4 操作文件表 612 27.9.5 备份文件表(FileTable) 613 27.10 小结 614