标题：突出重围：Transact-SQL管理与开发实例精粹
图书信息
出版社: 电子工业出版社; 第1版 (2010年10月1日)
平装: 436页
正文语种: 简体中文
开本: 16
ISBN: 712111447X, 9787121114472
条形码: 9787121114472
尺寸: 25.8 x 18.4 x 2.8 cm
重量: 762 g
内容简介
《突出重围:Transact-SQL管理与开发实例精粹》将作者10余年从事SQL Server数据库管理和开发经验积累的Transact-SQL综合性实例整理归类并进行剖析。可以帮助读者快速借鉴和开发出适合自己的Transact-SQL实例，这些实例既可以用于数据库管理，也可以用于数据库系统开发。同时，由于Transact-SQL语言良好的传承和继承性，因此，《突出重围:Transact-SQL管理与开发实例精粹》的绝大部分代码可以跨越SQL Server版本的限制，在SQL Server 2008、2005甚至2000上都可以使用，即使今后推出的新版本，几乎也不用修改就可以移植使用。《突出重围:Transact-SQL管理与开发实例精粹》涉及Transact-SQL使用的各个方面，但又不是联机丛书语法的简单复制，而是侧重于通过实例来学习综合使用Transact-SQL各语法要素完成特定任务的方法。
《突出重围:Transact-SQL管理与开发实例精粹》既适合数据库管理人员，也适合开发人员阅读和参考，还可作为大中专院校及各类培训班的教材，极具实用性。
目录
第1章 Transact-SQL语法元素1
1.1 标识符1
1.1.1 必须有标识符吗1
1.1.2 标识符的排序规则1
1.1.3 常规标识符2
1.1.4 带分隔符的标识符3
1.2 数据类型3
1.2.1 哪些对象需要数据类型3
1.2.2 如何选择恰当的数据类型4
1.2.3 基本数据类型5
1.2.4 SQL Server 2008新增数据类型5
1.2.5 深入研究tinyint数据类型6
1.2.6 深入研究smallint数据类型8
1.2.7 深入研究int（Integer）数据类型10
1.2.8 深入研究bigint数据类型12
1.2.9 decimal（numeric）数据类型的使用14
1.2.10 float数据类型的使用16
1.2.11 real数据类型的使用17
1.2.12 char数据类型的使用17
1.2.13 varchar数据类型的使用17
1.2.14 用CAST函数转换数据类型18
1.2.15 用CONVERT函数转换数据类型18
1.3 常量19
1.3.1 数值型常量的格式19
1.3.2 字符串型常量的格式20
1.3.3 日期时间型常量的格式20
1.4 注释20
1.4.1 添加单行注释信息20
1.4.2 添加多行注释信息20
1.5 变量21
1.5.1 变量的数据类型21
1.5.2 变量的分类21
1.5.3 局部变量的声明21
1.5.4 局部变量的赋值22
1.5.5 局部变量的作用域23
1.6 常用聚合函数23
1.6.1 计算平均值AVG23
1.6.2 计算最小值MIN24
1.6.3 计算最大值MAX25
1.6.4 计算求和值SUM26
1.6.5 计算项数值COUNT（COUNT_BIG）26
1.6.6 计算标准偏差值STDEV27
1.6.7 计算方差VAR28
1.7 常用日期时间函数29
1.7.1 获取当前日期GETDATE29
1.7.2 获取年度信息YEAR30
1.7.3 获取月份信息MONTH30
1.7.4 获取天数信息DAY30
1.7.5 任意获取日期时间值部分DATEPART31
1.7.6 日期加法DATEADD31
1.7.7 日期减法DATEDIFF32
1.7.8 2008中新增的日期时间型函数33
1.7.9 判断是否为日期数据ISDATE33
1.8 常用字符串函数33
1.8.1 获取字符的ASCII码ASCII33
1.8.2 获取ASCII码对应的字符CHAR34
1.8.3 获取字符的Unicode编码UNICODE35
1.8.4 获取Unicode编码对应的字符NCHAR36
1.8.5 获取字符串第一次出现位置PATINDEX36
1.8.6 生成空格字符串SPACE37
1.8.7 按指定次数重复生成字符串REPLICATE38
1.8.8 截取子串SUBSTRING39
1.8.9 获取字符串长度LEN39
1.8.10 替换字符串中内容STUFF40
1.8.11 指定位置搜索字符串中内容CHARINDEX41
1.8.12 生成带分隔符的Unicode字符串QUOTENAME42
1.8.13 转换浮点数字为字符串STR42
1.8.14 截取左边字符串LEFT43
1.8.15 截取右边字符串RIGHT43
1.8.16 截取左边空格LTRIM44
1.8.17 截取右边空格RTRIM44
1.8.18 转换为小写字符串LOWER45
1.8.19 转换为大写字符串UPPER45
1.8.20 反序字符串REVERSE46
1.8.21 获取字符串字节数DATALENGTH46
1.9 常用文本和图像函数47
1.9.1 查找特定字符串PATINDEX47
1.9.2 获取文本指针TEXTPTR47
1.9.3 检测文本指针是否有效TEXTVALID49
1.9.4 读取文本图像列内容READTEXT49
1.9.5 写入文本图像列内容WRITETEXT50
1.9.6 更新文本图像列内容UPDATETEXT51
1.10 常用数学函数52
1.10.1 计算绝对值ABS52
1.10.2 获取大于等于的最小整数值CEILING53
1.10.3 获取小于等于的最大整数值FLOOR53
1.10.4 获取随机数RAND53
1.10.5 获取指定长度和精度ROUND54
1.11 常用元数据函数54
1.11.1 获取数据库标识符DB_ID54
1.11.2 获取数据库名称DB_NAME55
1.11.3 获取数据库属性值DATABASEPROPERTYEX56
1.11.4 获取文件组标识符FILEGROUP_ID57
1.11.5 获取文件组名称FILEGROUP_NAME58
1.11.6 获取文件组属性值FILEGROUPPROPERTY58
1.11.7 获取文件标识符FILE_ID60
1.11.8 获取文件名称FILE_NAME61
1.11.9 获取文件属性值FILEPROPERTY62
1.11.10 获取数据对象标识符OBJECT_ID63
1.11.11 获取数据对象名称OBJECT_NAME64
1.11.12 获取文件属性值OBJECTPROPERTYEX66
1.12 运算符67
1.12.1 算术运算符67
1.12.2 位运算符68
1.12.3 比较运算符68
1.12.4 逻辑运算符68
1.12.5 字符串连接运算符69
1.12.6 赋值运算符69
1.12.7 运算符的优先级69
第2章 Transact-SQL语句70
2.1 控制流语句70
2.1.1 程序块语句BEGIN..END70
2.1.2 判断语句IF..ELSE71
2.1.3 循环语句WHILE72
2.1.4 分支判断语句CASE74
2.1.5 无条件退出语句RETURN75
2.1.6 无条件跳转语句GOTO77
2.1.7 延期执行语句WAITFOR78
2.2 运行时生成语句79
2.2.1 用EXECUTE执行动态命令80
2.2.2 用SP_EXECUTESQL执行动态命令81
2.2.3 参数替换83
2.2.4 为什么提倡使用SP_EXECUTESQL84
2.2.5 使用输出参数的SP_EXECUTESQL85
2.3 语句之间数据的传递86
2.3.1 Transact-SQL语句之间数据的传递86
2.3.2 Transact-SQL与高级语言之间数据的传递87
2.4 错误处理90
2.4.1 SQL Server数据库引擎错误91
2.4.2 用TRY..CATCH发现错误91
2.4.3 捕获错误的系统函数92
2.4.4 用@@ERROR捕获上一条语句的错误93
2.4.5 用RAISERROR反馈错误94
2.5 批处理96
2.5.1 GO的含义96
2.5.2 研究批处理的执行96
2.5.3 批处理的意义99
2.5.4 为什么临时变量作用域不能跨批处理100
2.5.5 如何编写批处理101
2.5.6 批处理如何处理错误101
2.5.7 脚本102
第3章 查询服务器配置信息103
3.1 配置查询环境103
3.2 查询服务器属性值104
3.2.1 ServerProperty系统函数104
3.2.2 查询数据库引擎版本105
3.2.3 综合使用ServerProperty函数查询105
3.3 判断登录账户身份106
3.4 读写注册表信息106
3.4.1 读注册表xp_regenumvalues107
3.4.2 读注册表xp_regread107
3.4.3 写注册表xp_regwrite108
3.4.4 删除注册表项xp_regdeletevalue108
3.4.5 读注册表项xp_instance_regread109
3.4.6 写注册表xp_instance_regwrite109
3.4.7 读注册表中的主要数据文件路径信息110
3.4.8 读注册表中的错误日志文件路径信息111
3.4.9 读注册表中的日志文件路径信息112
3.5 综合实例113
3.5.1 获取“常规”选项卡信息113
3.5.2 获取服务器配置参数信息114
3.5.3 获取服务器上数据库信息115
3.5.4 获取服务器上处理器数量115
3.5.5 提升SQL Server服务器优先级116
3.5.6 获得Windows版本信息116
3.5.7 获得身份验证机制117
3.5.8 获得登录审核机制118
3.5.9 自动检测服务器重要的配置参数118
3.5.10 查询服务器的用户或用户组126
3.5.11 查询用户角色或应用程序角色127
第4章 登录过程129
4.1 连接129
4.1.1 查询所有连接信息129
4.1.2 查询连接总数130
4.1.3 查询阻塞的连接130
4.1.4 查询用户建立的连接130
4.1.5 查询系统建立的连接130
4.1.6 查询活动的用户连接131
4.1.7 查询用户连接的不同客户机131
4.2 配置131
4.2.1 查询当前系统配置131
4.2.2 查询当前最大工作线程数132
4.3 会话132
4.3.1 查询服务器上的所有会话132
4.3.2 查询会话建立的游标132
4.3.3 查询会话的错误信息133
4.3.4 查询会话的缓冲区命中率133
4.3.5 查询会话的操作系统线程134
4.3.6 查询当前会话ID135
4.4 综合运用135
4.4.1 综合查询连接统计信息135
4.4.2 判断当前登录的权限137
4.4.3 查询会话超时设置137
4.4.4 判断连接是否为DAC138
4.4.5 查询当前连接的网络参数138
4.4.6 查询SQL Server版本信息139
4.4.7 查询服务器基本属性139
4.4.8 查询当前登录名141
4.4.9 查询当前的活动事务数141
4.4.10 查询数据库缓冲区命中率低的会话141
4.4.11 查询数据库缓冲区命中率最低的会话的SQL语句142
第5章 数据库相关144
5.1 查询数据库信息144
5.1.1 查询所有的用户数据库名称144
5.1.2 用sp_dboption存储过程配置数据库145
5.1.3 配置数据库的恢复模式145
5.1.4 判断数据库的名称是否含有特定字符146
5.1.5 判断两个数据库的排序规则是否一致147
5.1.6 判断数据库是否系统数据库和可读148
5.1.7 查询可以访问的数据库148
5.1.8 查询数据库的文件149
5.1.9 查询数据库的系统表150
5.1.10 查询数据库的排序规则151
5.1.11 查询数据库的排序规则Windows代码152
5.1.12 查询数据库支持的排序规则152
5.1.13 统计数据库上的进程数152
5.1.14 查询数据库的兼容性级别153
5.1.15 查询数据库的最后备份时间153
5.1.16 查询数据库的最后日志备份时间153
5.2 数据库的存储空间154
5.2.1 查询数据库的总空间154
5.2.2 查询数据库的数据文件总空间154
5.2.3 查询数据库的日志文件总空间155
5.2.4 查询数据文件已经分配的空间155
5.2.5 查询数据文件的可用空间155
5.2.6 查询日志文件已经分配的空间157
5.3 综合运用159
5.3.1 查询数据库的属性159
5.3.2 获取所有数据库的数据文件空间使用率排序159
第6章 未公开的DBCC命令162
6.1 DBCC PAGE查询数据页面162
6.1.1 查询DBID和DBNAME163
6.1.2 查询FILENUM和PAGENUM163
6.1.3 DBCC PAGE的典型用法163
6.2 DBCC LOG查询日志164
6.3 DBCC ERRORLOG初始化错误日志165
6.4 DBCC FLUSHPROCINDB清除缓存存储过程166
6.5 DBCC BUFFER查询缓冲区166
6.6 DBCC DBINFO显示数据库结构167
6.7 DBCC DBTABLE显示数据字典168
6.8 DBCC IND显示表的索引页面信息168
6.9 DBCC PRTIPAGE显示索引每行的数据页169
6.10 DBCC RESOURCE显示服务器资源情况169
6.11 DBCC DBRECOVER恢复质疑数据库170
6.12 DBCC CACHESTATS查看内存统计信息170
6.13 DBCC MEMORYSTATUS查询内存分配171
6.14 DBCC跟踪标记171
6.14.1 概念171
6.14.2 打开跟踪标记172
6.14.3 关闭跟踪标记172
6.14.4 查询跟踪标记状态172
6.15 DBCC SHOWFILESTATS显示数据文件空间172
6.16 WITH TABLERESULTS表格显示信息173
6.17 DBCC LOGINFO查询虚拟日志信息173
6.18 DBCC EXTENTINFO查询盘区数174
第7章 数据和日志文件176
7.1 FILEPROPERTY函数获得文件属性176
7.1.1 判断文件是否只读176
7.1.2 判断文件是否主要数据文件177
7.1.3 查询文件已经使用空间177
7.2 FN_VIRTUALFILESTATS获得文件I/O性能177
7.2.1 查询指定文件的I/O性能178
7.2.2 查询指定数据库的所有文件的I/O性能178
7.2.3 查询所有数据库所有文件的I/O性能179
7.2.4 查询文件I/O性能的动态性能视图180
7.3 日志文件相关180
7.2.1 查询VLF分布情况180
7.2.2 移动日志文件的内容182
7.2.3 删除日志文件的内容182
7.4 数据文件相关183
7.4.1 查询所有数据库的数据文件空间情况183
7.4.2 查询数据库存储空间的详细分布185
7.4.3 查询已分配空间中的行内数据192
7.4.4 查询已分配空间中的LOB大型数据193
7.4.5 查询已分配空间中的行溢出数据194
7.4.6 查询哪些类型的对象使用了数据空间194
7.4.7 查询使用数据空间的对象类型及其数量194
7.5 综合查询数据库文件的I/O性能195
第8章 数据对象197
8.1 索引197
8.1.1 更新表上所有索引的统计信息197
8.1.2 更新表上特定索引的统计信息199
8.1.3 统计数据库中索引使用的空间总和200
8.1.4 索引使用的空间详细情况203
8.2 表208
8.2.1 获得数据库表的存储空间分布208
8.2.2 获得数据缓冲区中数据对象的存储分布212
第9章 性能监控218
9.1 对象分配性能218
9.1.1 监控盘区分配情况218
9.1.2 监控盘区回收情况219
9.1.3 监控页面拆分情况220
9.1.4 监控表上锁升级情况221
9.2 内存性能222
9.2.1 SQL Server内存详解223
9.2.2 查询SQL Server服务器使用的内存数量225
9.2.3 查询连接使用的内存数量225
9.2.4 查询锁使用的内存数量226
9.2.5 查询优化器使用的内存数量226
9.2.6 查询SQL使用的内存数量226
9.2.7 查询服务器能够使用的最大内存数量227
9.2.8 查询当前服务器上可用内存数量227
9.2.9 查询最小服务器内存228
9.2.10 查询最大服务器内存228
9.2.11 查询计算机的物理内存229
9.2.12 查询计算机的虚拟内存229
9.3 过程缓冲区性能229
9.3.1 查询过程缓冲区使用的内存229
9.3.2 查询过程缓冲区内容类别230
9.3.3 查询过程缓冲区命中率230
9.3.4 查询过程缓冲区对象分布比例231
9.3.5 查询过程缓冲区中各类对象的命中率232
9.3.6 查询过程缓冲区各类对象使用的比例232
9.3.7 清除过程缓冲区中的对象233
9.3.8 过程缓冲区中消耗资源Top对象234
9.4 数据缓冲区性能238
9.4.1 查询数据缓冲区的内存数量238
9.4.2 查询数据缓冲区的理想内存数量239
9.4.3 查询数据缓冲区的可用内存数量239
9.4.4 查询数据缓冲区中数据使用的内存239
9.4.5 查询数据缓冲区的命中率240
9.4.6 清除数据缓冲区中的对象240
9.4.7 数据缓冲区中消耗资源Top对象241
9.5 其他实例242
9.5.1 查询资源等待情况242
9.5.2 查询计数器种类和性能值243
9.5.3 查询执行计划的属性244
9.5.4 查询性能计数器表是否可以使用245
9.5.5 查询服务器内存总体分布情况245
第10章 管理其他实例250
10.1 检测和使用XP_CMDSHELL250
10.1.1 检测XP_CMDSHELL是否启用250
10.1.2 用XP_CMDSHELL执行命令253
10.2 错误日志253
10.2.1 产生并使用新的错误日志文件253
10.2.2 获得错误日志文件的信息254
10.3 代理服务254
10.3.1 判断代理服务是否启动254
10.3.2 查询代理服务上产生的警报254
10.3.3 配置代理服务自启动255
10.3.4 判断代理服务是否允许访问255
10.3.5 获得代理服务启动信息256
10.3.6 记录代理服务启动时间256
10.3.7 获得代理服务子系统的信息256
10.3.8 获得代理服务详细配置信息256
10.3.9 运行代理服务监视器258
10.3.10 刷新代理服务作业258
10.3.11 查询代理服务活动作业259
10.4 设置登录环境259
10.5 数据库260
10.5.1 产生数据库检查点260
10.5.2 设置数据库单用户模式260
10.5.3 分离数据库260
10.5.4 附加数据库260
10.5.5 判断指定路径的日志文件是否存在261
10.5.6 获取主要数据文件中的文件信息261
10.5.7 获取主要数据文件中的数据库信息262
10.5.8 获取数据库的用户表信息263
10.5.9 脱机数据库264
10.5.10 联机数据库264
10.5.11 收缩数据库264
10.5.12 判断用户是否可以访问master数据库264
10.6 访问注册表265
10.7 读取硬盘空间信息266
10.8 判断文件是否存在266
10.9 存储空间的碎片266
10.9.1 数据的存储类型267
10.9.2 数据的存储结构270
10.9.3 存储空间的碎片类型270
10.9.4 碎片对数据操作性能的影响271
10.9.5 dbcc showcontig检测碎片272
10.9.6 dm_db_index_physical_stats检测碎片274
10.9.7 消除碎片的方法277
10.9.8 自动检测当前数据库的碎片278
10.9.9 自动消除数据库的碎片283
第11章 数据查询288
11.1 语法结构288
11.2 选择列表289
11.2.1 选择所有列289
11.2.2 选择特定列293
11.2.3 包含运算符的查询295
11.2.4 包含函数的查询296
11.2.5 消除重复项297
11.3 FROM子句298
11.3.1 使用表别名298
11.3.2 使用表提示301
11.4 WHERE子句305
11.4.1 WHERE子句中的运算符306
11.4.2 比较查询307
11.4.3 范围查询308
11.4.4 列表查询309
11.4.5 模式匹配查询310
11.5 GROUP BY子句312
11.5.1 语法结构312
11.5.2 实例分析313
11.6 ORDER BY子句314
11.6.1 语法结构314
11.6.2 实例分析315
11.7 HAVING筛选查询316
11.7.1 HAVING筛选查询的语法结构316
11.7.2 HAVING筛选查询实例316
11.8 INTO查询316
11.8.1 INTO查询的语法结构316
11.8.2 INTO查询实例317
11.9 SELECT联结查询317
11.9.1 SELECT联结查询的语法结构317
11.9.2 SELECT联结查询的分类317
11.9.3 笛卡儿积查询318
11.9.4 等值联结查询318
11.9.5 自然联结查询318
11.9.6 自身联结查询318
11.9.7 内联结查询319
11.9.8 左外联结查询319
11.9.9 右外联结查询320
11.9.10 全外联结查询320
11.10 SELECT嵌套查询320
11.10.1 什么是SELECT嵌套查询320
11.10.2 什么是SELECT嵌套子查询321
11.10.3 简单嵌套查询321
11.10.4 in嵌套查询322
11.10.5 some嵌套查询322
11.10.6 all嵌套查询323
11.10.7 exists嵌套查询324
11.11 操作结果集324
11.11.1 Union形成并集324
11.11.2 Except形成差集325
11.11.3 InterSect形成交集326
11.11.4 用公用表表达式临时存储结果集326
第12章 数据操作328
12.1 INSERT语句研究328
12.1.1 表结构和索引结构328
12.1.2 执行前的日志情况分析329
12.1.3 执行情况分析329
12.1.4 执行后的日志情况分析331
12.1.5 研究数据的变化情况332
12.1.6 研究结论333
12.2 UPDATE语句研究334
12.2.1 执行前的日志情况分析334
12.2.2 执行情况分析334
12.2.3 执行后的日志情况335
12.2.4 研究结论338
12.3 DELETE语句研究338
12.3.1 执行前的日志情况分析338
12.3.2 执行情况分析339
12.3.3 执行后的日志情况339
12.3.4 研究结论341
12.4 深入探讨语句内部机制341
12.4.1 谁先插入数据342
12.4.2 谁先更新数据342
12.4.3 谁先删除数据342
第13章 T-SQL游标343
13.1 游标概述343
13.1.1 什么是游标343
13.1.2 游标的类型344
13.1.3 默认结果集是如何使用的344
13.1.4 什么是MARS345
13.1.5 使用游标还是默认结果集345
13.1.6 使用服务器游标还是客户机游标346
13.2 T-SQL游标定义及使用346
13.2.1 T-SQL游标的生命周期346
13.2.2 T-SQL游标的声明347
13.2.3 T-SQL游标的打开347
13.2.4 T-SQL游标的读取348
13.2.5 T-SQL游标的关闭348
13.2.6 T-SQL游标的释放349
13.2.7 T-SQL游标的综合实例349
第14章 事务和锁351
14.1 多用户数据库的并发问题351
14.1.1 并发访问的实例351
14.1.2 并发问题352
14.2 事务353
14.2.1 事务的特性353
14.2.2 事务的状态354
14.3 SQL SERVER中的事务机制355
14.3.1 事务模式355
14.3.2 更改事务模式356
14.3.3 事务的启动357
14.3.4 事务日志记录357
14.3.5 事务编程语句357
14.3.6 事务的调度358
14.3.7 事务的隔离性级别358
14.3.8 批（GO）359
14.4 锁360
14.4.1 锁的粒度360
14.4.2 锁的类型（模式）361
14.4.3 锁持有度361
14.4.4 动态锁机制362
14.4.5 查看锁362
14.5 死锁363
14.5.1 死锁的发生364
14.5.2 消除死锁的方法364
14.5.3 SQL Server 死锁检测和结束机制365
14.5.4 跟踪和检测死锁365
第15章 存储过程367
第16章 自定义函数和触发器402
第17章 某项目数据库T-SQL开发实例416