Transact-SQL管理与开发实例精粹


Transact-SQL管理与开发实例精粹

文章插图
Transact-SQL管理与开发实例精粹【Transact-SQL管理与开发实例精粹】《Transact-SQL管理与开发实例精粹》是2010年由电子工业出版社出版社出版的图书 , 作者是赵松涛 。
基本介绍书名:突出重围
作者:赵松涛
ISBN:978-7-121-11447-2
类别:正价
页数:460页
定价:59.00元
出版社:电子工业出版社
出版时间:2010年10月
装帧:平装
开本:16开
宣传语专业专注 , 独到独家 , 深度深入内 容 简 介《Transact-SQL管理与开发实例精粹》将作者10余年从事SQL Server资料库管理和开发经验积累的Transact-SQL综合性实例整理归类并进行剖析 。可以帮助读者借鉴和开发出适合自己的Transact-SQL实例 , 这些实例既可以用于资料库管理 , 也可以用于资料库系统开发 。由于Transact-SQL语言良好的传承和继承性 , 因此 , 本书的绝大部分代码可以跨越SQL Server版本的限制 , 在SQL Server 2008、2005甚至2000上都可以使用 , 即使今后推出的新版本 , 几乎也不用修改就可以移植使用 。本书涉及Transact-SQL使用的各个方面 , 但又不是在线上丛书语法的简单複製 , 而是侧重于通过实例来学习综合使用Transact-SQL各语法要素完成特定任务的方法 。本书既适合资料库管理人员 , 也适合开发人员阅读和参考 , 还可作为大中专院校及各类培训班的教材 , 极具实用性 。前 言图书难做 , 技术类的图书越来越难做 , 因为网路已经让资料的搜寻和盗版几乎没有成本 , 还缘于社会转型期的喧嚣和浮躁已经让人很难静下心来读书 。在接连出版了几本叫好不叫座的资料库图书后 , 我几乎已经完全丧失了写作的勇气 。是郭立主任和她领导的博文视点这个团体给了我勇气和力量 , 在历经3年的打磨和反覆修改的基础上 , 才有了这本图书的问世 。箇中辛苦 , 唯有自知 。从SQL Server 6.5到SQL Server 2008 , 我一直在学习、研究并使用 , 10多年的过程中 , 对其了解和掌握也有一个逐步加深的过程 。如果说有什幺心得和体会的话 , 我的理解是Transact-SQL语言应该是SQL Server的核心和精髓 , 因为不论是管理和开发 , 最终落脚都是Transact-SQL语言的作用 。遗憾的是 , 大部分学习SQL Server的人员都在简单掌握其图形化管理界面操作后 , 往往忽略对Transact-SQL的学习和了解 。一方面是SQL Server的在线上丛书已经做得足够仔细 , 另外一方面也是因为Transact-SQL的学习没有好的实例和代码可以借鉴 。最近几年 , 我逐步深入研究SQL Server的核心机制 , 在此基础上形成了自己的一些研究结论 。这本图书就是将自己对Transact-SQL的了解和掌握 , 以及研究使用的实例代码呈现给读者 , 绝非对在线上丛书的简单雷同使用 。因此 , 本书可以称为是一名资料库技术爱好者的独家秘笈 。原创留口碑 , 专业出精品 。无论是管理还是开发人员 , 我相信这本书都可以作为您的案头丛书 。踏实做人 , 用心做事 , 我相信付出总会有回报 。您的批评、建议和反馈就是对我最大的回报 。本书中涉及的所有实例原始码进行下载 。本书主要由赵松涛编写 , 参与编写的还有李翔鹰(第6、11、13章)、余艳、王恩春、赵迎春、赵高飞、卢颖、朱远妮、李黎明、彭兴文、杜从云、朱春凤、邓新华 。感谢郭立女士和她领导的博文视点这个年轻的、充满朝气的团队给予我充分的创作自由并提出了宝贵的意见 。献给所有我的读者家人、父母和读者 。作 者目 录第1章 Transact-SQL语法元素 11.1 标识符 11.1.1 必须有标识符吗 11.1.2 标识符的排序规则 11.1.3 常规标识符 21.1.4 带分隔设定的标识符 31.2 数据类型 31.2.1 哪些对象需要数据类型 31.2.2 如何选择恰当的数据类型 41.2.3 基本数据类型 51.2.4 SQL Server 2008新增数据类型 51.2.5 深入研究tinyint数据类型 61.2.6 深入研究smallint数据类型 81.2.7 深入研究int(Integer)数据类型 101.2.8 深入研究bigint数据类型 121.2.9 decimal(numeric)数据类型的使用 141.2.10 float数据类型的使用 161.2.11 real数据类型的使用 171.2.12 char数据类型的使用 171.2.13 varchar数据类型的使用 171.2.14 用CAST函式转换数据类型 181.2.15 用CONVERT函式转换数据类型 181.3 常量 191.3.1 数值型常量的格式 191.3.2 字元串型常量的格式 201.3.3 日期时间型常量的格式 201.4 注释 201.4.1 添加单行注释信息 201.4.2 添加多行注释信息 201.5 变数 211.5.1 变数的数据类型 211.5.2 变数的分类 211.5.3 局部变数的声明 211.5.4 局部变数的赋值 221.5.5 局部变数的作用域 231.6 常用聚合函式 231.6.1 计算平均值AVG 231.6.2 计算最小值MIN 241.6.3 计算最大值MAX 251.6.4 计算求和值SUM 261.6.5 计算项数值COUNT(COUNT_BIG) 261.6.6 计算标準偏差值STDEV 271.6.7 计算方差VAR 281.7 常用日期时间函式 291.7.1 获取当前日期GETDATE 291.7.2 获取年度信息YEAR 301.7.3 获取月份信息MONTH 301.7.4 获取天数信息DAY 301.7.5 任意获取日期时间值部分DATEPART 311.7.6 日期加法DATEADD 311.7.7 日期减法DATEDIFF 321.7.8 2008中新增的日期时间型函式 331.7.9 判断是否为日期数据ISDATE 33 1.8 常用字元串函式 331.8.1 获取字元的ASCII码ASCII 331.8.2 获取ASCII码对应的字元CHAR 341.8.3 获取字元的Unicode编码UNICODE 351.8.4 获取Unicode编码对应的字元NCHAR 361.8.5 获取字元串第一次出现位置PATINDEX 361.8.6 生成空格字元串SPACE 371.8.7 按指定次数重複生成字元串REPLICATE 381.8.8 截取子串SUBSTRING 391.8.9 获取字元串长度LEN 391.8.10 替换字元串中内容STUFF 401.8.11 指定位置搜寻字元串中内容CHARINDEX 411.8.12 生成带分隔设定的Unicode字元串QUOTENAME 421.8.13 转换浮点数字为字元串STR 421.8.14 截取左边字元串LEFT 431.8.15 截取右边字元串RIGHT 431.8.16 截取左边空格LTRIM 441.8.17 截取右边空格RTRIM 441.8.18 转换为小写字元串LOWER 451.8.19 转换为大写字元串UPPER 451.8.20 反序字元串REVERSE 461.8.21 获取字元串位元组数DATALENGTH 461.9 常用文本和图像函式 471.9.1 查找特定字元串PATINDEX 471.9.2 获取文本指针TEXTPTR 471.9.3 检测文本指针是否有效TEXTVALID 491.9.4 读取文本图像列内容READTEXT 491.9.5 写入文本图像列内容WRITETEXT 501.9.6 更新文本图像列内容UPDATETEXT 511.10 常用数学函式 521.10.1 计算绝对值ABS 521.10.2 获取大于等于的最小整数值CEILING 531.10.3 获取小于等于的最大整数值FLOOR 531.10.4 获取随机数RAND 531.10.5 获取指定长度和精度ROUND 541.11 常用元数据函式 541.11.1 获取资料库标识符DB_ID 541.11.2 获取资料库名称DB_NAME 551.11.3 获取资料库属性值DATABASEPROPERTYEX 561.11.4 获取档案组标识符FILEGROUP_ID 571.11.5 获取档案组名称FILEGROUP_NAME 581.11.6 获取档案组属性值FILEGROUPPROPERTY 581.11.7 获取档案标识符FILE_ID 60 1.11.8 获取档案名称称FILE_NAME 611.11.9 获取档案属性值FILEPROPERTY 621.11.10 获取数据对象标识符OBJECT_ID 631.11.11 获取数据对象名称OBJECT_NAME 641.11.12 获取档案属性值OBJECTPROPERTYEX 661.12 运算符 671.12.1 算术运算符 671.12.2 位运算符 681.12.3 比较运算符 681.12.4 逻辑运算符 681.12.5 字元串连线运算符 691.12.6 赋值运算符 691.12.7 运算符的优先权 69第2章 Transact-SQL语句 702.1 控制流语句 702.1.1 程式块语句BEGIN..END 702.1.2 判断语句IF..ELSE 712.1.3 循环语句WHILE 722.1.4 分支判断语句CASE 742.1.5 无条件退出语句RETURN 752.1.6 无条件跳转语句GOTO 772.1.7 延期执行语句WAITFOR 782.2 运行时生成语句 792.2.1 用EXECUTE执行动态命令 802.2.2 用SP_EXECUTESQL执行动态命令 812.2.3 参数替换 832.2.4 为什幺提倡使用SP_EXECUTESQL 842.2.5 使用输出参数的SP_EXECUTESQL 852.3 语句之间数据的传递 862.3.1 Transact-SQL语句之间数据的传递 862.3.2 Transact-SQL与高级语言之间数据的传递 872.4 错误处理 902.4.1 SQL Server资料库引擎错误 912.4.2 用TRY..CATCH发现错误 912.4.3 捕获错误的系统函式 922.4.4 用@@ERROR捕获上一条语句的错误 932.4.5 用RAISERROR反馈错误 942.5 批处理 962.5.1 GO的含义 962.5.2 研究批处理的执行 962.5.3 批处理的意义 992.5.4 为什幺临时变数作用域不能跨批处理 1002.5.5 如何编写批处理 1012.5.6 批处理如何处理错误 1012.5.7 脚本 102第3章 查询伺服器配置信息 1033.1 配置查询环境 1033.2 查询伺服器属性值 1043.2.1 ServerProperty系统函式 1043.2.2 查询资料库引擎版本 1053.2.3 综合使用ServerProperty函式查询 1053.3 判断登录账户身份 1063.4 读写注册表信息 106 3.4.1 读注册表xp_regenumvalues 1073.4.2 读注册表xp_regread 1073.4.3 写注册表xp_regwrite 1083.4.4 删除注册表项xp_regdeletevalue 1083.4.5 读注册表项xp_instance_regread 1093.4.6 写注册表xp_instance_regwrite 1093.4.7 读注册表中的主要数据档案路径信息 1103.4.8 读注册表中的错误日誌档案路径信息 1113.4.9 读注册表中的日誌档案路径信息 1123.5 综合实例 1133.5.1 获取“常规”选项卡信息 1133.5.2 获取伺服器配置参数信息 1143.5.3 获取伺服器上资料库信息 1153.5.4 获取伺服器上处理器数量 1153.5.5 提升SQL Server伺服器优先权 1163.5.6 获得Windows版本信息 1163.5.7 获得身份验证机制 1173.5.8 获得登录审核机制 1183.5.9 自动检测伺服器重要的配置参数 1183.5.10 查询伺服器的用户或用户组 1263.5.11 查询用户角色或应用程式角色 127第4章 登录过程 1294.1 连线 1294.1.1 查询所有连线信息 1294.1.2 查询连线总数 1304.1.3 查询阻塞的连线 1304.1.4 查询用户建立的连线 1304.1.5 查询系统建立的连线 1304.1.6 查询活动的用户连线 1314.1.7 查询用户连线的不同客户机 1314.2 配置 1314.2.1 查询当前系统配置 1314.2.2 查询当前最大工作执行绪数 1324.3 会话 1324.3.1 查询伺服器上的所有会话 1324.3.2 查询会话建立的游标 1324.3.3 查询会话的错误信息 1334.3.4 查询会话的缓冲区命中率 1334.3.5 查询会话的作业系统执行绪 1344.3.6 查询当前会话ID 1354.4 综合运用 1354.4.1 综合查询连线统计信息 1354.4.2 判断当前登录的许可权 1374.4.3 查询会话逾时设定 1374.4.4 判断连线是否为DAC 1384.4.5 查询当前连线的网路参数 1384.4.6 查询SQL Server版本信息 139 4.4.7 查询伺服器基本属性 1394.4.8 查询当前登录名 1414.4.9 查询当前的活动事务数 1414.4.10 查询资料库缓冲区命中率低的会话 1414.4.11 查询资料库缓冲区命中率最低的会话的SQL语句 142第5章 资料库相关 1445.1 查询资料库信息 1445.1.1 查询所有的用户资料库名称 1445.1.2 用sp_dboption存储过程配置资料库 1455.1.3 配置资料库的恢复模式 1455.1.4 判断资料库的名称是否含有特定字元 1465.1.5 判断两个资料库的排序规则是否一致 1475.1.6 判断资料库是否系统资料库和可读 1485.1.7 查询可以访问的资料库 1485.1.8 查询资料库的档案 1495.1.9 查询资料库的系统表 1505.1.10 查询资料库的排序规则 1515.1.11 查询资料库的排序规则Windows代码 1525.1.12 查询资料库支持的排序规则 1525.1.13 统计资料库上的进程数 1525.1.14 查询资料库的兼容性级别 1535.1.15 查询资料库的最后备份时间 1535.1.16 查询资料库的最后日誌备份时间 1535.2 资料库的存储空间 1545.2.1 查询资料库的总空间 1545.2.2 查询资料库的数据档案总空间 1545.2.3 查询资料库的日誌档案总空间 1555.2.4 查询数据档案已经分配的空间 1555.2.5 查询数据档案的可用空间 1555.2.6 查询日誌档案已经分配的空间 1575.3 综合运用 1595.3.1 查询资料库的属性 1595.3.2 获取所有资料库的数据档案空间使用率排序 159第6章 未公开的DBCC命令 1626.1 DBCC PAGE查询数据页面 1626.1.1 查询DBID和DBNAME 1636.1.2 查询FILENUM和PAGENUM 1636.1.3 DBCC PAGE的典型用法 1636.2 DBCC LOG查询日誌 1646.3 DBCC ERRORLOG初始化错误日誌 1656.4 DBCC FLUSHPROCINDB清除快取存储过程 1666.5 DBCC BUFFER查询缓冲区 1666.6 DBCC DBINFO显示资料库结构 1676.7 DBCC DBTABLE显示数据字典 168 6.8 DBCC IND显示錶的索引页面信息 1686.9 DBCC PRTIPAGE显示索引每行的数据页 1696.10 DBCC RESOURCE显示伺服器资源情况 1696.11 DBCC DBRECOVER恢复质疑资料库 1706.12 DBCC CACHESTATS查看记忆体统计信息 1706.13 DBCC MEMORYSTATUS查询记忆体分配 1716.14 DBCC跟蹤标记 1716.14.1 概念 1716.14.2 打开跟蹤标记 1726.14.3 关闭跟蹤标记 1726.14.4 查询跟蹤标记状态 1726.15 DBCC SHOWFILESTATS显示数据档案空间 1726.16 WITH TABLERESULTS表格显示信息 1736.17 DBCC LOGINFO查询虚拟日誌信息 1736.18 DBCC EXTENTINFO查询盘区数 174第7章 数据和日誌档案 1767.1 FILEPROPERTY函式获得档案属性 1767.1.1 判断档案是否唯读 1767.1.2 判断档案是否主要数据档案 1777.1.3 查询档案已经使用空间 1777.2 FN_VIRTUALFILESTATS获得档案I/O性能 1777.2.1 查询指定档案的I/O性能 1787.2.2 查询指定资料库所有档案的I/O性能 1787.2.3 查询所有资料库所有档案的I/O性能 1797.2.4 查询档案I/O性能的动态性能视图 1807.3 日誌档案相关 1807.2.1 查询VLF分布情况 1807.2.2 移动日誌档案的内容 1827.2.3 删除日誌档案的内容 1827.4 数据档案相关 1837.4.1 查询所有资料库的数据档案空间情况 1837.4.2 查询资料库存储空间的详细分布 1857.4.3 查询已分配空间中的行内数据 1927.4.4 查询已分配空间中的LOB大型数据 1937.4.5 查询已分配空间中的行溢出数据 1947.4.6 查询哪些类型的对象使用了数据空间 1947.4.7 查询使用数据空间的对象类型及其数量 1947.5 综合查询资料库档案的I/O性能 195第8章 数据对象 1978.1 索引 1978.1.1 更新表上所有索引的统计信息 1978.1.2 更新表上特定索引的统计信息 1998.1.3 统计资料库中索引使用的空间总和 2008.1.4 索引使用的空间详细情况 2038.2 表 2088.2.1 获得资料库表的存储空间分布 208 8.2.2 获得数据缓冲区中数据对象的存储分布 212第9章 性能监控 2189.1 对象分配性能 2189.1.1 监控盘区分配情况 2189.1.2 监控盘区回收情况 2199.1.3 监控页面拆分情况 2209.1.4 监控表上锁升级情况 2219.2 记忆体性能 2229.2.1 SQL Server记忆体详解 2239.2.2 查询SQL Server伺服器使用的记忆体数量 2259.2.3 查询连线使用的记忆体数量 2259.2.4 查询锁使用的记忆体数量 2269.2.5 查询最佳化器使用的记忆体数量 2269.2.6 查询SQL使用的记忆体数量 2269.2.7 查询伺服器能够使用的最大记忆体数量 2279.2.8 查询当前伺服器上可用记忆体数量 2279.2.9 查询最小伺服器记忆体 2289.2.10 查询最大伺服器记忆体 2289.2.11 查询计算机的物理记忆体 2299.2.12 查询计算机的虚拟记忆体 2299.3 过程缓冲区性能 2299.3.1 查询过程缓冲区使用的记忆体 2299.3.2 查询过程缓冲区内容类别 2309.3.3 查询过程缓冲区命中率 2309.3.4 查询过程缓冲区对象分布比例 2319.3.5 查询过程缓冲区中各类对象的命中率 2329.3.6 查询过程缓冲区各类对象使用的比例 2329.3.7 清除过程缓冲区中的对象 2339.3.8 过程缓冲区中消耗资源Top对象 2349.4 数据缓冲区性能 2389.4.1 查询数据缓冲区的记忆体数量 2389.4.2 查询数据缓冲区的理想记忆体数量 2399.4.3 查询数据缓冲区的可用记忆体数量 2399.4.4 查询数据缓冲区中数据使用的记忆体 2399.4.5 查询数据缓冲区的命中率 2409.4.6 清除数据缓冲区中的对象 2409.4.7 数据缓冲区中消耗资源Top对象 2419.5 其他实例 2429.5.1 查询资源等待情况 2429.5.2 查询计数器种类和性能值 2439.5.3 查询执行计画的属性 2449.5.4 查询性能计数器表是否可以使用 2459.5.5 查询伺服器记忆体总体分布情况 245第10章 管理其他实例 25010.1 检测和使用XP_CMDSHELL 25010.1.1 检测XP_CMDSHELL是否启用 250 10.1.2 用XP_CMDSHELL执行命令 25310.2 错误日誌 25310.2.1 产生并使用新的错误日誌档案 25310.2.2 获得错误日誌档案的信息 25410.3 代理服务 25410.3.1 判断代理服务是否启动 25410.3.2 查询代理服务上产生的警报 25410.3.3 配置代理服务自启动 25510.3.4 判断代理服务是否允许访问 25510.3.5 获得代理服务启动信息 25610.3.6 记录代理服务启动时间 25610.3.7 获得代理服务子系统的信息 25610.3.8 获得代理服务详细配置信息 25610.3.9 运行代理服务监视器 25810.3.10 刷新代理服务作业 25810.3.11 查询代理服务活动作业 25910.4 设定登录环境 25910.5 资料库 26010.5.1 产生资料库检查点 26010.5.2 设定资料库单用户模式 26010.5.3 分离资料库 26010.5.4 附加资料库 26010.5.5 判断指定路径的日誌档案是否存在 26110.5.6 获取主要数据档案中的档案信息 26110.5.7 获取主要数据档案中的资料库信息 26210.5.8 获取资料库的用户表信息 26310.5.9 脱机资料库 26410.5.10 在线上资料库 26410.5.11 收缩资料库 26410.5.12 判断用户是否可以访问master资料库 26410.6 访问注册表 26510.7 读取硬碟空间信息 26610.8 判断档案是否存在 26610.9 存储空间的碎片 26610.9.1 数据的存储类型 26710.9.2 数据的存储结构 27010.9.3 存储空间的碎片类型 27010.9.4 碎片对数据操作性能的影响 27110.9.5 dbcc showcontig检测碎片 27210.9.6 dm_db_index_physical_stats检测碎片 27410.9.7 消除碎片的方法 27710.9.8 自动检测当前资料库的碎片 27810.9.9 自动消除资料库的碎片 283第11章 数据查询 28811.1 语法结构 28811.2 选择列表 28911.2.1 选择所有列 28911.2.2 选择特定列 29311.2.3 包含运算符的查询 29511.2.4 包含函式的查询 29611.2.5 消除重複项 297 11.3 FROM子句 29811.3.1 使用表别名 29811.3.2 使用表提示 30111.4 WHERE子句 30511.4.1 WHERE子句中的运算符 30611.4.2 比较查询 30711.4.3 範围查询 30811.4.4 列表查询 30911.4.5 模式匹配查询 31011.5 GROUP BY子句 31211.5.1 语法结构 31211.5.2 实例分析 31311.6 ORDER BY子句 31411.6.1 语法结构 31411.6.2 实例分析 31511.7 HAVING筛选查询 31611.7.1 HAVING筛选查询的语法结构 31611.7.2 HAVING筛选查询实例 31611.8 INTO查询 31611.8.1 INTO查询的语法结构 31611.8.2 INTO查询实例 31711.9 SELECT联结查询 31711.9.1 SELECT联结查询的语法结构 31711.9.2 SELECT联结查询的分类 31711.9.3 笛卡儿积查询 31811.9.4 等值联结查询 31811.9.5 自然联结查询 31811.9.6 自身联结查询 31811.9.7 内联结查询 31911.9.8 左外联结查询 31911.9.9 右外联结查询 32011.9.10 全外联结查询 32011.10 SELECT嵌套查询 32011.10.1 什幺是SELECT嵌套查询 32011.10.2 什幺是SELECT嵌套子查询 32111.10.3 简单嵌套查询 32111.10.4 in嵌套查询 32211.10.5 some嵌套查询 32211.10.6 all嵌套查询 32311.10.7 exists嵌套查询 32411.11 操作结果集 32411.11.1 Union形成并集 32411.11.2 Except形成差集 32511.11.3 InterSect形成交集 32611.11.4 用公用表表达式临时存储结果集 326第12章 数据操作 32812.1 INSERT语句研究 32812.1.1 表结构和索引结构 32812.1.2 执行前的日誌情况分析 32912.1.3 执行情况分析 32912.1.4 执行后的日誌情况分析 33112.1.5 研究数据的变化情况 33212.1.6 研究结论 33312.2 UPDATE语句研究 334 12.2.1 执行前的日誌情况分析 33412.2.2 执行情况分析 33412.2.3 执行后的日誌情况 33512.2.4 研究结论 33812.3 DELETE语句研究 33812.3.1 执行前的日誌情况分析 33812.3.2 执行情况分析 33912.3.3 执行后的日誌情况 33912.3.4 研究结论 34112.4 深入探讨语句内部机制 34112.4.1 谁先插入数据 34212.4.2 谁先更新数据 34212.4.3 谁先删除数据 342第13章 T-SQL游标 34313.1 游标概述 34313.1.1 什幺是游标 34313.1.2 游标的类型 34413.1.3 默认结果集是如何使用的 34413.1.4 什幺是MARS 34513.1.5 使用游标还是默认结果集 34513.1.6 使用伺服器游标还是客户机游标 34613.2 T-SQL游标定义及使用 34613.2.1 T-SQL游标的生命周期 34613.2.2 T-SQL游标的声明 34713.2.3 T-SQL游标的打开 34713.2.4 T-SQL游标的读取 34813.2.5 T-SQL游标的关闭 34813.2.6 T-SQL游标的释放 34913.2.7 T-SQL游标的综合实例 349第14章 事务和锁 35114.1 多用户资料库的并发问题 35114.1.1 并发访问的实例 35114.1.2 并发问题 35214.2 事务 35314.2.1 事务的特性 35314.2.2 事务的状态 35414.3 SQL SERVER中的事务机制 35514.3.1 事务模式 35514.3.2 更改事务模式 35614.3.3 事务的启动 35714.3.4 事务日誌记录 35714.3.5 事务编程语句 35714.3.6 事务的调度 35814.3.7 事务的隔离性级别 35814.3.8 批(GO) 35914.4 锁 36014.4.1 锁的粒度 36014.4.2 锁的类型(模式) 36114.4.3 锁持有度 36114.4.4 动态锁机制 36214.4.5 查看锁 36214.5 死锁 36314.5.1 死锁的发生 36414.5.2 消除死锁的方法 36414.5.3 SQL Server 死锁检测和结束机制 36514.5.4 跟蹤和检测死锁 365第15章 存储过程 36715.1 存储过程概述 367 15.1.1 从批处理谈起 36715.1.2 存储过程的引入 36815.1.3 存储过程是什幺 36915.1.4 可不可以不使用存储过程 37015.1.5 存储过程的优点 37015.1.6 T-SQL的注入式攻击与防範 37115.1.7 用参数化的存储过程防範T-SQL的注入式攻击 37215.2 存储过程的类型 37315.2.1 按照定义主体分类 37415.2.2 按照生命周期分类 37415.3 T-SQL存储过程的创建 37415.3.1 创建T-SQL存储过程的规则 37415.3.2 创建T-SQL存储过程的语法 37515.3.3 创建无参数T-SQL存储过程 37615.3.4 创建带输入参数的T-SQL存储过程 37715.3.5 创建带输出参数的T-SQL存储过程 37715.4 T-SQL存储过程的执行 37815.4.1 执行无参数的T-SQL存储过程 37915.4.2 执行带输入参数的T-SQL存储过程 37915.4.3 执行带输出参数的T-SQL存储过程 37915.5 数据操作T-SQL存储过程 38015.5.1 数据查询 38015.5.2 数据录入 38115.5.3 数据删除 38115.5.4 数据统计和求和 38215.5.5 数据更新 38315.5.6 将图像数据存入资料库 38515.6 资料库操作T-SQL存储过程 38715.6.1 附加资料库 38715.6.2 完全备份资料库 38715.6.3 收缩资料库 38815.6.4 检查资料库备份 38815.6.5 删除资料库 38915.6.6 创建资料库 39015.7 表操作T-SQL存储过程 39115.7.1 清除所有表的内容 39115.7.2 根据需要对表的内容进行处理 39115.7.3 统计表数据 39315.7.4 导出表数据为档案 39315.7.5 导出资料库中特定的表数据为档案 39515.7.6 导入文本档案到表中 39615.8 档案操作T-SQL存储过程 39715.8.1 创建作业系统目录 39715.8.2 删除作业系统档案 39715.8.3 判断档案是否存在 39815.8.4 获得伺服器名称 39815.8.5 统计特定字元串出现的次数 39915.9 异构数据操作T-SQL存储过程 40015.9.1 提取Foxpro数据到SQL Server 400 15.9.2 提取Access数据到SQL Server 401第16章 自定义函式和触发器 40216.1 自定义函式概述 40216.1.1 什幺是自定义函式 40216.1.2 自定义函式的优点 40416.1.3 T-SQL自定义函式的语法 40516.2 T-SQL自定义函式实例 40716.2.1 转换Bool型到字元型 40716.2.2 转换不同的日期表达 40716.2.3 转换字元串到日期 40816.3 触发器概述 40816.3.1 触发器类型 40916.3.2 触发器的内部实现机制 40916.3.3 触发器工作原理 40916.3.4 触发器的使用 41016.3.5 触发器的创建语法 41016.4 T-SQL触发器实例 41116.4.1 自动记录资料库DDL事件的触发器 41116.4.2 自动更新表数据的触发器 41216.4.3 不允许删除表数据的触发器 41316.4.4 不允许某些插入表数据的触发器 41316.4.5 表上发生更新操作后级联更新其他表的触发器 414第17章 某项目资料库T-SQL开发实例 41617.1 特殊的表设计 41617.1.1 资料库设计历史表DBBuildVersion 41617.1.2 资料库DDL语句执行情况表DatabaseLog 41817.1.3 资料库错误信息情况表ErrorLog 41917.2 特殊的表栏位设计 42117.3 存储过程设计 42317.3.1 记录资料库错误信息 42317.3.2 显示资料库错误信息 42417.3.3 返回伺服器时间 42517.3.4 根据需要备份资料库 42517.3.5 录入图书数据 42817.3.6 更新图书数据 43017.3.7 检索图书数据 43117.3.8 删除图书数据 43117.4 触发器设计 43217.4.1 自动更新表的ModifiedDate栏位 43217.4.2 自动记录资料库DDL语句 43317.5 自定义函式设计 43417.5.1 获得两个日期之间的年份数 43417.5.2 获得图书的折扣价 43517.5.3 获得价格区间的图书信息 435