CruiseYoung的专栏

私信 关注
CruiseYoung
码龄14年
  • 199,672
    被访问量
  • 25
    原创文章
  • 49,482
    作者排名
  • 140
    粉丝数量
  • 目前就职 浪潮
  • 于 2007-04-20 加入CSDN
获得成就
  • 获得15次点赞
  • 内容获得76次评论
  • 获得1,398次收藏
荣誉勋章
TA的专栏
  • 个人
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

Visual Studio Help Downloader Plus v5.0.1.0

============================================================================ 软件名称: Visual Studio Help Downloader Plus 原 名 称: Visual Studio 2012/2013/2015 Help Downloader 原 官 网: https://github.com/nickdalt/VSHD 软件版本: 5.0.1.0 基础版本: 1.3.1.0 软件著作人:NickDal,Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/ServiceAPI/catalogs/ 源代码托管: https://github.com/CruiseYoung/vshdp QQ交流群: 8035490 修改内容: v5.0.1.0(2017.10.02日)更新内容 1、增加对dev15(Visual Studio 2017)版本的支持; 2、由于微软官方删除了Visual Studio 2010版本的索引列表,该版本对dev10无效,但如果微软官方恢复索引,该软件将自动支持; 3、修复因读取网页数据失败的bug,即字符转码本地编码转utf8编码; 4、修复在Win10无法获取下载列表的bug; 5、修复因文件名含有特殊字符时,安装Help Library时找不到文件的bug; v5.0.0.0(2015.11.30日)更新内容 1、增加对dev10(Visual Studio 2010)版本的支持,至此“Visual Studio Help Downloader Plus”支持Visual Studio 2010以及其后所有已发布的版本,理论上也支持Visual Studio未来版本的支持,为庆祝此跨越,特将版本号从5.0.0.0开始编号; 2、由于该版本支持Visual Studio 2010版本,为了能使VS2010--“帮助”--“管理帮助设置”--“从磁盘安装内容”能识别msha文件,特统一更改msha文件命名方式,遵从"Visual Studio 2010 Help Downloader Plus" 的命名规则; 3、优化代码,增加对“PackageList.txt”、“HelpContentSetup.msha”文件内容排序; v3.0.0.3(2015.08.15日)更新内容 1、增加在有某vs版本时,而没有对应语言列表,或对应语言列表不足14(Visual Studio 2012/2013语言列表数目)时,手动添加其语言列表(该需求由“CSDN”的“qq_30108695”提提交,在此表示感谢); v3.0.0.2(2015.08.13日)更新内容 1、修复dev14(Visual Studio 2015)加载语言时挂死(该bug由“远景论坛”的“铁浪”提交,在此表示感谢), 修改为默认加载"en-us"语言,如果没有该语言则显示提供的第一种语言; v3.0.0.1(2014.05.28日)更新内容 1、按照资源加载顺序,调整界面布局; 2、修复动态加载微软官网配置时的方式; v3.0.0.0(2014.05.23日)更新内容 1、将获取文件的下载路径,由拼接改为由代码从微软官网直接获取;从而可以支持Visual Studio 2012/2013,以及未来版本; 2、由于该版本支持Visual Studio 2012/2013、以及未来版本,特将软件名更改为“Visual Studio Help Downloader Plus”,版本号从3.0.0.0开始编号; v2.0.0.2(2013.06.12日)更新内容 1、将各文件的创建,修改,访问时间修改为文件内容的最后更新的时间; v2.0.0.1(2013.05.26日)更新内容 1、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; v2.0.0.0(2013.04.13日)更新内容 1、修改索引文件生成的目录结构,将多个xml文件合并到一个msha文件,并增加“path”等信息,从而与微软官网的一致; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容,并对该软件面世之前的“MSHAGen”下载的包做了兼容; 5、自动删除过期文件; 6、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 7、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 修改依据: 1、依据是微软官方发布的VS2012Documentation的ISO中的“helpcontentsetup.msha”; 注意事项: 1、运行本软件必须安装“.NET Framework 4.5”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 3、本软件为了更好的服务大家,因而不兼容本软件的修改基础“Visual Studio 2012/2013/2015 Help Downloader 1.2.0.0 Beta”所下的包; 联系修改人: 1、如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 2、如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。 3、新增QQ群方便交流,请加QQ群8035490。 ============================================================================
zip
发布资源于 4 年前

Visual Studio 2010 Help Downloader Plus v2.0.0.7

============================================================================ 软件名称: Visual Studio 2010 Help Downloader Plus 原 名 称: Visual Studio 2010 Help Downloader 原 官 网: http://vshelpdownloader.codeplex.com/ (已失效) 软件版本: 2.0.0.7 基础版本: 1.0.0.3 Beta 软件著作人:Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/serviceapi/ 源代码托管: https://github.com/CruiseYoung/vshdp2010 QQ交流群: 8035490 修改内容: v2.0.0.7(2017.10.02日)更新内容 1、修复当一文件名包含另一文件名时,在清除旧文件时,被误删的问题; 2、修复在Win10无法获取下载列表的bug; 3、修复因文件名含有特殊字符时,安装Help Library时找不到文件的潜在问题; v2.0.0.6(2015.11.30日)更新内容 1、优化代码,增加对“PackageList.txt”、“HelpContentSetup.msha”等输出文件内容排序; v2.0.0.5(2014.05.28日)更新内容 1、按照资源加载顺序,调整界面布局; v2.0.0.4(2014.05.23日)更新内容 1、将获取文件的下载路径,由拼接改为由代码从微软官网直接获取; v2.0.0.3(2013.06.12日)更新内容 1、将各文件的创建,修改,访问时间修改为文件内容的最后更新的时间; v2.0.0.2(2013.05.26日)更新内容 1、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; 2、自动加载上次所选择下载的Book项。 v2.0.0.1(2013.05.04日)更新内容 1、在下载一门语言的“Help Library”后,不关闭软件再下其它非英语的“Help Library”不用重新“Load Books”; 2、去掉重复的“product”项,和直接用VS2010--“帮助”--“管理帮助设置”--“联机安装内容”里的“product”项完全一致; 3、为了能使VS2010--“帮助”--“管理帮助设置”--“从磁盘安装内容”能识别msha文件,特更改msha文件命名方式; v2.0.0.0(2013.04.13日)更新内容 1、完整索引文件内容; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、将“xml”文件后缀更改为“html”; 5、兼容本软件的修改基础软件“Visual Studio 2010 Help Downloader v1.0.0.3 Beta”; 6、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容; 7、自动删除过期文件; 8、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 9、非英语“Help Library”的“Book”包含完整的“英语“Help Library”Book”,从而和vs2012一样; 10、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 修改依据: 1、依据是VS2010安装ISO中的“helpcontentsetup.msha”等信息; 2、微软官网“http://services.mtps.microsoft.com/serviceapi/”帮助信息。 注意事项: 1、运行本软件必须安装“.NET Framework 4”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 联系修改人: 1、如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 2、如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。 3、新增QQ群方便交流,请加QQ群8035490。 ============================================================================
zip
发布资源于 4 年前

ActivePerl、dmake、nasm、nmake编译OpenSSL(1.1.0系列)

开篇提示:本文为本人原创,本文欢迎转载,但必须注明本文出处,例如:“该文引用自 CruiseYoung的:“ActivePerl、dmake、nasm、nmake编译OpenSSL(1.1.0系列)” http://blog.csdn.net/fksec/article/details/52667055” 否则说明阁下愿意支付以100元人民币每字计的稿费,敬请留意。注1:本文基于W...
原创
6732阅读
1评论
0点赞
发布博客于 5 年前

Visual Studio Help Downloader Plus v5.0.0.0

============================================================================ 软件版本: 5.0.0.0 Beta 基础版本: 1.2.0.0 Beta 软件著作人:NickDal,Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/ServiceAPI/catalogs/ 源代码托管: https://github.com/CruiseYoung/vshdp 修改内容: v5.0.0.0(2015.11.30日)更新内容 1、增加对dev10(Visual Studio 2010)版本的支持,至此“Visual Studio Help Downloader Plus”支持Visual Studio 2010以及其后所有已发布的版本,理论上也支持Visual Studio未来版本的支持,为庆祝此跨越,特将版本号从5.0.0.0开始编号; 2、由于该版本支持Visual Studio 2010版本,为了能使VS2010--“帮助”--“管理帮助设置”--“从磁盘安装内容”能识别msha文件,特统一更改msha文件命名方式,遵从"Visual Studio 2010 Help Downloader Plus" 的命名规则; 3、优化代码,增加对“PackageList.txt”、“HelpContentSetup.msha”文件内容排序; v3.0.0.3(2015.08.15日)更新内容 1、增加在有某vs版本时,而没有对应语言列表,或对应语言列表不足14(Visual Studio 2012/2013语言列表数目)时,手动添加其语言列表(该需求由“CSDN”的“qq_30108695”提提交,在此表示感谢); v3.0.0.2(2015.08.13日)更新内容 1、修复dev14(Visual Studio 2015)加载语言时挂死(该bug由“远景论坛”的“铁浪”提交,在此表示感谢), 修改为默认加载"en-us"语言,如果没有该语言则显示提供的第一种语言; v3.0.0.1(2014.05.28日)更新内容 1、按照资源加载顺序,调整界面布局; 2、修复动态加载微软官网配置时的方式; v3.0.0.0(2014.05.23日)更新内容 1、将获取文件的下载路径,由拼接改为由代码从微软官网直接获取;从而可以支持Visual Studio 2012/2013,以及未来版本; 2、由于该版本支持Visual Studio 2012/2013、以及未来版本,特将软件名更改为“Visual Studio Help Downloader Plus”,版本号从3.0.0.0开始编号; v2.0.0.2(2013.06.12日)更新内容 1、将各文件的创建,修改,访问时间修改为文件内容的最后更新的时间; v2.0.0.1(2013.05.26日)更新内容 1、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; v2.0.0.0(2013.04.13日)更新内容 1、修改索引文件生成的目录结构,将多个xml文件合并到一个msha文件,并增加“path”等信息,从而与微软官网的一致; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容,并对该软件面世之前的“MSHAGen”下载的包做了兼容; 5、自动删除过期文件; 6、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 7、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 修改依据: 1、依据是微软官方发布的VS2012Documentation的ISO中的“helpcontentsetup.msha”; 注意事项: 1、运行本软件必须安装“.NET Framework 4.5”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 3、本软件为了更好的服务大家,因而不兼容本软件的修改基础“Visual Studio 2012/2013/2015 Help Downloader 1.2.0.0 Beta”所下的包; 联系修改人: 1、如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 2、如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。 ============================================================================
zip
发布资源于 6 年前

Visual Studio 2010 Help Downloader Plus v2.0.0.6

============================================================================ 软件名称: Visual Studio 2010 Help Downloader Plus 原 名 称: Visual Studio 2010 Help Downloader 原 官 网: http://vshelpdownloader.codeplex.com/ (已失效) 软件版本: 2.0.0.6 Beta 基础版本: 1.0.0.3 Beta 软件著作人:Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/serviceapi/ 源代码托管: https://github.com/CruiseYoung/vshdp2010 修改内容: [color=#ff00ff]v2.0.0.6(2015.11.30日)更新内容[/color] 1、优化代码,增加对“PackageList.txt”、“HelpContentSetup.msha”等输出文件内容排序; v2.0.0.5(2014.05.28日)更新内容 1、按照资源加载顺序,调整界面布局; v2.0.0.4(2014.05.23日)更新内容 1、将获取文件的下载路径,由拼接改为由代码从微软官网直接获取; v2.0.0.3(2013.06.12日)更新内容 1、将各文件的创建,修改,访问时间修改为文件内容的最后更新的时间; v2.0.0.2(2013.05.26日)更新内容 1、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; 2、自动加载上次所选择下载的Book项。 v2.0.0.1(2013.05.04日)更新内容 1、在下载一门语言的“Help Library”后,不关闭软件再下其它非英语的“Help Library”不用重新“Load Books”; 2、去掉重复的“product”项,和直接用VS2010--“帮助”--“管理帮助设置”--“联机安装内容”里的“product”项完全一致; 3、为了能使VS2010--“帮助”--“管理帮助设置”--“从磁盘安装内容”能识别msha文件,特更改msha文件命名方式; v2.0.0.0(2013.04.13日)更新内容 1、完整索引文件内容; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、将“xml”文件后缀更改为“html”; 5、兼容本软件的修改基础软件“Visual Studio 2010 Help Downloader v1.0.0.3 Beta”; 6、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容; 7、自动删除过期文件; 8、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 9、非英语“Help Library”的“Book”包含完整的“英语“Help Library”Book”,从而和vs2012一样; 10、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 修改依据: 1、依据是VS2010安装ISO中的“helpcontentsetup.msha”等信息; 2、微软官网“http://services.mtps.microsoft.com/serviceapi/”帮助信息。 注意事项: 1、运行本软件必须安装“.NET Framework 4”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 联系修改人: 1、如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 2、如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。 ============================================================================
zip
发布资源于 6 年前

Visual Studio Help Downloader Plus v3.0.0.3

软件名称: Visual Studio Help Downloader Plus 原 名 称: Visual Studio 2012/2013/2015 Help Downloader 原 官 网: http://vshd.codeplex.com/ 软件版本: 3.0.0.3 Beta 基础版本: 1.2.0.0 Beta 软件著作人:NickDal,Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/ServiceAPI/catalogs/ 修改内容: 1、修改索引文件生成的目录结构,将多个xml文件合并到一个msha文件,并增加“path”等信息,从而与微软官网的一致; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容,并对该软件面世之前的“MSHAGen”下载的包做了兼容; 5、自动删除过期文件; 6、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 7、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 2013.05.26日更新内容 8、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; 2013.06.12日更新内容 9、将各文件(不包括文件夹,但代码已经有相关代码,如需包括修改文件夹时间,则只需打开注释即可)的创建,修改,访问时间修改为文件内容的最后更新的时间; 2014.05.23日更新内容 10、将获取文件的下载路径,由拼接改为由代码从微软官网直接获取;从而可以支持Visual Studio 2012/2013,以及未来版本; 11、由于该版本支持Visual Studio 2012/2013、以及未来版本,特将软件名更改为“Visual Studio Help Downloader Plus”,版本号从3.0.0.0开始编号; 2014.05.28日更新内容 12、按照资源加载顺序,调整界面布局; 13、修复动态加载微软官网配置时的方式; 2015.08.13日更新内容 14、修复dev14(Visual Studio 2015)加载语言时挂死(该bug由“远景论坛”的“铁浪”提交,在此表示感谢), 修改为默认加载"en-us"语言,如果没有该语言则显示提供的第一种语言; 2015.08.15日更新内容 15、增加在有某vs版本时,而没有对应语言列表,或对应语言列表不足14(Visual Studio 2012/2013语言列表数目)时,手动添加其语言列表(该需求由“CSDN”的“qq_30108695”提提交,在此表示感谢); 修改依据: 1、依据是微软官方发布的VS2012Documentation的ISO中的“helpcontentsetup.msha”; 注意事项: 1、运行本软件必须安装“.NET Framework 4.5”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 3、本软件为了更好的服务大家,因而不兼容本软件的修改基础“Visual Studio 2012/2013/2015 Help Downloader 1.2.0.0 Beta”所下的包; 联系修改人: 如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。
zip
发布资源于 6 年前

Visual Studio Help Downloader Plus v3.0.0.2

软件名称: Visual Studio Help Downloader Plus 原 名 称: Visual Studio 2012/2013 Help Downloader 原 官 网: https://vshd2012.codeplex.com/ 软件版本: 3.0.0.2 Beta 基础版本: 1.1.0.0 Beta 软件著作人:NickDal,Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/ServiceAPI/catalogs/ 修改内容: 1、修改索引文件生成的目录结构,将多个xml文件合并到一个msha文件,并增加“path”等信息,从而与微软官网的一致; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容,并对该软件面世之前的“MSHAGen”下载的包做了兼容; 5、自动删除过期文件; 6、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 7、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 2013.05.26日更新内容 8、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; 2013.06.12日更新内容 9、将各文件(不包括文件夹,但代码已经有相关代码,如需包括修改文件夹时间,则只需打开注释即可)的创建,修改,访问时间修改为文件内容的最后更新的时间; 2014.05.23日更新内容 10、将获取文件的下载路径,由拼接改为由代码从微软官网直接获取;从而可以支持Visual Studio 2012/2013,以及未来版本; 11、由于该版本支持Visual Studio 2012/2013、以及未来版本,特将软件名更改为“Visual Studio Help Downloader Plus”,版本号从3.0.0.0开始编号; 2014.05.28日更新内容 12、按照资源加载顺序,调整界面布局; 13、修复动态加载微软官网配置时的方式; 2015.08.13日更新内容 14、修复dev14加载语言时挂死(感谢“远景论坛”的“铁浪”), 修改为默认加载"en-us"语言,如果没有该语言则显示提供的第一种语言 修改依据: 1、依据是微软官方发布的VS2012Documentation的ISO中的“helpcontentsetup.msha”; 注意事项: 1、运行本软件必须安装“.NET Framework 4.5”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 3、本软件为了更好的服务大家,因而不兼容本软件的修改基础“Visual Studio Help Downloader 2012 v1.1.0.0 Beta”所下的包; 联系修改人: 如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。
zip
发布资源于 6 年前

VS中语言属性对字符集转码的影响

VS中语言属性对字符集转码的影响
原创
2048阅读
0评论
0点赞
发布博客于 6 年前

MongoDB在Windows平台中需要注意的问题

1、nssize问题
原创
2135阅读
0评论
0点赞
发布博客于 6 年前

获取硬件UUID方法(windows、linux)

1、命令获取uuid1.1、windows系统中获取设备的UUID的方法:在命令提示符下输入wmic 再输入csproduct 或 csproduct list fullwmic:rootcli>csproduct list fullDescription=计算机系统产品IdentifyingNumber=*****Name=*****SKUNumber=UUID=8
原创
40432阅读
0评论
1点赞
发布博客于 6 年前

google-glog库编译(Visual Studio 2013)及使用方法

开篇提示:本文为本人原创,本文欢迎转载,但必须注明本文出处,例如。“该文引用自 CruiseYoung的:Visual Studio 2013编译google-gloghttp://blog.csdn.net/fksec/article/details/44341531”否则说明阁下愿意支付以100元人民币每字计的稿费,敬请留意。1 官方网站官方代码托管地址:https://gith
原创
9147阅读
2评论
6点赞
发布博客于 6 年前

Visual Studio 2013开发环境UTF8设置

Visual Studio 2013开发环境UTF8设置
原创
3624阅读
0评论
0点赞
发布博客于 6 年前

设置“当前文件夹”为“当前模块”所在文件夹

开篇提示:本文为本人原创,本文欢迎转载,但必须注明本文出处,例如。“该文引用自 CruiseYoung的:设置“当前文件夹”为“当前模块”所在文件夹http://blog.csdn.net/fksec/article/details/41546189”否则说明阁下愿意支付以100元人民币每字计的稿费,敬请留意。1 开题背景1.1 背景经常使用VS调试程序的同学都有过这样的
原创
2955阅读
1评论
0点赞
发布博客于 7 年前

log4cplus配置文件、包装类、测试程序示例

开篇提示:本文为本人原创,本文欢迎转载,但必须注明本文出处,例如。“该文引用自 CruiseYoung的:log4cplus配置文件、包装类、测试程序示例http://blog.csdn.net/fksec/article/details/41546189”否则说明阁下愿意支付以100元人民币每字计的稿费,敬请留意。1 参考文章1.1 编译Visual Studio 20
原创
5467阅读
0评论
0点赞
发布博客于 7 年前

log4cplus配置文件编写及使用

开篇提示1:本文为本人原创,本文欢迎转载,但必须注明本文出处,例如。“该文引用自 CruiseYoung的:Visual Studio 2013编译log4cplushttp://blog.csdn.net/fksec/article/details/38418809”否则说明阁下愿意支付以100元人民币每字计的稿费,敬请留意。开篇提示2:本人使用log4cplus时喜欢采用配置文件的方
原创
13525阅读
5评论
2点赞
发布博客于 7 年前

pthread-win32库编译及使用方法注意事项

开篇提示:本文欢迎转载,但必须注明本文出处,例如:“该文引用自 CruiseYoung的: pthread-win32库编译及使用方法注意事项   http://blog.csdn.net/fksec/article/details/25989419”   否则说明阁下愿意支付以100元人民币每字计的稿费,敬请留意。1 官网1.1 POSIX Threads (pthreads
原创
9074阅读
0评论
0点赞
发布博客于 7 年前

将libzdb移植到msvc(Visual Studio 2013)

开篇提示1:本文为本人原创,“第一个”讲解cmake编译libevent库。开篇提示2:本文欢迎转载,但必须注明本文出处,例如:“该文引用自 CruiseYoung的: nmake、cmake、Visual Studio编译libevent   http://blog.csdn.net/fksec/article/details/25989419”   否则说明阁下愿意支付以100
原创
4982阅读
10评论
1点赞
发布博客于 7 年前

Crypto++(CryptoPP)库初始化以及使用注意事项

开篇提示:本文为本人原创,本文欢迎转载,但必须注明本文出处,例如。“该文引用自 CruiseYoung的:Visual Studio 2013编译libiconv-1.14http://blog.csdn.net/fksec/article/details/40378469”否则说明阁下愿意支付以100元人民币每字计的稿费,敬请留意。
原创
9088阅读
0评论
2点赞
发布博客于 7 年前

Visual Studio 2013编译libiconv-1.14

1 资料准备:1.1 参考资料:libiconv-1.14 for windows(里面包含msvs10(Visual Studio 2010)工程):http://download.csdn.net/detail/travel981cn/7127889How to Build libiconv with Microsoft Visual Studio:http://www.c
原创
5085阅读
0评论
0点赞
发布博客于 7 年前

premake4 生成 rapidjson Visual Studio 2012测试工程

代码托管地址:https://github.com/miloyip/rapidjson/文档地址:http://miloyip.github.io/rapidjson/premake4 地址:切换到、rapidjson
原创
3916阅读
1评论
0点赞
发布博客于 7 年前

Visual Studio 2013编译log4cplus

如果用最新版,请下载带版本号的代码,那是没有用c++11特性的没有版本号的master是用了带c++11特性,且有两处错误,不过本人也已经解决。代码托管官方地址:https://github.com/log4cplus/log4cplus
原创
6066阅读
0评论
0点赞
发布博客于 7 年前

Tesseract(tesseract-ocr)在Visual Studio 2013中的使用

以下操作,以Visual Studio 2013创建“test_tess”工程,并添加默认解决方案“test_tess”;一切采用默认设置。1 头文件引入:在“解决方案管理器”窗口-->右键“test_tess”工程-->“属性(R)”-->“配置属性”-->“C/C++”-->“常规”-->“附加包含目录”: 在“test_tess”工程中所有“活动解决方案平台”的所有“活动解决方案配置
原创
10846阅读
5评论
0点赞
发布博客于 7 年前

Visual Studio 2013编译ImageMagick

1、前期准备:Visual C++ Compiler November 2013 CTP (for  Visual Studio 2013)下载页面:http://www.microsoft.com/en-us/download/details.aspx?id=41151直接地址:http://download.microsoft.com/download/3/C/2/3C271B79
原创
5860阅读
1评论
0点赞
发布博客于 7 年前

Visual Studio 2013、TortoiseSVN、TortoiseGit、msysgit编译Tesseract(tesseract-ocr)

msysgit - Git for WindowsTortoiseSVN
原创
6843阅读
0评论
0点赞
发布博客于 7 年前

Visual Studio 2010 Help Downloader 增强版 v2.0.0.5(修正重发版)

软件名称: Visual Studio 2010 Help Downloader 原 名 称: Visual Studio 2010 Help Downloader 原 官 网: http://vshelpdownloader.codeplex.com/ (已失效) 软件版本: 2.0.0.5 Beta 基础版本: 1.0.0.3 Beta 软件著作人:Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/serviceapi/ 修改内容: 1、完整索引文件内容; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、将“xml”文件后缀更改为“html”; 5、兼容本软件的修改基础软件“Visual Studio 2010 Help Downloader v1.0.0.3 Beta”; 6、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容; 7、自动删除过期文件; 8、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 9、非英语“Help Library”的“Book”包含完整的“英语“Help Library”Book”,从而和vs2012一样; 10、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 2013.05.04日更新内容 11、在下载一门语言的“Help Library”后,不关闭软件再下其它非英语的“Help Library”不用重新“Load Books”; 12、去掉重复的“product”项,和直接用VS2010--“帮助”--“管理帮助设置”--“联机安装内容”里的“product”项完全一致; 13、为了能使VS2010--“帮助”--“管理帮助设置”--“从磁盘安装内容”能识别msha文件,特更改msha文件命名方式; 2013.05.26日更新内容 14、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; 15、自动加载上次所选择下载的Book项; 2013.06.12日更新内容 16、将各文件(不包括文件夹,但代码已经有相关代码,如需包括修改文件夹时间,则只需打开注释即可)的创建,修改,访问时间修改为文件内容的最后更新的时间; 2014.05.23日更新内容 17、将获取文件的下载路径,由拼接改为由代码从微软官网直接获取; 2014.05.28日更新内容 18、按照资源加载顺序,调整界面布局; 修改依据: 1、依据是VS2010安装ISO中的“helpcontentsetup.msha”等信息; 2、微软官网“http://services.mtps.microsoft.com/serviceapi/”帮助信息。 注意事项: 1、运行本软件必须安装“.NET Framework 4”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 联系修改人: 如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。
zip
发布资源于 7 年前

Visual Studio Help Downloader Plus v3.0.0.1

软件名称: Visual Studio Help Downloader Plus 原 名 称: Visual Studio Help Downloader 2012 原 官 网: https://vshd2012.codeplex.com/ 软件版本: 3.0.0.1 Beta 基础版本: 1.1.0.0 Beta 软件著作人:NickDal,Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/ServiceAPI/catalogs/visualstudio11/ 修改内容: 1、修改索引文件生成的目录结构,将多个xml文件合并到一个msha文件,并增加“path”等信息,从而与微软官网的一致; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容,并对该软件面世之前的“MSHAGen”下载的包做了兼容; 5、自动删除过期文件; 6、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 7、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 2013.05.26日更新内容 8、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; 2013.06.12日更新内容 9、将各文件(不包括文件夹,但代码已经有相关代码,如需包括修改文件夹时间,则只需打开注释即可)的创建,修改,访问时间修改为文件内容的最后更新的时间; 2014.05.23日更新内容 10、将获取文件的下载路径,由拼接改为由代码从微软官网直接获取;从而可以支持Visual Studio 2012/2013,以及未来版本; 11、由于该版本支持Visual Studio 2012/2013、以及未来版本,特将软件名更改为“Visual Studio Help Downloader Plus”,版本号从3.0.0.0开始编号; 2014.05.28日更新内容 12、按照资源加载顺序,调整界面布局; 13、修复动态加载微软官网配置时的方式; 修改依据: 1、依据是微软官方发布的VS2012Documentation的ISO中的“helpcontentsetup.msha”; 注意事项: 1、运行本软件必须安装“.NET Framework 4.5”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 3、本软件为了更好的服务大家,因而不兼容本软件的修改基础“Visual Studio Help Downloader 2012 v1.1.0.0 Beta”所下的包; 联系修改人: 如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。
zip
发布资源于 7 年前

Visual Studio Help Downloader Plus V3.0.0.0

软件名称: Visual Studio Help Downloader Plus 原 名 称: Visual Studio Help Downloader 2012 原 官 网: https://vshd2012.codeplex.com/ 软件版本: 3.0.0.0 Beta 基础版本: 1.1.0.0 Beta 软件著作人:NickDal,Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/ServiceAPI/catalogs/visualstudio11/ 修改内容: 1、修改索引文件生成的目录结构,将多个xml文件合并到一个msha文件,并增加“path”等信息,从而与微软官网的一致; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容,并对该软件面世之前的“MSHAGen”下载的包做了兼容; 5、自动删除过期文件; 6、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 7、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 2013.05.26日更新内容 8、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; 2013.06.12日更新内容 9、将各文件(不包括文件夹,但代码已经有相关代码,如需包括修改文件夹时间,则只需打开注释即可)的创建,修改,访问时间修改为文件内容的最后更新的时间; 2014.05.23日更新内容 10、将获取文件的下载路径,由拼接改为由代码从微软官网直接获取;从而可以支持Visual Studio 2012/2013,以及未来版本; 11、由于该版本支持Visual Studio 2012/2013、以及未来版本,特将软件名更改为“Visual Studio Help Downloader Plus”,版本号从3.0.0.0开始编号; 修改依据: 1、依据是微软官方发布的VS2012Documentation的ISO中的“helpcontentsetup.msha”; 注意事项: 1、运行本软件必须安装“.NET Framework 4.5”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 3、本软件为了更好的服务大家,因而不兼容本软件的修改基础“Visual Studio Help Downloader 2012 v1.1.0.0 Beta”所下的包; 联系修改人: 如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。
zip
发布资源于 7 年前

Visual Studio 2010 Help Downloader 增强版 v2.0.0.4

软件名称: Visual Studio 2010 Help Downloader 原 名 称: Visual Studio 2010 Help Downloader 原 官 网: http://vshelpdownloader.codeplex.com/ (已失效) 软件版本: 2.0.0.4 Beta 基础版本: 1.0.0.3 Beta 软件著作人:Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/serviceapi/ 修改内容: 1、完整索引文件内容; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、将“xml”文件后缀更改为“html”; 5、兼容本软件的修改基础软件“Visual Studio 2010 Help Downloader v1.0.0.3 Beta”; 6、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容; 7、自动删除过期文件; 8、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 9、非英语“Help Library”的“Book”包含完整的“英语“Help Library”Book”,从而和vs2012一样; 10、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 2013.05.04日更新内容 11、在下载一门语言的“Help Library”后,不关闭软件再下其它非英语的“Help Library”不用重新“Load Books”; 12、去掉重复的“product”项,和直接用VS2010--“帮助”--“管理帮助设置”--“联机安装内容”里的“product”项完全一致; 13、为了能使VS2010--“帮助”--“管理帮助设置”--“从磁盘安装内容”能识别msha文件,特更改msha文件命名方式; 2013.05.26日更新内容 14、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; 15、自动加载上次所选择下载的Book项; 2013.06.12日更新内容 16、将各文件(不包括文件夹,但代码已经有相关代码,如需包括修改文件夹时间,则只需打开注释即可)的创建,修改,访问时间修改为文件内容的最后更新的时间; 2014.05.23日更新内容 17、将获取文件的下载路径,由拼接改为由代码从微软官网直接获取; 修改依据: 1、依据是VS2010安装ISO中的“helpcontentsetup.msha”等信息; 2、微软官网“http://services.mtps.microsoft.com/serviceapi/”帮助信息。 注意事项: 1、运行本软件必须安装“.NET Framework 4”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 联系修改人: 如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。
zip
发布资源于 7 年前

Visual Studio 2013编译ICU4C 5.31

下载了ICU,支持vs2008,工程文件在 icu/source/allinone 下,不过默认编译出来的是动态链接版本,所以需要改造成静态的,那只有修改工程配置文件啦,1.修改以下几个工程配置 Configuration Properties=>General=>Configuration Type,修改为Static library (.lib) 2.然后修改静态库的输
原创
4357阅读
0评论
0点赞
发布博客于 7 年前

nmake、cmake、Visual Studio编译libevent

dd
原创
8579阅读
0评论
1点赞
发布博客于 7 年前

ActivePerl、nmake编译OpenSSL(1.0.x系列)

开篇提示:本文为本人原创,本文欢迎转载,但必须注明本文出处,例如:否则说明阁下愿意支付以100元人民币每字计的稿费,敬请留意。注:本文基于Win x64位平台来讲解,x86基本相同:1 下载软件包1.1 ActivePerl(x64):http://www.activestate.com/activeperl/downloads1.2 OpenSSL:htt
原创
4165阅读
1评论
1点赞
发布博客于 7 年前

nmake、cmake、Visual Studio编译zlib

下载zlib128.zip http://www.zlib.net/阅读:zlib-1.2.8\contrib\vstudio\readme.txtzlib-1.2.8\win32\Makefile.msc(use ASM code, x86)nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="inffas
原创
4517阅读
0评论
1点赞
发布博客于 7 年前

cmake、Visual Studio编译“MySQL Community Server”、“MySQL Connector/C”、“MySQL Connector/C++”

cmake编译“MySQL Community Server”、“MySQL Connector/C”、“MySQL Connector/C++”注1:本文基于Win x64位平台来讲解,x86基本相同:注2:本文所用软件环境:Visual Studio:2013cmake: 2.8.12.2boost: 1.55.0MySQL Community Se
原创
3015阅读
0评论
0点赞
发布博客于 7 年前

TCP/IP网络互联技术(卷3):客户-服务器编程与应用(Windows套接字版)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料《TCP/IP网络互联技术(卷3):客户-服务器编程与应用(Windows套接字版)》的源代码见: http://download.csdn.net/detail/fksec/4639930 TCP/IP网络互联技术(卷3):客户-服务器编程与应用(Windows套接字版) 基本信息 原书名: Internetworking with TCP/IP Vol III:Client-Server Programming and Applications Windows Sockets Version 原出版社: Prentice Hall/Pearson 作者: (美)Douglas E.Comer,David L.Stevens 译者: 张卫 王能 丛书名: 国外经典教材·计算机科学与技术 出版社:清华大学出版社 ISBN:7302093792 上架时间:2004-11-10 出版日期:2004 年9月 开本:185×260 页码:446 版次:1-1 内容简介    本书介绍了在Windows操作系统平台上如何使用Windows套接字应用程序接口(Windows Socket APl)编写TCP/IP通信程序。重点放在客户—服务器机制上,介绍了客户-服务器机制和应用程序用于网络通信的套接字接口,分析了分布式程序的客户端和服务器两部分的算法,讨论了客户端和服务器的设计及遵循的模式。本书在并发处理上也花费了相当大的篇幅,描述了并发线程以及相关的创建线程的操作系统函数。本书给出了能说明每个设计思想的实现方法,讨论了包括应用层网关和管道在内的各种技术,回顾了几个标准应用协议,并使用它们说明一些算法和实现技术。本书包含的一些例子程序显示了每个设计实际上如何操作,大多数的例子实现了标准因特网应用协议。    本书适合于大学高年级学生或研究生的网络编程入门课程,也可作为程序员的参考书。    作译者 作者:Douglas E.Comer    Douglas Comer博博士是Purdue Univ的教授,讲授操作系统和计算机网络的课程,早在20世纪70午代后期。他就参与了TCP/IP和互联网的研究,并成为世界公认的权威,由他设计实现了X25NET和CYpress网络.以及Xinu操作系统。David Stevens是普渡大学计算中心的程序员。TCP/IP的世界经典教材就是他们所著,他们的著作已誉满全球,我国多家出版社也引进了其多部著作的版权。他们的TCP/IP网络互联技术卷1、卷2、卷3在我国都有影印版本。    Douglas E.Comer博士从20世纪70年代开始从事互联网的研究和开发工作,他曾是互联网体系结构委员会的成员,该委员会是确定互联网发展标准的权威机构;他也曾任美国计算机网CSTNET技术委员会的主席,该网络是美国早期互联网建设中最重要的网络之一。他现在是美国普渡大学计算机科学系的教授,从事计算机网络和操作系统方面的教学和科研工作。 目录 封面 -26 扉页 -25 版权 -24 国外经典教材.计算机科学与技术 编审委员会 -23 出版说明 -22 译者的话 -21 序一 -20 序二 -19 目录 -17 第1章 概述 1 1.1 TCP/IP的应用 1 1.2 分布式环境下应用程序的设计 1 1.3 标准和非标准的应用协议 2 1.4 使用标准应用协议的例子 2 1.5 telnet连接的例子 3 1.6 用TELNET访问其他服务 3 1.7 应用协议和软件的灵活性 4 1.8 从提供者的角度看服务 5 1.9 本书的其余部分 6 1.10 小结 6 进一步的研究 6 习题 6 第2章 客户.服务器模型和软件的设计 8 2.1 简介 8 2.2 动机 8 2.3 术语和概念 9 2.3.1 客户端和服务器 9 2.3.2 特权和复杂性 9 2.3.3 标准和非标准的客户端软件 10 2.3.4 客户端的参数化 10 2.3.5 无连接的与面向连接的服务 11 2.3.6 无状态与有状态的服务器 12 2.3.7 有状态的文件服务器例子 12 2.3.8 无状态是一个协议问题 14 2.3.9 充当客户端的服务器 15 2.4 小结 15 进一步的研究 16 习题 16 第3章 客户.服务器软件的并发处理 17 3.1 引言 17 3.2 网络中的并发 17 3.3 服务器中的并发 18 3.4 术语和概念 19 3.4.1 进程的概念 19 3.4.2 线程 20 3.4.3 程序和线程 21 3.4.4 过程调用 21 3.5 一个创建并发线程的例子 22 3.5.1 一个顺序执行的C的示例 22 3.5.2 程序的并发版本 23 3.5.3 时间片 25 3.6 分离的线程 26 3.7 上下文切换和协议软件设计 27 3.8 并发和异步I/O 27 3.9 UNIX下的并发 28 3.10 执行一个单独编译的程序 29 3.11 小结 30 进一步的研究 30 习题 30 第4章 协议的程序接口 32 4.1 引言 32 4.2 宽松定义的协议软件接口 32 4.3 接口功能 33 4.4 概念性接口的规范 33 4.5 API的实现 34 4.6 网络通信的两种基本方法 36 4.7 ANSI C中提供的基本I/O函数 36 4.8 UNIX套接字API的历史 37 4.9 小结 38 进一步的研究 38 习题 38 第5章 套接字API 40 5.1 简介 40 5.2 套接字的历史 40 5.3 一个协议接口的制订 41 5.4 套接字的抽象 41 5.4.1 套接字描述符 41 5.4.2 套接字的系统数据结构 42 5.4.3 使用套接字 43 5.5 指定端点地址 43 5.6 通用地址结构 44 5.7 套接字API中的函数 45 5.7.1 WSAStartup函数 46 5.7.2 WSACleanup函数 46 5.7.3 Socket函数 46 5.7.4 connect函数 46 5.7.5 send函数 46 5.7.6 recv函数 47 5.7.7 closesocket函数 47 5.7.8 bind函数 47 5.7.9 listen函数 48 5.7.10 accept调用 48 5.7.11 TCP套接字调用小结 48 5.8 用于整数转换的实用例程 49 5.9 程序中使用套接字调用 49 5.10 用作套接字调用参数的符号常量 50 5.11 小结 51 进一步的研究 51 习题 51 第6章 客户软件设计中的算法和问题 53 6.1 引言 53 6.2 学习算法而不研究细节 53 6.3 客户体系结构 54 6.4 标识服务器的地址 54 6.5 分析地址参数 55 6.6 查找域名 56 6.7 由名字查找熟知端口 57 6.8 端口号和网络字节顺序 58 6.9 由名字查找协议 58 6.10 TCP客户算法 59 6.11 分配套接字 59 6.12 选择本地协议端口号 60 6.13 选择本地IP地址的一个基本问题 60 6.14 将TCP套接字连接到服务器 61 6.15 使用TCP和服务器通信 61 6.16 从TCP连接上读取响应 62 6.17 关闭TCP连接 63 6.17.1 需要部分关闭 63 6.17.2 部分关闭的操作 63 6.18 UDP客户端的编程 64 6.19 面向连接的和无连接的UDP套接字 64 6.20 对UDP使用connect 65 6.21 使用UDP和服务器通信 65 6.22 关闭使用UDP的套接字 65 6.23 对UDP的部分关闭 65 6.24 关于UDP不可靠性的警告 66 6.25 小结 66 进一步的研究 67 习题 67 第7章 客户软件举例 68 7.1 引言 68 7.2 小例子的重要性 68 7.3 隐藏细节 68 7.4 客户程序的过程库例子 69 7.5 ConTCP的实现 70 7.6 ConUPD的实现 70 7.7 用来建立连接的过程 71 7.8 使用例子库 74 7.9 DAYTIME服务 74 7.10 DAYTIME的TCP客户实现 75 7.11 从TCP连接上读取数据 76 7.12 TIME服务 77 7.13 访问TIME服务 77 7.14 精确的时间和网络时延 78 7.15 TIME服务的UDP客户 78 7.16 ECHO服务 80 7.17 ECH0服务的TCP客户 81 7.18 ECHO服务的UDP客户 83 7.19 小结 85 进一步的研究 85 习题 86 第8章 服务器软件设计的算法和问题 87 8.1 引言 87 8.2 概念性的服务器算法 87 8.3 并发服务器和循环服务器 87 8.4 面向连接的访问和无连接的访问 88 8.5 面向连接的服务器 88 8.6 无连接的服务器 89 8.7 故障、可靠性和无状态 90 8.8 优化无状态服务器 90 8.9 四种基本类型的服务器 92 8.10 请求处理时间 93 8.11 循环服务器的算法 94 8.12 循环的、面向连接的服务器算法 94 8.13 用INADDR_ANY绑定熟知地址 94 8.14 将套接字设置为被动模式 95 8.15 接受连接并使用这些连接 95 8.16 循环的、无连接的服务器算法 95 8.17 在无连接的服务器上构造响应地址 96 8.18 并发服务器的算法 97 8.19 主线程和子线程 97 8.20 并发的、无连接的服务器的算法 98 8.21 并发的、面向连接的服务器算法 98 8.22 用分离的程序作为子进程 99 8.23 使用单个线程实现表面上的并发性 99 8.24 各服务器类型的使用场合 100 8.25 服务类型小结 101 8.25.1 循环的、无连接的服务器 101 8.25.2 循环的、面向连接的服务器 101 8.25.3 并发的、无连接的服务器 101 8.25.4 并发的、面向连接的服务器 101 8.26 重要的服务器死锁的问题 102 8.27 其他的实现方法 103 8.28 小结 103 进一步的研究 103 习题 104 第9章 循环无连接服务器(UDP) 105 9.1 引言 105 9.2 创建被动套接字 105 9.3 线程结构 108 9.4 TIME服务器举例 109 9.5 小结 111 进一步的研究 111 习题 111 第10章 循环的、面向连接的服务器(TCP) 112 10.1 引言 112 10.2 分配被动的TCP套接字 112 10.3 实现DAYTIME服务的服务器 113 10.4 线程结构 113 10.5 DAYTIME服务器举例 114 10.6 关闭连接 116 10.7 连接终止和服务器的脆弱性 117 10.8 小结 117 进一步的研究 118 习题 118 第11章 并发的、面向连接的服务器(TCP) 119 11.1 引言 119 11.2 并发ECH0 119 11.3 循环的实现和并发的实现的比较 120 11.4 线程结构 120 11.5 并发的ECH0服务器举例 121 11.6 小结 124 进一步的研究 124 习题 124 第12章 单线程、并发服务器(TCP) 125 12.1 引言 125 12.2 服务器中的数据驱动处理 125 12.3 单线程的数据驱动处理 126 12.4 单线程服务器的线程结构 126 12.5 单线程ECH0服务器举例 127 12.6 小结 130 进一步的研究 130 习题 130 第13章 多协议服务器(TCP,UDP) 132 13.1 引言 132 13.2 减少服务器数量的动机 132 13.3 多协议服务器的设计 133 13.4 线程结构 133 13.5 多协议DAYTIME服务器举例 134 13.6 共享代码的概念 137 13.7 并发的多协议服务器 137 13.8 小结 138 进一步的研究 138 习题 138 第14章 多服务服务器(TCP,UDP) 139 14.1 引言 139 14.2 服务器程序的合并 139 14.3 无连接的、多服务服务器的设计 140 14.4 面向连接的、多服务服务器的设计 140 14.5 并发的、面向连接的、多服务服务器 141 14.6 单线程多服务服务器的实现 142 14.7 多服务服务器对其他单独程序的调用 143 14.8 多服务、多协议设计 144 14.9 一个多服务服务器的例子 144 14.10 静态的和动态的服务器配置 150 14.11 一个超级服务器的例子,Inetd 151 14.12 小结 153 进一步的研究 153 习题 153 第15章 服务器并发性的统一高效管理 155 15.1 引言 155 15.2 在循环设计和并发设计之间做出选择 155 15.3 并发等级 156 15.4 需求驱动的并发 156 15.5 并发的代价 157 15.6 额外开销和时延 157 15.7 小时延会出问题 157 15.8 线程预分配 159 15.8.1 预分配技术 159 15.8.2 面向连接的服务器的预分配 160 15.8.3 无连接服务器的预分配 161 15.8.4 预分配、突发通信量和NFS 161 15.8.5 多处理器上的预分配 162 15.9 延迟的线程分配 162 15.10 两种技术统一的基础 163 15.11 两种技术的结合 164 15.12 小结 164 进一步的研究 165 习题 165 第16章 客户端的并发 166 16.1 引言 166 16.2 并发的优点 166 16.3 运行控制的动机 167 16.4 与多个服务器的并发联系 167 16.5 实现并发的客户端 168 16.6 单线程实现 169 16.7 使用ECHO的并发客户端例子 170 16.8 并发客户端的执行 175 16.9 计时器的管理 176 16.10 输出举例 176 16.11 例子代码中的并发性 177 16.12 小结 177 习题 177 第17章 传输层和应用层的隧道技术 179 17.1 引言 179 17.2 多协议环境 179 17.3 混合各种网络技术 180 17.4 动态电路分配 181 17.5 封装和隧道技术 182 17.6 通过IP瓦联网的隧道技术 183 17.7 客户端和服务器之间的应用层隧道技术 183 17.8 隧道技术、封装以及拨号电话线 184 17.9 小结 185 进一步的研究 185 习题 186 第18章 应用层网关 187 18.1 引言 187 18.2 受限环境中的客户端与服务器 187 18.2.1 多重技术的现实 187 18.2.2 功能有限的计算机 188 18.2.3 安全性引发的连通性约束 188 18.3 使用应用网关 188 18.4 通过邮件网关的交互 189 18.5 邮件网关的实现 190 18.6 应用网关和隧道技术的比较 190 18.7 应用网关和功能受限的系统 192 18.8 为了安全性使用的应用网关 193 18.9 应用网关和额外跳问题 194 18.10 一个应用网关的例子 195 18.11 基于Web的应用网关的细节 196 18.12 调用CGI程序 197 18.13 RFC应用网关的URL 198 18.14 通用的应用网关 198 18.15 SLIRP的运行 199 18.16 SLIRP如何处理连接 199 18.17 IP寻址与SLlRP 200 18.18 小结 201 进一步的研究 201 习题 202 第19章 外部数据表示(XDR) 203 19.1 引言 203 19.2 计算机中数据的表示 203 19.3 N平方转换问题 204 19.4 网络标准字节序 205 19.5 外部数据表示事实上的标准 206 19.6 XDR数据类型 206 19.7 隐含类型 207 19.8 使用XDR的软件支持 207 19.9 XDR库例行程序 207 19.10 一次一部分地构建报文 208 19.11 XDR库的转换例行程序 209 19.12 XDR流、I/0和TCP 210 19.13 记录、记录边界和数据报I/O 211 19.14 小结 211 进一步的研究 212 习题 212 第20章 远程过程调用(RPC)的概念 213 20.1 引言 213 20.2 远程过程调用模型 213 20.3 构建分布式程序的两种模式 213 20.4 常规过程调用的概念模型 214 20.5 过程模型的扩充 215 20.6 常规过程调用的执行和返回 215 20.7 分布式系统中的过程模型 216 20.8 客户一服务器和RPC的相似性 217 20.9 作为程序的分布式计算 218 20.10 Sun Microsystems的远程过程调用定义 218 20.11 远程程序和过程 219 20.12 减少参数的数量 219 20.13 标记远程程序和过程 220 20.14 适应远程程序的多个版本 221 20.15 远程程序中的过程互斥 222 20.16 通信语义 222 20.17 至少一次语义 222 20.18 RPC重传 223 20.19 把远程程序映射到协议端口 224 20.20 动态端口映射 224 20.21 RPC端口映射器算法 225 20.22 RPC消息格式 226 20.23 为远程过程排列参数 227 20.24 身份认证 228 20.25 RPC消息表示的例子 229 20.26 认证字段的例子 229 20.27 小结 230 进一步的研究 231 习题 231 第21章 分布式程序的生成(Rpcgen概念) 232 21.1 引言 232 21.2 用使用远程过程调用 232 21.3 支持RPC的编程机制 233 21.4 将程序分割成本地过程和远程过程 234 21.5 为RPC增加代码 235 21.6 桩(stub)过程 235 21.7 多个远程过程和分发 236 21.8 客户端的桩过程名称 236 21.9 使用Rpcgen生成分布式程序 237 21.10 Rpcgen输出和接口过程 238 21.11 Rpcgen的输入和输出 239 21.12 使用Rpcgen构建客户端和服务器 239 21.13 小结 240 进一步的研究 240 习题 241 第22章 分布式程序的生成(Rpcgen的例子) 242 22.1 引言 242 22.2 举例说明Rpcgen 242 22.3 查询字典 242 22.4 建立分布式程序的八个步骤 243 22.5 步骤1:建立常规应用程序 244 22.6 步骤2:将程序分割成两部分 248 22.7 步骤3:创建Rpcgen规范 254 22.8 步骤4:运行Rpcgen 255 22.9 Rpcgen生成的.h文件 256 22.10 Rpcgen生成的XDR转换文件 257 22.11 Rpcgen生成的客户端代码 258 22.12 Rpcgen生成的服务器代码 260 22.13 步骤5:编写桩接口过程 263 22.13.1 客户端接口例程 263 22.13.2 客户端接口例程 265 22.14 步骤6:编译链接客户端程序 267 22.15 步骤7:编译链接服务器程序 270 22.16 步骤8:启动服务器和运行客户端 272 22.17 小结 272 进一步的研究 273 习题 273 第23章 网络文件系统(NFS)的概念 274 23.1 引言 274 23.2 远程文件访问与文件传输 274 23.3 对远程文件的操作 275 23.4 异构计算机之间的文件访问 275 23.5 无状态的服务器 275 23.6 NFS和UNIX文件语义 276 23.7 UNIX文件系统概述 276 23.7.1 基本定义 276 23.7.2 无记录边界的字节序列 276 23.7.3 文件的拥有者和组标识符 277 23.7.4 保护和访问 277 23.7.5 UNIX中的打开一读一写一关闭范例 278 23.7.6 UNIX中的数据传输 278 23.7.7 搜索目录的权限 279 23.7.8 UNIX中的随机访问 279 23.7.9 搜索超过UNIX文件结尾 280 23.7.10 UNIX文件位置和并发访问 280 23.7.11 并发访问时的写操作的语义 281 23.7.12 UNIX中的文件名和路径 281 23.7.13 UNIX索引节点:存储在文件中的信息 282 23.7.14 UNIX中的Stat操作 283 23.7.15 UNIX的文件命名机制 284 23.7.16 装配UNIX文件系统 284 23.7.17 UNIX文件名解析 286 23.7.18 UNIX符号链接 286 23.8 NFS下的文件 287 23.9 NFS文件类型 287 23.10 NFS文件模式 288 23.11 NFS文件属性 289 23.12 NFS的客户端和服务器 289 23.13 NFS客户端的操作 291 23.14 NFS的客户端和UNIX 291 23.15 NFS的装配(Mounts) 292 23.16 文件句柄 293 23.17 NFS句柄取代路径名 293 23.18 Windows下的NFS客户端 294 23.19 无状态服务器的文件定位 295 23.20 对目录的操作 295 23.21 无状态地读目录 296 23.22 NFS服务器中的多个分层结构 296 23.23 装配协议 297 23.24 小结 297 进一步的研究 298 习题 298 第24章 网络文件系统协议(NFS,Mount) 300 24.1 引言 300 24.2 用RPC定义协议 300 24.3 用数据结构和过程定义协议 301 24.4 NFS的常量、类型和数据声明 301 24.4.1 NFS的常量 301 24.4.2 NFS的Typedef声明 302 24.4.3 NFS的数据结构 303 24.5 NFS的过程 305 24.6 NFS中的操作的语义 306 24.6.1 NFSPROC_NULL(过程0) 306 24.6.2 NFSPROC_GETATTR(过程1) 306 24.6.3 NFSPROC_SETATTR(过程2) 306 24.6.4 NFSPROC_ROOT(过程3)[在NFS3中已经不用了] 306 24.6.5 NFSPROC_LOOKUP(过程4) 306 24.6.6 NFSPROC_READLINK(过程5) 307 24.6.7 NFSPROC_READ(过程6) 307 24.6.8 NFSPROC_WRITECACHE(过程7)[在NFS3中已经不用了] 307 24.6.9 NFSPROC_WRITE(过程8) 307 24.6.10 NFSPROC_CREATE(过程9) 307 24.6.11 NFSPROC_REMOVE(过程10) 307 24.6.12 NFSPROC_RENAME(过程11) 308 24.6.13 NFSPROC_LINK(过程12) 308 24.6.14 NFSPROC_SYMLINK(过程13) 308 24.6.15 NFSPROC_MKDIR(过程14) 308 24.6.16 NFSPROC_RMDIR(过程15) 308 24.6.17 NFSPROC_READDIR(过程16) 308 24.6.18 NFSPROC_STATFS(过程17) 309 24.7 装配协议 309 24.7.1 装配协议的常量定义 309 24.7.2 装配协议的类型定义 310 24.7.3 装配协议的数据结构 310 24.8 装配协议中的过程 311 24.9 装配操作的语义 312 24.9.1 MNTPROC_NULL(过程0) 312 24.9.2 MNTPROC_MNT(过程1) 312 24.9.3 MNTPROC_DUMP(过程2) 312 24.9.4 MNTPROC_UMNT(过程3) 312 24.9.5 MNTPROC_UMNRALL(过程4) 313 24.9.6 MNTPROC_EXPORT(过程5) 313 24.10 NFS和装配的鉴别 313 24.11 NFS版本3中的变化 314 24.12 小结 315 进一步的研究 316 习题 316 第25章 TELNET客户端(程序结构) 317 25.1 引言 317 25.2 概述 317 25.2.1 用户终端 317 25.2.2 命令和控制信息 318 25.2.3 终端、窗口和文件 318 25.2.4 对并发性的需要 318 25.2.5 TELNET客户端的线程模型 319 25.3 TELNET客户端的算法 319 25.4 Windows中的键盘I/0 320 25.5 键盘控制中使用的全局变量 321 25.6 初始化键盘线程 322 25.7 有限状态机的特点 325 25.8 ELNET数据流中内嵌的命令 325 25.9 选项协商 326 25.10 请求/提供的对称 326 25.11 TELNET字符定义 327 25.12 从服务器来的数据的有限状态机 328 25.13 状态之间的转换 329 25.14 实现有限状态机 330 25.15 紧凑的FSM表达 331 25.16 在运行时维持紧凑表示 332 25.17 实现紧凑表示 332 25.18 构造FSM转移矩阵 334 25.19 套接字输出的有限状态机 335 25.20 套接字输出FSM的定义 337 25.21 选项子协商的有限状态机 338 25.22 选项子协商FSM的定义 339 25.23 初始化FSM 340 25.24 TELNET客户端的参数 341 25.25 TELNET客户端的核心 341 25.26 TELNET的同步 345 25.27 处理严重的错误 346 25.28 实现主FSM 346 25.29 立即断开连接的过程 347 25.30 中止过程 348 25.31 小结 349 进一步的研究 349 习题 350 第26章 TELNET客户端(实现细节) 351 26.1 引言 351 26.2 有限状态机的动作过程 351 26.3 记录选项请求的类型 351 26.4 执行空操作 352 26.5 响应针对回显选项的WILL/WONT 353 26.6 发送响应 354 26.7 响应针对不被支持选项的WILL/WONT 355 26.8 响应针对No Go.Ahead选项的WILL/WONT 356 26.9 为一进制传输生成D0/DONT 357 26.10 响应针对不被支持选项的DO/DONT 358 26.11 响应针对传输_进制选项的DO/DONT 359 26.12 响应针对终端类型选项的DO/DONT 360 26.13 选项的子协商 362 26.14 发送终端类型信息 363 26.15 中止子协商 364 26.16 向服务器发送一个字符 365 26.17 在用户终端上显示传入的数据 366 26.18 将一块数据写到服务器中 369 26.19 与本地客户端的交互 370 26.20 对非法命令的响应 371 26.2l 抄写脚本到文件 371 26.22 抄写脚本的实现 372 26.23 抄写脚本的仞始化 372 26.24 收集脚本文件名的字符 373 26.25 打开脚本文件 374 26.26 中止抄写脚本 375 26.27 打印状态信息 377 26.28 小结 378 进一步的研究 378 习题 379 第27章 将服务器程序从UNIX移植到WINDOWS 380 27.1 引言 380 27.2 后台操作 380 27.3 共享描述符和继承 381 27.4 控制TTY 382 27.5 工作目录 382 27.6 建立文件和Umask 383 27.7 进程组 383 27.8 标准I/0描述符 384 27.9 服务器互斥 384 27.10 记录进程ID 385 27.11 等待一个子进程退出 385 27.12 使用系统日志设施 386 27.13 其他的不兼容 387 27.14 小结 388 进一步的研究 389 习题 389 第28章 客户一服务器系统中的死锁和饿死 390 28.1 引言 390 28.2 死锁的定义 390 28.3 死锁检测的难度 391 28.4 避免死锁 391 28.5 单个客户端和服务器问的死锁 392 28.6 在单个交互中避免死锁 392 28.7 一组客户端和单个服务器之间的饿死 393 28.8 忙连接和饿死 393 28.9 避免阻塞的操作 394 28.10 线程、连接和其他限制 394 28.11 客户端和服务器的循环 395 28.12 给依赖性建立文档 396 28.13 小结 397 进一步的研究 397 习题 397 附录A 套接字使用的函数和库例程 399 附录B Windows套接字描述符的操作 433 参考文献 436 译者序    很高兴有机会翻译DouglasE.Comer博士和DavidL.Stevens合作编写的《客户-服务器编程和应用(Windows套接字版)》一书。该书是((TCP/IP网络互连技术》系列丛书的第3卷,同列为第3卷的还有UNIX套接字版。 DouglasE.Comer博士在20世纪70年代就参与了TCP/IP和互联网的研究,在该领域具有丰富的经验,并撰写了大量的科研论文和教科书。他编写的这套丛书负有盛名,已被国内外的许多大学作为本科生和研究生的教材。    TCP/IP网络体系结构和协议栈已成为计算机网络事实上的标准,大量的计算机应用系统通过对TCP/IP协议栈的访问获得了网络通信的服务。在应用系统中如何设计客户机和服务器?如何实现通信中的并发过程?如何进行远程过程调用?如何设计分布式程序?对于这些经常遇到的问题,作者以其丰富的经验,借助例子深入浅出地在书中一一作了回答。同时作者也结合第1卷和第2卷的内容,说明了一些应用协议的实现方法,对读者深入领会这些协议的精髓提供了帮助。    本书内容丰富,概念清楚,讲解详细,有实例有验证,在每章后面又有足够的习题,可供读者巩固学习到的知识,增强实际应用能力。它既适合于高等院校计算机专业的学生,也可供从事在计算机网络上设计编写应用程序的开发人员作为参考书使用。正如作者所说,学生只有亲手使用教材后,才会欣赏它。我们相信该书会给读者带来帮助和成功的乐趣。    本书的翻译由张卫和王能负责,参加翻译工作的还有:朱逢霖、方奕、董梅、吴哲、王超和刘 。我们在尊重原著的基础上,力求准确、严谨地翻译本书,但由于翻译水平所限,难免有错误和欠妥之处,敬请读者批评指正。    译 者    华东师范大学计算机系    2004年3月于上海    序言    很荣幸能向读者介绍Dr.Douglas E.Comer的著作系列中的Windows套接字部分:TCP/IP网络互联技术。这个系列,从1987年开始编写,现在是读者学习网络协议族(Intemet协议族)的主要资料。该协议族使得不同厂商的计算机间通信成为可能。    我认为,与"不必深入了解因特网技术"的说法相反,这项创造性的工作是值得期待的。当媒体和企业使得大众对因特网充满了神秘的想像时,Dr.Comer清楚地解释了使得因特网成为可能的技术真相。    随着Intemet上Windows平台的日益流行,Dougs和DavidL.Stevens合著的这套书尤其重要。第三卷,客户-服务器编程与应用,教我们怎样设计和构建客户-服务器应用程序,而且更重要的是它还教我们怎样理解每个设计决策中所作的平衡和折衷。这对于那些正感受到开放系统和因特网的强大功能的无数Windows程序员来说是一项至关重要的技术。    因此,我邀请你参加到这个难忘的旅程中来,去理解网络互联技术的理论、设计以及实现方法的面貌和原因。    MarshallT.Rose    Theorist,Implementor,andAgentProvocateur    Del Mar,CalifOmia    很高兴能出版网络互连技术系列第3卷的Windows套接字版本。粗略地说,第1卷解释了什么是TCP/IP因特网。第2卷解释了TCP/IP软件如何工作。而第3卷则解释了应用软件如何在因特网上使用TCP/IP通信。它把重点放在客户-服务器机制上,并分析了分布式程序的客户端和服务器两部分的算法。本书给出了能说明每个设计思想的实现方法,讨论了包括应用层网关和管道在内的各种技术。另外,它回顾了几个标准应用协议,使用它们说明一些算法和实现技术。有关死锁和活锁的一章讨论了客户-服务器系统失败的几种表现,产生这些问题的原因,以及防止这些问题出现的技术。    我们编写这本书是为了满足那些为个人计算机构建软件的程序员的需求。针对PC机的软件来自微软公司。有两个流行的操作系统:Windows 95和WindowsNT。这两个系统都支持Win32编程接口,可以使用本书所讨论的Windows套接字应用程序接口(WindowsSocketAPl)。    本书描述了适合Windows95和WindowsNT的抽象概念。例如,并发性的讨论回顾了Windows下线程的抽象概念,这对于后面章节中并发服务器的讨论很重要。更重要的是,本书所给出的例子代码都已经在Windows95和WindowsNT下测试通过,并且可以从网上下载。要得到本书的电子版,可以在下面这个链接地址上找到:    http://www.cs.purdue.edu/homes/comer/books.html    或者在下面这个FTP目录下搜索文件名以TCPIP-vol3开头的文件:    ftp://ftp.cs.purdue,edu/pub/comer    本书采用了容易理解的编写结构。开头几章介绍了客户-服务器机制和应用程序用于网络通信的套接字接口。另外还描述了并发线程以及相关的创建线程的操作系统函数。后续的章节讨论了客户端和服务器的设计,并解释了各种可能的设计不是随机的产生的,而是遵循了一种可被理解的模式,它考虑了并发和传输的选择。例如,有一章讨论了一个非并发的服务器设计,它使用面向连接的传输(如TCP),而另一章讨论了一个类似的设计,它使用无连接的传输(如UDP)。    我们描述了每个设计如何适应各种可能的实现空间,而没有尝试去开发客户-服务器交互的抽象理论。我们强调对于程序员来说很重要的实际设计原则和技术。每种技术在一定的环境下都有优点,而且都已在工作软件中被使用。我们相信,读者理解了各个设计之间的概念性联系将有助于鉴别每种实现方法的优点和缺点,也会使对各种方法的选择变得更容易。    本书含有的一些例子程序显示了每个设计实际上是如何操作的。大多数的例子实现了标准的因特网应用协议。在各种情况下,我们尝试选择一个能传达单个设计思想的应用协议,避免在理解上过于复杂。因此,虽然很少有特别出色的例子程序,但是每个例子程序都说明了一个重要的概念。    后面的章节讨论了远程过程调用的概念,并描述如何利用它来构建分布式程序。它们把远程过程调用技术和客户-服务器模型联系起来,显示如何利用远程过程调用来创建客户和服务器程序。有关TELNET的章节展示了细枝末节如何支配了一个产品程序,以及即使是一个简单的面向字符的协议,其代码是如何的复杂。    本书很大部分的重点在并发处理。编写过并发程序的学生可能很熟悉我们所描述的许多概念,因为这些概念可应用于所有的并发程序,而不仅仅是网络应用程序。没编写过并发程序的学生可能会发现这些概念很难理解。    本书适合于高年级学生或研究生一个学期的网络入门课程。因为本书重点在如何使用网络互连技术,而不是网络互联是如何工作的,因此学生几乎不需要太多的网络背景知识就能理解这些内容。只要教师按合适的进度循序渐进,就没有什么特别的概念会令人感到太难。介绍操作系统基本概念或并发编程实际经验的基础课程,可提供最佳的背景材料。    学生只有亲手使用教材后,才会欣赏它。因此,任何课程都应该安排编程实践,强迫学生将其想法应用到实际程序中。大学本科生可以通过反复设计其他的应用协议来学习基本概念。研究生则应该编写强调某些细微技术的更加复杂的分布式程序(如第15章中的并发管理技术和第17章中的互连技术)。 .   在此要感谢很多人的帮助。Purdue大学因特网研究小组的成员们给本书原稿贡献了技术信息和建议。VinceRusso提供了技术帮助,JohnLin校对了本书。ChristineComer编辑了修订本,并改进了行文和一致性。    Douglas E.Comer    David L.Stevens
pdf
发布资源于 8 年前

Visual Studio 2012 Help Downloader 增强版 v2.0.0.1

软件名称: Visual Studio 2012 Help Downloader 原 名 称: Visual Studio Help Downloader 2012 原 官 网: https://vshd2012.codeplex.com/ 软件版本: 2.0.0.1 Beta 基础版本: 1.0.0.0 Beta 软件著作人:NickDal,Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/ServiceAPI/catalogs/visualstudio11/ 修改内容: 1、修改索引文件生成的目录结构,将多个xml文件合并到一个msha文件,并增加“path”等信息,从而与微软官网的一致; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容,并对该软件面世之前的“MSHAGen”下载的包做了兼容; 5、自动删除过期文件; 6、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 7、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 2013.05.26日更新内容 8、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; 修改依据: 1、依据是微软官方发布的VS2012Documentation的ISO中的“helpcontentsetup.msha”; 注意事项: 1、运行本软件必须安装“.NET Framework 4.5”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 3、本软件为了更好的服务大家,因而不兼容本软件的修改基础“Visual Studio Help Downloader 2012 v1.0.0.0 Beta”所下的包; 联系修改人: 如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。
zip
发布资源于 8 年前

Visual Studio 2010 Help Downloader 增强版 v2.0.0.2

软件名称: Visual Studio 2010 Help Downloader 原 名 称: Visual Studio 2010 Help Downloader 原 官 网: http://vshelpdownloader.codeplex.com/ (已失效) 软件版本: 2.0.0.2 Beta 基础版本: 1.0.0.3 Beta 软件著作人:Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/serviceapi/ 修改内容: 1、完整索引文件内容; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、将“xml”文件后缀更改为“html”; 5、兼容本软件的修改基础软件“Visual Studio 2010 Help Downloader v1.0.0.3 Beta”; 6、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容; 7、自动删除过期文件; 8、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 9、非英语“Help Library”的“Book”包含完整的“英语“Help Library”Book”,从而和vs2012一样; 10、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 2013.05.04日更新内容 11、在下载一门语言的“Help Library”后,不关闭软件再下其它非英语的“Help Library”不用重新“Load Books”; 12、去掉重复的“product”项,和直接用VS2010--“帮助”--“管理帮助设置”--“联机安装内容”里的“product”项完全一致; 13、为了能使VS2010--“帮助”--“管理帮助设置”--“从磁盘安装内容”能识别msha文件,特更改msha文件命名方式; 2013.05.26日更新内容 14、为了响应网友提出的利用本工具下载过慢的情况,特将下载的package的url汇总到“PackageList.txt”文件,可以利用迅雷下载后,再用本工具创建索引; 15、自动加载上次所选择下载的Book项。 修改依据: 1、依据是VS2010安装ISO中的“helpcontentsetup.msha”等信息; 2、微软官网“http://services.mtps.microsoft.com/serviceapi/”帮助信息。 注意事项: 1、运行本软件必须安装“.NET Framework 4”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 联系修改人: 如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。
zip
发布资源于 8 年前

Visual Studio 2010 Help Downloader 增强版 v2.0.0.1

软件名称: Visual Studio 2010 Help Downloader 原 名 称: Visual Studio 2010 Help Downloader 原 官 网: http://vshelpdownloader.codeplex.com/ (已失效) 软件版本: 2.0.0.1 Beta 基础版本: 1.0.0.3 Beta 软件著作人:Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/serviceapi/ 修改内容: 1、完整索引文件内容; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、将“xml”文件后缀更改为“html”; 5、兼容本软件的修改基础软件“Visual Studio 2010 Help Downloader v1.0.0.3 Beta”; 6、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容; 7、自动删除过期文件; 8、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 9、非英语“Help Library”的“Book”包含完整的“英语“Help Library”Book”,从而和vs2012一样; 10、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 2013.05.04日更新内容 11、在下载一门语言的“Help Library”后,不关闭软件再下其它非英语的“Help Library”不用重新“Load Books”; 12、去掉重复的“product”项,和直接用VS2010--“帮助”--“管理帮助设置”--“联机安装内容”里的“product”项完全一致; 13、为了能使VS2010--“帮助”--“管理帮助设置”--“从磁盘安装内容”能识别msha文件,特更改msha文件命名方式; 修改依据: 1、依据是VS2010安装ISO中的“helpcontentsetup.msha”等信息; 2、微软官网“http://services.mtps.microsoft.com/serviceapi/”帮助信息。 注意事项: 1、运行本软件必须安装“.NET Framework 4”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 联系修改人: 如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。
7z
发布资源于 8 年前

Visual Studio 2010 Help Downloader 增强版 v2.0.0.0

软件名称: Visual Studio 2010 Help Downloader 原 名 称: Visual Studio 2010 Help Downloader 原 官 网: http://vshelpdownloader.codeplex.com/ (已失效) 软件版本: 2.0.0.0 Beta 基础版本: 1.0.0.3 Beta 软件著作人:Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/serviceapi/ 修改内容: 1、完整索引文件内容; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、将“xml”文件后缀更改为“html”; 5、兼容本软件的修改基础软件“Visual Studio 2010 Help Downloader v1.0.0.3 Beta”; 6、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容; 7、自动删除过期文件; 8、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 9、非英语“Help Library”的“Book”包含完整的“英语“Help Library”Book”,从而和vs2012一样; 10、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 修改依据: 1、依据是VS2012安装ISO中的“helpcontentsetup.msha”等信息; 2、微软官网“http://services.mtps.microsoft.com/serviceapi/”帮助信息。 注意事项: 1、运行本软件必须安装“.NET Framework 4”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 3、在下载一门语言的“Help Library”后,不关闭软件再其它非英语的“Help Library”必须重新“Load Books”; 联系修改人: 如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。
7z
发布资源于 8 年前

Visual Studio 2012 Help Downloader 增强版 v2.0.0.0

软件名称: Visual Studio 2012 Help Downloader 原 名 称: Visual Studio Help Downloader 2012 原 官 网: https://vshd2012.codeplex.com/ 软件版本: 2.0.0.0 Beta 基础版本: 1.0.0.0 Beta 软件著作人:NickDal,Alexander Kozlenko 软件修改人:Cruise Young 数据来源: http://services.mtps.microsoft.com/ServiceAPI/catalogs/visualstudio11/ 修改内容: 1、修改索引文件生成的目录结构,将多个xml文件合并到一个msha文件,并增加“path”等信息,从而与微软官网的一致; 2、将不同语言的文件包分语言放置; 3、兼容将不同语言的Help Library放置到同一文件夹; 4、为方便用户,特对用迅雷等下载工具下载包的方式做了兼容,并对该软件面世之前的“MSHAGen”下载的包做了兼容; 5、自动删除过期文件; 6、自动删除下载错误的文件(由于是用文件长度校验,所以该条只保证99%,最好用解压软件的“测试压缩包”功能测试一下); 7、为和基础版本有所区别,特将修改版本号从2.0.0.0开始编号; 修改依据: 1、依据是微软官方发布的VS2012Documentation的ISO中的“helpcontentsetup.msha”; 注意事项: 1、运行本软件必须安装“.NET Framework 4.5”; 2、务必在下载一门语言的“Help Library”之前设置“存储目录”; 3、本软件为了更好的服务大家,因而不兼容本软件的修改基础“Visual Studio Help Downloader 2012 v1.0.0.0 Beta”所下的包; 联系修改人: 如有修改意见或建议,请到“http://blog.csdn.net/fksec/article/details/8796446”留言,本人将第一时间回复。 如不方便上“csdn”的朋友,可以email到“CruiseYoung@Outlook.com”。
7z
发布资源于 8 年前

“Visual Studio Help Downloader Plus” & “Visual Studio 2010 Help Downloader Plus”官网

“Visual Studio Help Downloader Plus”支持Visual Studio 2010/2012/2013/2015、以及未来版本的帮助文档的下载和更新
原创
4379阅读
18评论
0点赞
发布博客于 8 年前

数据库系统基础:高级篇(第5版)(讲述数据库系统原理的经典教材)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 数据库系统基础:高级篇(第5版)(讲述数据库系统原理的经典教材) 基本信息 原书名: Fundamentals of Database Systems (5th Edition) 原出版社: Addison Wesley 作者: (美)Ramez Elmasri    Shamkant B. Navathe    [作译者介绍] 译者: 邵佩英 徐俊刚 王文杰 丛书名: 图灵计算机科学丛书 出版社:人民邮电出版社 ISBN:9787115171603 上架时间:2007-12-21 出版日期:2008 年1月 开本:16开 页码:300 版次:5-1 内容简介   本书是一本讲述数据库系统原理的经典教材,重点强调了数据库的设计与实现。全书分为4部分。第一部分讲述事务处理的概念、并发控制技术和数据库恢复技术;第二部分讲述面向数据库的概念、语言、设计及对象-关系和扩展-关系系统;第三部分主要描述了数据库安全和客户-服务器体系结构;第四部分简要介绍了xml、数据挖掘和数据仓库等几种新兴技术。   本书是高等院校计算机及相关专业本科生、研究生数据库系统课程的理想教材,也是对相关技术人员非常有价值的参考书。 作译者   Ramez elmasri是世界知名的数据库学者。现任得克萨斯大学职灵顿分校计算机科学与工程系教授。1980年于斯坦福大学获得计算机科学硕士和博士学位。他的主要研究方向是数据库系统、时间数据库、概念建模、面向对象数据库、Wed建模和本体论数据库模型和语言、DBMS系统实现、检索技术等。   Shamkant B.Navathe 世界知名的数据库学者。现任佐治亚理工学院计算学院教授,自1990年开始他一直在该校任教。他的主要研究方向是工程设计、生物(特别是人类基因组)数据库、文档及文本数据库等新兴应用中的数据库建模。设计和集成,此外,他对知识表示、数据挖掘和知识发现等也非常感兴趣。 目录 封面 -15 封底 -14 扉页 -13 版权 -12 版权声明 -11 译者序 -10 前言 -8 目录 -5 第一部分 事务处理的概念 1 第1章 事务处理的概念与理论简介 2 1.1 事务处理简介 2 1.1.1 单用户系统与多用户系统 2 1.1.2 事务、读写操作和DBMS缓冲区 3 1.1.3 并发控制的必要性 4 1.1.4 恢复的必要性 6 1.2 事务和系统概念 6 1.2.1 事务状态及附加操作 7 1.2.2 系统日志 7 1.2.3 事务的提交点 8 1.3 事务的描述特性 8 1.4 描述基于可恢复性调度的特征 9 1.4.1 事务的调度(历史) 9 1.4.2 描述基于可恢复性调度的特征 10 1.5 描述基于可串行性调度的特征 11 1.5.1 串行、非串行和冲突-可串行化调度 11 1.5.2 测试调度的冲突可串行性 14 1.5.3 可串行性的用途 16 1.5.4 视图等价和视图可串行性 17 1.5.5 调度等价性的其他类型 18 1.6 SQL中的事务支持 18 小结 19 复习题 20 练习题 20 参考文献 21 第2章 并发控制技术 22 2.1 并发控制的两阶段加锁技术 22 2.1.1 锁类型与系统锁表 22 2.1.2 通过两阶段加锁保证可串行性 26 2.1.3 死锁和饥饿处理 27 2.2 基于时间戳顺序的并发控制 29 2.2.1 时间戳 29 2.2.2 时间戳排序算法 30 2.3 多版本并发控制技术 31 2.3.1 基于时间戳排序的多版本技术 31 2.3.2 使用验证锁的多版本两阶段加锁 32 2.4 确认(乐观的)并发控制技术 32 2.5 数据项粒度和多粒度加锁 33 2.5.1 加锁的粒度级别考虑 34 2.5.2 多粒度级别加锁 34 2.6 索引中使用加锁进行并发控制 36 2.7 并发控制的其他问题 37 2.7.1 插入、删除以及幻像记录 37 2.7.2 交互式事务 38 2.7.3 锁存器 38 小结 38 复习题 38 练习题 39 参考文献 39 第3章 数据库恢复技术 41 3.1 恢复概念 41 3.1.1 恢复概述和恢复算法的分类 41 3.1.2 磁盘块的高速缓存(缓冲) 42 3.1.3 先写日志、潜入/非潜入和强制/非强制 42 3.1.4 系统日志中的检查点和模糊检查点 43 3.1.5 事务回滚 44 3.2 基于延迟更新的恢复技术 45 3.2.1 单用户环境下使用延迟更新的恢复 46 3.2.2 多用户环境下并发执行的延迟更新 46 3.2.3 不影响数据库的事务活动 48 3.3 基于即时更新的恢复技术 48 3.3.1 单用户环境下基于即时更新的UNDO/REDO恢复 49 3.3.2 多用户环境下基于即时更新的UNDO/REDO恢复 49 3.4 镜像分页 49 3.5 ARIES恢复算法 50 3.6 多数据库系统中的恢复 53 3.7 数据库备份和灾难性故障恢复 53 小结 54 复习题 54 练习题 55 参考文献 57 第二部分 对象和对象-关系数据库 59 第4章 面向对象数据库的概念 60 4.1 面向对象的概念 61 4.2 对象标识、对象结构和类型构造器 63 4.2.1 对象标识 63 4.2.2 对象结构 63 4.2.3 类型构造器 66 4.3 操作、方法和持久性的封装 67 4.3.1 通过类操作指定对象行为 67 4.3.2 通过命名和可达性指定对象的持久性 69 4.4 类型、类层次和继承 70 4.4.1 类型层次和继承 70 4.4.2 对应于类型层次的外延约束 72 4.5 复杂对象 72 4.5.1 非结构化复杂对象和类型可扩展性 73 4.5.2 结构化复杂对象 73 4.6 其他面向对象的概念 74 4.6.1 多态性(操作符重载) 74 4.6.2 多重继承与选择性继承 75 4.6.3 版本和配置 75 小结 76 复习题 76 练习题 77 参考文献 77 第5章 对象数据库标准、语言和设计 78 5.1 ODMG对象模型概述 79 5.1.1 对象和文字 79 5.1.2 汇集对象的内置接口 83 5.1.3 原子(用户定义)对象 85 5.1.4 接口、类和继承 86 5.1.5 类外延、码和工厂对象 86 5.2 对象定义语言(ODL) 88 5.3 对象查询语言(OQL) 92 5.3.1 简单OQL查询、数据库入口点和迭代变量 92 5.3.2 查询结果和路径表达式 93 5.3.3 OQL的其他特性 95 5.4 C++语言绑定概述 98 5.5 对象数据库概念设计 99 5.5.1 ODB与RDB概念设计的区别 99 5.5.2 EER模式到ODB模式的映射 100 小结 101 复习题 102 练习题 102 参考文献 102 第6章 对象-关系和扩展-关系系统 104 6.1 SQL及其对象-关系特性概述 104 6.1.1 SQL标准及其组件 104 6.1.2 SQL-99中的对象-关系支持 105 6.1.3 SQL中一些新操作和特性 109 6.2 数据模型的演变和数据库技术的当前发展趋势 109 6.3 Informix Universal Server 110 6.3.1 可扩展数据类型 111 6.3.2 支持用户定义例程 112 6.3.3 支持继承 113 6.3.4 支持索引扩展 115 6.3.5 支持外部数据源 115 6.3.6 支持数据刀片应用编程接口 115 6.4 Oracle 8的对象-关系特性 118 6.4.1 Oracle对象-关系特性的一些示例 118 6.4.2 管理大对象以及其他存储特性 119 6.5 扩展类型系统的实现和相关问题 120 6.6 嵌套关系数据模型 120 小结 122 参考文献 122 第三部分 高级主题:安全性、高级建模和分布式 125 第7章 数据库的安全性 126 7.1 数据库安全性问题简介 126 7.1.1 安全性的类型 126 7.1.2 控制措施 127 7.1.3 数据库安全性和DBA 128 7.1.4 访问保护、用户账户和数据库审计 128 7.2 基于授予和收回权限的自主访问控制 129 7.2.1 自主性权限的类型 129 7.2.2 使用视图指定权限 130 7.2.3 收回权限 130 7.2.4 使用GRANT OPTION选项传播权限 130 7.2.5 一个示例 130 7.2.6 指定权限传播的限定 131 7.3 多级安全性的强制访问控制和基于角色访问控制 132 7.3.1 自主访问控制与强制访问控制的比较 134 7.3.2 基于角色的访问控制 134 7.3.3 XML访问控制 135 7.3.4 电子商务和Web的访问控制策略 135 7.4 统计数据库的安全性简介 136 7.5 流控制简介 137 7.6 加密和公钥构架 138 7.6.1 数据加密标准和高级加密标准 138 7.6.2 公钥加密 138 7.6.3 数字签名 139 7.7 保密性问题和保护 140 7.8 数据库安全性所面临的挑战 140 7.8.1 数据质量 140 7.8.2 知识产权 140 7.8.3 数据库生存能力 140 小结 141 复习题 141 练习题 142 参考文献 142 第8章 面向高级应用的增强数据模型 144 8.1 主动数据库概念和触发器 145 8.1.1 主动数据库和Oracle触发器的一般模型 145 8.1.2 主动数据库的设计和实现 148 8.1.3 STARBURST系统中使用语句级主动规则的示例 150 8.1.4 主动数据库的潜在应用 151 8.1.5 SQL-99中的触发器 152 8.2 时态数据库概念 152 8.2.1 时间表示法、日历和时间维 153 8.2.2 使用元组版本化在关系数据库中加入时间 154 8.2.3 使用属性版本化在面向对象数据库中加入时间 159 8.2.4 时态查询构造与TSQL2语言 160 8.2.5 时间序列数据 161 8.3 空间和多媒体数据库 162 8.3.1 空间数据库概念介绍 162 8.3.2 多媒体数据库概念介绍 163 8.4 演绎数据库介绍 164 8.4.1 演绎数据库概述 164 8.4.2 Prolog/Datalog表示法 165 8.4.3 Datalog表示法 166 8.4.4 子句形式与Horn子句 167 8.4.5 规则解释 168 8.4.6 Datalog程序及其安全性 169 8.4.7 关系操作的使用 171 8.4.8 非递归Datalog查询的估算 172 小结 173 复习题 174 练习题 174 参考文献 177 第9章 分布式数据库和客户-服务器体系结构 178 9.1 分布式数据库概念 178 9.1.1 并行与分布式技术 179 9.1.2 分布式数据库的优势 180 9.1.3 分布式数据库的附加功能 181 9.2 分布式数据库设计的数据分片、复制和分配技术 182 9.2.1 数据分片 182 9.2.2 数据复制和分配 184 9.2.3 分片、分配和复制示例 185 9.3 分布式数据库系统的类型 187 9.4 分布式数据库中的查询处理 189 9.4.1 分布式查询处理的数据传输代价 189 9.4.2 使用半连接的分布式查询处理 191 9.4.3 查询和更新分解 191 9.5 分布式数据库中并发控制和恢复概述 193 9.5.1 基于识别数据项副本的分布式并发控制 194 9.5.2 基于投票方法的分布式并发控制 195 9.5.3 分布式恢复 195 9.6 三层客户-服务器体系结构概述 195 9.7 Oracle分布式数据库 197 小结 199 复习题 199 练习题 200 参考文献 201 第四部分 新兴技术 203 第10章 使用PHP进行Web数据库程序设计 204 10.1 结构化、半结构化以及非结构化数据 204 10.2 一个简单的PHP示例 207 10.3 PHP基本特性概述 209 10.3.1 PHP变量、数据类型和程序设计结构 209 10.3.2 PHP数组 210 10.3.3 PHP函数 211 10.3.4 PHP服务器变量和表单 213 10.4 PHP数据库程序设计概述 214 10.4.1 连接数据库 214 10.4.2 从表单中汇集数据并插入记录 215 10.4.3 数据库表的检索查询 216 小结 217 复习题 217 练习题 217 实验练习题 217 参考文献 218 第11章 XML:可扩展标记语言 219 11.1 XML层次(树)数据模型 219 11.2 XML文档、DTD和XML模式 221 11.2.1 合式、有效XML文档及XML DTD 221 11.2.2 XML模式 222 11.3 XML文档和数据库 226 11.3.1 存储XML文档的方法 226 11.3.2 从关系数据库中抽取XML文档 227 11.3.3 断开环以实现从图到树的转换 230 11.3.4 从数据库抽取XML文档的其他步骤 230 11.4 XML查询 231 11.4.1 XPath:在XML中指路径表达式 231 11.4.2 XQuery:在XML中指定查询 232 小结 232 复习题 233 练习题 233 参考文献 233 第12章 数据挖掘概念 234 12.1 数据挖掘技术概述 234 12.1.1 数据挖掘和数据仓库 234 12.1.2 数据挖掘是知识发现过程的一部分 234 12.1.3 数据挖掘和知识发现的目标 235 12.1.4 数据挖掘期间知识发现的类型 236 12.2 关联规则 237 12.2.1 市场购物篮模型、支持度与可信度 237 12.2.2 Apriori算法 238 12.2.3 采样算法 239 12.2.4 频繁模式树算法 239 12.2.5 分区算法 241 12.2.6 其他类型的关联规则 242 12.2.7 关联规则的附加考虑 244 12.3 分类 244 12.4 聚类 246 12.5 其他数据挖掘问题的方法 248 12.5.1 序列模式的发现 248 12.5.2 时间序列中模式的发现 248 12.5.3 回归 249 12.5.4 神经网络 249 12.5.5 遗传算法 249 12.6 数据挖掘的应用 250 12.7 商业化数据挖掘工具 250 12.7.1 用户界面 251 12.7.2 应用编程接口 251 12.7.3 未来的方向 251 小结 252 复习题 252 练习题 252 参考文献 254 第13章 数据仓库和OLAP概述 255 13.1 概述、定义和术语 255 13.2 数据仓库的特性 256 13.3 数据仓库的数据模型 257 13.4 构建数据仓库 261 13.5 数据仓库的典型功能 263 13.6 数据仓库和视图 263 13.7 数据仓库中的难题和开放问题 264 13.7.1 数据仓库实现中的困难 264 13.7.2 数据仓库的开放问题 264 小结 265 复习题 265 参考文献 265 第14章 新兴的数据库技术及应用 266 14.1 移动数据库 266 14.1.1 移动计算体系结构 266 14.1.2 移动环境的特征 269 14.1.3 数据管理问题 270 14.1.4 应用:间歇同步数据库 270 14.2 多媒体数据库 271 14.2.1 多媒体数据和应用的特征 271 14.2.2 数据管理问题 272 14.2.3 开放研究问题 273 14.2.4 多媒体数据库应用 274 14.3 地理信息系统(GIS) 275 14.3.1 GIS系统组件 276 14.3.2 GIS中数据的特征 276 14.3.3 GIS概念数据模型 278 14.3.4 GIS的DBMS增强功能 278 14.3.5 GIS标准和操作 279 14.3.6 GIS应用和软件 281 14.3.7 GIS未来的工作 282 14.4 基因组数据管理 283 14.4.1 生物科学和遗传学 283 14.4.2 生物数据的特征 284 14.4.3 人类基因组项目和现有的生物数据库 286 参考文献 289 致谢 291 附录A ER模型的可选图形表示法 292 附录B 磁盘参数 294 附录C QBE语言概述 296 前言 近几年来,虽然许多出版社都影印和翻译了多种数据库系统方面的教材,我们也曾与中国人民大学张坤龙老师等一起翻译了《数据库系统基础》的第3版。凭我们多年来从事数据库课程教育的实践经验,认为Elmasri和Navathe的《数据库系统基础》是一本出色的、系统的、先进的、实用的数据库课程教科书。它清晰地阐述了数据库系统理论和设计问题;它的内容极为充实,广泛地涵盖了所有涉及数据库系统的设计、实现和管理所要求的诸多专题;它使用优秀的实例引入最新的现代数据库技术,全书贯穿两个例子:COMPANY和UNIVERSITY,使得读者能够使用同一个应用来比较不同的方法。当我们得到并初步阅读了Elmasri和Navathe的《数据库系统基础》第5版时,我们发现它对全书又作了完善性修改和更新,适时地反映了数据库技术和应用开发的最新发展趋势。而且它新增了一些应用实例使读者可以参与其中,而书中章节后面的练习题和新的实验题,又可以让读者获得基于现代数据库技术,如Oracle、MySQL和SQLServer,以及了解使用PHP和XML的Web数据库编程,获得建造数据库应用系统的实践经验。《数据库系统基础》正在成为从技术角度而不是从商业角度介绍数据库系统的权威教材。它既适合于研究生又适合于本科生使用,更为教师提供了足够丰富的数据库课程教育素材。当然,本书也是从事数据库技术研究和应用开发人员的良师益友。 这就是为什么我们还要花费大量精力和时间来翻译本书的原因和理由。 本书包括8个部分和5个附录。从第1部分开始,介绍了为更好地掌握数据库设计与实现所需的基本概念,以及数据库系统中用到的概念建模技术。第2部分到第4部分深入讲解了数据库系统基础中最重要的几个方面,包括:关系模型的概念、约束、语言、设计和编程,数据库设计理论和方法学,数据存储、索引、查询处理和物理设计。第5部分和第6部分是数据库系统的高级专题,包括:事务处理、并发控制、恢复技术,以及对象和对象-关系数据库,并给出了如何用SQL实现这些概念。第7和第8部分作为结束,对诸如数据库安全性,适应高级应用的增强数据模型,分布式数据库及三层客户/服务器据结构,以及XML、Web数据库、数据挖掘、数据仓库、移动数据库、多媒体数据库、地理信息系统、基因数据管理等新兴技术作了介绍。附录A给出许多可选用的显示ER或EER模式的图形记号;附录B给出磁盘的一些重要物理参数;附录C给出最早的图形化查询语言之一:示例查询(Query-By-Example,QBE)语言的概述;附录D和E介绍基于层次数据模型和网状数据模型的传统数据库系统(http://www.aw.com/elmasri)。 本书分为上、下两册:上册包括第1~4部分及附录,建议可以作为“数据库导论课程”的教科书;下册包括第5~8部分及附录,建议可以作为“数据库高级课程”的教科书。当然,正如在本书的前言中所指出的那样,讲授一门数据库课程有许多种不同的方式,各位教师可根据课程侧重点的不同,以及根据学生的背景和需求组织教学内容。在前言中展示的各章节间的主要依赖关系图可以作为参考,各主题可以按不同顺序进行讲授。可以跳过那些选择性的章节,也可以添加书中其余部分的章节以便充实课程。 本书的翻译和审校由中国科学院研究生院信息学院邵佩英教授、徐俊刚副教授、王文杰副教授共同组织完成。参加翻译的还有(按姓氏笔画)裴莹、陈明、丁杰、林欢欢、张坤、张颖、周良、余清等。全书由邵佩英教授负责统一定稿。由于水平有限,翻译不当之处,恳请读者批评指正。 本书翻译过程中曾得到中国科学院高能物理所李伯民研究员的关心和指导,得到我们的研究生王辉、祝孔强、阚劲松的帮助,在此向他们表示衷心的感谢。我们还应感谢人民邮电出版社杨海玲等编辑们,是他们的远见和支持,使得本书能够尽快与读者见面。 译者 中国科学院研究生院信息学院 2007年5月 本书介绍了在设计、使用和实现数据库系统及应用时所需的基本概念。书中重点强调了数据库建模与设计的基础、数据库管理系统提供的语言和工具,以及系统实现技术。本书旨在作为本科生或研究生的数据库系统课程(一个或两个学期)的教材或教学参考书。本书假定读者已熟悉基本的程序设计和数据结构的概念,并对基本的计算机组成知识有所了解。 本书第一部分先提供了一个引言,并介绍了最基本的概念和术语以及数据库概念建模原则。第二部分到第四部分深入讲解了数据库基础中最重要的几个方面。 以下是第5版的主要特色: ●本书内容的组织遵循独立性和灵活性原则,可以根据个人需要进行取舍。 ●新增加了一章来介绍SQL程序设计技术,这种技术用于使用PHP(一种流行的脚本语言)的Web应用。 ●对每章末尾的习题集进行了更新和扩充。 ●提供了一个辅助网站(http://www.aw.com/elmasri),其中包括可以装载到各种类型关系数据库中的数据,以便学生更好地进行实验题。 ●提供了一个简单的关系代数和关系演算解释程序。 ●每章末尾的实验题(第3章~第12章)涵盖了该章的主题,这些主题是与本书辅助网站上的数据库相关联的;这些实验题一开始是介绍性的,在后续的章节中则将引入新的资料对其进行扩展。 ●对补充资料进行了重要的修订,包括为教师和学生而准备的一组资料,例如PowerPoint幻灯片和书中的图表,以及带有答案的教师指导手册。 ■与第4版的主要区别 第5版对全书内容的组织结构改动较少,主要改动集中于对单独某一章的改进上。主要改动如下: ●增加了新的实验题,并对每章(第一部分到第三部分)末尾的练习题做了改进。 ●给出了说明规范化和数据库设计算法的新示例(第10章和第11章)。 ●给出了一种新设计,这种设计增强了书中插图的视觉效果,并对各种属性和实体类型使用了特殊字体,从而增强了可读性和可理解性。 ■第5版的内容 第一部分描述了为更好地掌握数据库设计与实现所需的基本概念,以及数据库系统中用到的概念建模技术。第1章和第2章介绍了数据库、数据库的典型用户以及DBMS(数据库管理系统)的概念、术语和体系结构。第3章介绍了实体—联系(Entity-Relationship, ER)模型和ER图的概念,并用它来说明概念数据库设计。第4章重点讨论数据抽象和语义数据建模的概念,并且扩展ER模型以便把这些概念融入到模型中,从而产生增强的实体—联系(Enhanced ER, EER)数据模型和EER图。第4章提出的概念包括子类、特化、泛化和并类型(类别)。在第3章和第4章中还介绍了UML类图表示法。 第二部分描述了关系数据模型和关系型DBMS。第5章描述了基本关系模型、完整性约束和更新操作;第6章描述了关系代数操作,并介绍了关系演算;第7章讨论了通过ER到关系的映射和EER到关系的映射进行关系数据库设计;第8章详细介绍了SQL语言,包括SQL标准,大多数关系型系统中都实现了这一标准;第9章介绍了有关SQL程序设计的主题,如SQLJ、JDBC和SQL/CLI。 第三部分讨论了一些与数据库设计有关的主题。第10章和第11章涵盖了通过规范化进行关系数据库设计而开发的形式化体系、理论和算法。这些内容包括函数依赖和其他类型的依赖,以及各种关系范式等;第10章对规范化提供了循序渐进的直观的讲解;第11章则给出了带有示例的关系设计算法,并定义了一些其他类型的依赖,如多值依赖和连接依赖等;第12章概要介绍了使用UML完成中型和大型应用数据库设计过程中的各个阶段。 第四部分从描述数据库系统中使用的物理文件结构和存取方法开始。第13章描述了磁盘上组织记录文件的主要方法,包括静态和动态的散列技术;第14章描述了文件的索引技术,包括B树和B+树数据结构和网格文件;第15章介绍了查询处理与优化的基本知识;第16章讨论了物理数据库的设计与调优。 附录A给出了展示基本的ER或EER模式时还可选用的其他一些图示表示法。如果教师认为必要,可以用这些表示法替代书中所用的表示法。附录B给出了关于磁盘的一些重要的物理参数。附录C概述了QBE图形查询语言。附录D和附录E(在本书的辅助网站http://www.aw.com/elmasris 中也可找到)讨论了基于分层和网状数据模型的遗留数据库系统。这些已经使用了30多年的数据库系统是现今许多商业数据库应用和事务处理系统的基础,要完全取代它们还需要数十年。我们认为,对于学习数据库管理的学生来说,了解这些存在已久的方法也是很重要的。 ■如何使用本书 讲授数据库课程有许多种不同的方式。本书的第一部分到第四部分中的各章可用于讲授数据库系统的导论课程,各位教师可以按照本书给出的顺序,也可以按照自己喜欢的顺序组织讲授。根据课程侧重点的不同,教师可以跳过那些选择性的章节,也可以添加书中其余部分的章节以充实授课内容。在每章开篇的最后列出了对某个特定的主题不需要详细讨论的情况下可以跳过的小节。我们建议作为数据库导论课程的教材,可以选用第1章到第14章的内容,并根据学生的背景和需求,从本书中的其他章节选择一些内容添加进来。如果要强调系统实现技术,那么可以包括本书第四部分和本书姊妹篇《数据库系统基础:高级篇》的第一部分的内容。 第3章和第4章涵盖了如何使用ER模型和EER模型进行概念建模,这部分内容对于较好地从概念上理解数据库是很重要的。但是,这两章内容可以有选择地讲授,或者在课程的后期讲授,如果课程的重点是数据库管理系统(DBMS)的实现,甚至可以跳过这两章。第13章和第14章介绍的是文件组织和索引,这两章内容同样可以在课程的前期或后期讲授,如果课程的重点是数据库模型和语言,也可以跳过这两章。对于学习过文件组织课程的学生,可以把这几章的部分内容作为课后阅读材料,或者布置一些练习题来复习这些概念。 一个有完整生命周期的数据库设计与实现的项目,要涵盖概念设计(第3章和第4章)、数据模型映射(第7章)、规范化(第10章)和SQL实现(第9章)。同时还需要有关特定的程序设计语言和RDBMS的附加文档。 本书在编写时就考虑到了其主题可以按不同顺序进行讲授。下图展示了各章之间的主要依赖关系 。由图可知,在前面引导性的两章之后,可以从多个不同的主题开始讲授。这个图可能看起来有些复杂,但它显现了非常重要的一点是,如果按照如图所示的顺序进行讲授,章节间的依赖关系就不会丢失。如果教师想以自己选择的顺序来讲授课程,那么可以将此图作为参考。 如果将本书作为一个学期课程的教材,可以将某些章节留作课外阅读资料。第四部分、《数据库系统基础:高级篇》的第三部分和第四部分可以考虑作为这样的阅读资料。如果将本书作为上、下两个学期的教材,第一学期的课程“数据库设计/系统导论”,面向大二、大三或大四的学生,可以涵盖第1章~第14章的大部分内容。第二学期的课程“数据库设计与实现技术”,面向大四学生或一年级研究生,则可涵盖《数据库系统基础:高级篇》中的内容。在以上两个学期中可以有选择地选用《数据库系统基础:高级篇》第三部分和第四部分中的某些章节。除本书之外,如果学生所在学院还有其他介绍DBMS的资料,也可以作为本书的附加资料进行学习。 ■补充资料 本书的所有使用者均可获得辅助资料。 ●在网站http://www.aw.com/cssupport上提供了PowerPoint讲稿和图。 ●在本书辅助网站(http://www.aw.com/elmasri)上提供了第5版新增的实验手册。实验手册包括流行的数据建模工具、关系代数和关系演算解释程序,以及本书中使用的两个通用数据库管理系统实现的示例。本书每章末尾的实验题也与实验手册相关。 ●得到确认的教师可以获得习题答案。请访问Addison-Wesley 的教师资源中心(http://www.aw.com/irc)、联系当地的Addison-Wesley销售代表或者发送电子邮件到computing@aw.com以获取如何获得习题答案的信息。 ■致谢 非常荣幸能够向这么多人致谢,感谢他们对本书的帮助与贡献。首先要感谢本书的编缉Matt Goldstein及Katherine Harutunian。特别要感谢第5版的首席编辑Matt Goldstein所付出的努力及帮助。我们还要感谢Addison-Wesley的那些为第5版做出贡献的人们:Michelle Brown、Gillian Hall、Patty Mahtani、Maite Suarez-Rivas、Bethany Tidd和Joyce Cosentino Wells。我们感谢Gillian Hall完成了本书的内部设计,包括版式、字体和艺术设计方面非常细致的工作,正是她周全的考虑,我们才有了如此美观的书。 我们感谢为本书作出贡献的审稿人: Hani Abu-Salem,迪保罗大学 Jamal R. Alsabbagh, 大河谷州立大学 Ramzi Bualuan,圣母大学 Soon Chung,赖特州立大学 Sumali Conlon,密西西比大学 Hasan Davulcu,亚利桑那州立大学 James Geller,新泽西理工学院 Le Gruenwald,俄克拉何马大学 Latifur Khan,得克萨斯大学达拉斯分校 Herman Lam,佛罗里达大学 Byung S.Lee,佛蒙特大学 Donald Sanderson,东田纳西州立大学 Jamil Saquer,西南密苏里州立大学 Costas Tsatsoulis,堪萨斯大学 Jack C. Wileden,马萨诸塞大学阿默斯特分校 我们感谢Raj Sunderraman与我们一起完成了本书的实验部分并设计了实验题。旧金山大学的Salman Azar也贡献了部分习题。 Sham Navathe要向他佐治亚理工学院的学生们致谢:Saurav Sahay、Liora Sahar、Fariborz Farahmand、Nalini Polavarapu、Wanxia Xie、Ying Liu以及Gaurav Bhatia。Ed Omiecinski也曾提供了有价值的建议和修正。 我们还要再次感谢曾经审阅本书以及为本书前几版做出过贡献的人们。 ●第1版。Alan Apt(编缉)、Don Batory、Scott Downing、Dennis Heimbinger、Julia Hodges、Yannis Ioannidis、Jim Larson、Dennis McLeod、Per-Ake Larson、Rahul Patel、Nicholas Roussopoulos、David Stemple、Michael Stonebraker、Frank Tompa和Kyu-Young Whang。 ●第2版。Dan Joraanstad(编缉)、Rafi Ahmed、Antonio Albano、David Beech、Jose Blakeley、Panos Chrysanthis、Suzanne Dietrich、Vic Ghorpadey、Goets Graefe、Eric Hanson、Junguk L.Kim、Roger King、Vram Kouramajian、Vijay Kumar、John Lowther、Sanjay Manchanda、Toshimi Minoura、Inderpal Mumick、Ed Omiecinski、Girish Pathak、Raghu Ramakrishnan、Ed Robertson、Eugene Sheng、David Stotts、Marianne Winslett以及Stan Zdonick。 ●第3版。Maite Suarez-Rivas和Katherine Harutunian(编缉)、Suzanne Dietrich、Ed Omiecinski、Rafi Ahmed、Francois Bancilhon、Jose Blakeley、Rick Cattell、Ann Chervenak、David W.Embley、Henry A. Etlinger、Leonidas Fegaras、Dan Forsyth、Farshad Fotouhi、Michael Franklin、Sreejith Gopinath、Goetz Craefe、Richard Hull、Sushil Jajodia、Ramesh K. Karne、Harish Kotbagi、Vijay Kumar、Tarcisio Lima、Ramon A. Mata-Toledo、Jack McCaw、Dennis McLeod、Rokia Missaoui、Magdi Morsi、M.Narayanaswamy、Carlos Ordonez、Joan Peckham、Betty Salzberg、Ming-Chien Shan、Junping Sun、Rajshekhar Sunderraman、Aravindan Veerasamy以及Emilia E.Villareal。 ●第4版。Maite Suarez-Rivas、Katherine Harutunian、Daniel Rausch以及Juliet Silveri(编缉);、Phil Bernhard、Zhengxin Chen、Jan Chomicki、Hakan Ferhatosmanoglu、Len Fisk、William Hankley、Ali R.Hurson、Vijay Kumar、Peretz Shoval、Jason T.L. Wang(审稿人);;Ed Omiecinski(协助完成了第27章);得克萨斯大学阿灵顿分校的贡献者有Hyoil Han、Babak Hojabri、Jack Fu、Charley Li、Ande Swathi以及Steven Wu;佐治亚理工学院的贡献者有Dan Forsythe、Weimin Feng、Angshuman Guin、Abrar Ul-Haque、Bin Liu、Ying Liu、Wanxia Xie以及Waigen Yee。 最后,我们真切地感谢我们的家人所给予的支持、鼓励和耐心。 R.E. S.B.N.
zip
发布资源于 8 年前

数据库系统基础:初级篇(第5版)(讲述数据库系统原理的经典教材)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 数据库系统基础:初级篇(第5版)(讲述数据库系统原理的经典教材) 基本信息 原书名: Fundamentals of Database Systems (5th Edition) 原出版社: Addison Wesl 作者: (美)Ramez Elmasri    Shamkant B.Navathe 译者: 邵佩英 徐俊刚 王文杰 丛书名: 图灵计算机科学丛书 出版社:人民邮电出版社 ISBN:9787115164087 上架时间:2007-9-24 出版日期:2007 年10月 开本:16开 页码:409 版次:5-1 内容简介   本书是一本讲述数据库系统原理的教材,重点强调数据库建模与设计的基础、数据库管理系统提供的语言和工具以及系统实现技术。全书共分4个部分,第一部分介绍最基本的概念、术语及建模原则,第二部分描述了关系数据模型和关系型DBMS,第三部分讨论数据库设计,第四部分主要描述数据库系统中使用的物理文件结构和存取方法。书中涉及的内容非常广泛,包括DBMS的概念、术语和体系结构,ER模型和ER图,数据抽象和语义数据建模,UML类图表示法,基本关系模型,关系代数和关系演算,SQL,规范化,磁盘上组织记录文件的主要方法,文件的索引技术,查询处理与优化,以及物理数据库的设计与调优。   本书是高等院校计算机及相关专业本科生数据库系统课程的理想教材,也是对相关技术人员非常有价值的参考书。 作译者   Ramez elmasri是世界知名的数据库学者。现任得克萨斯大学职灵顿分校计算机科学与工程系教授。1980年于斯坦福大学获得计算机科学硕士和博士学位。他的主要研究方向是数据库系统、时间数据库、概念建模、面向对象数据库、Wed建模和本体论数据库模型和语言、DBMS系统实现、检索技术等。   Shamkant B.Navathe 世界知名的数据库学者。现任佐治亚理工学院计算学院教授,自1990年开始他一直在该校任教。他的主要研究方向是工程设计、生物(特别是人类基因组)数据库、文档及文本数据库等新兴应用中的数据库建模。设计和集成,此外,他对知识表示、数据挖掘和知识发现等也非常感兴趣。 目录 封面 -17 封底 -16 扉页 -15 版权 -14 译者序 -13 前言 -11 目录 -6 第一部分 引言与概念建模 1 第1章 数据库与数据库用户 2 1.1 引言 2 1.2 一个示例 4 1.3 数据库方法的特征 6 1.3.1 数据库系统的自描述性 7 1.3.2 程序与数据分离和数据抽象 7 1.3.3 支持数据的多视图 9 1.3.4 数据共享和多用户事务处理 9 1.4 幕前角色 10 1.4.1 数据库管理员 10 1.4.2 数据库设计者 10 1.4.3 最终用户 10 1.4.4 系统分析员和应用程序员(软件工程师) 11 1.5 幕后工作者 11 1.6 使用DBMS方法的优势 12 1.6.1 控制冗余 12 1.6.2 限制非授权的访问 12 1.6.3 为程序对象提供持久性存储 13 1.6.4 提供高效查询处理的存储结构 13 1.6.5 提供备份与恢复 14 1.6.6 提供多用户界面 14 1.6.7 表示数据间复杂联系 14 1.6.8 确保完整性约束 14 1.6.9 允许使用规则进行推理和动作 15 1.6.10 使用数据库方法的其他含义 15 1.7 数据库应用简史 16 1.7.1 使用分层和网状系统的早期数据库应用 16 1.7.2 关系数据库提供应用灵活性 16 1.7.3 面向对象的应用和对更复杂数据库的需求 16 1.7.4 在Web上交换数据实现电子商务 17 1.7.5 为新应用扩展数据库功能 17 1.7.6 数据库与信息检索 17 1.8 什么时候不应该使用DBMS 18 1.9 小结 18 复习题 18 练习题 19 选读文献 19 第2章 数据库系统的概念和体系结构 20 2.1 数据模型、模式和实例 20 2.1.1 数据模型的分类 21 2.1.2 模式、实例和数据库状态 21 2.2 三层模式体系结构和数据独立性 23 2.2.1 三层模式体系结构 23 2.2.2 数据独立性 24 2.3 数据库语言和界面 25 2.3.1 DBMS的语言 25 2.3.2 DBMS界面 26 2.4 数据库系统的环境 27 2.4.1 DBMS的组成模块 27 2.4.2 数据库系统实用工具 29 2.4.3 工具、应用环境和通信软件 29 2.5 DBMS的集中式和客户/服务器体系结构 30 2.5.1 集中式DBMS体系结构 30 2.5.2 基本的客户/服务器体系结构 31 2.5.3 DBMS两层客户/服务器体系结构 32 2.5.4 面向Web应用的三层和n层体系结构 32 2.6 数据库管理系统的分类 33 2.7 小结 35 复习题 36 练习题 36 选读文献 37 第3章 使用实体-联系(ER)模型的数据建模 38 3.1 使用高级概念数据模型进行数据库设计 39 3.2 一个数据库应用示例 40 3.3 实体类型、实体集、属性和码 40 3.3.1 实体和属性 41 3.3.2 实体类型、实体集、码和值集 43 3.3.3 COMPANY数据库的初步概念设计 45 3.4 联系类型、联系集、角色和结构约束 46 3.4.1 联系类型、联系集和联系实例 47 3.4.2 联系度、角色名称和递归联系 48 3.4.3 联系类型的约束 49 3.4.4 联系类型的属性 50 3.5 弱实体类型 51 3.6 COMPANY数据库ER设计的改进 52 3.7 ER图、命名约定和设计问题 53 3.7.1 ER图表示法小结 53 3.7.2 模式结构的正确命名 53 3.7.3 ER概念设计的设计选择 54 3.7.4 ER图的候选表示法 55 3.8 其他表示法示例:UML类图 55 3.9 高于2度的联系类型 57 3.9.1 对二元和三元(或高度)联系的选择 57 3.9.2 三元(或高度)联系上的约束 60 3.10 小结 60 复习题 61 练习题 61 实验题 66 选读文献 66 第4章 增强的实体-联系(EER)建模 68 4.1 子类、超类和继承 68 4.2 特化和泛化 69 4.2.1 特化 69 4.2.2 泛化 71 4.3 特化和泛化层次的约束和特征 71 4.3.1 特化与泛化的约束 72 4.3.2 特化和泛化的层次和格 73 4.3.3 利用特化与泛化改进概念模型 75 4.4 采用类别的并类型建模 76 4.5 示例UNIVERSITY的EER模式设计选择和形式化定义 78 4.5.1 UNIVERSITY数据库示例 78 4.5.2 特化/泛化的设计选择 79 *4.5.3 EER模型概念的形式化定义 80 4.6 其他表示法的示例:UML类图中的特化/泛化 81 4.7 数据抽象、知识表示和本体论概念 82 4.7.1 分类和实例化 82 4.7.2 标识 83 4.7.3 特化和泛化 83 4.7.4 聚集和关联 83 4.7.5 本体论和语义网 85 4.8 小结 86 复习题 86 练习题 86 实验题 91 选读文献 93 第二部分 关系模型:概念、约束、语言、设计和编程 95 第5章 关系数据模型和关系数据库约束 96 5.1 关系模型概念 96 5.1.1 域、属性、元组和关系 97 5.1.2 关系的特性 99 5.1.3 关系模型表示法 101 5.2 关系模型约束和关系数据库模式 101 5.2.1 域约束 102 5.2.2 码约束和NULL值约束 102 5.2.3 关系数据库和关系数据库模式 103 5.2.4 实体完整性、参照完整性和外码 104 5.2.5 其他类型的约束 106 5.3 更新操作、事务和处理违例约束 107 5.3.1 插入操作 107 5.3.2 删除操作 108 5.3.3 更新操作 109 5.3.4 事务的概念 109 5.4 小结 109 复习题 110 练习题 110 选读文献 113 第6章 关系代数和关系演算 114 6.1 一元关系操作:SELECT和PROJECT 115 6.1.1 SELECT操作 115 6.1.2 PROJECT操作 116 6.1.3 操作序列和RENAME操作 117 6.2 基于集合论的关系代数操作 118 6.2.1 UNION、INTERSECTION和MINUS操作 118 6.2.2 笛卡儿积(或叉积)操作 120 6.3 二元关系操作:JOIN和DIVISION 121 6.3.1 JOIN操作 121 6.3.2 JOIN的变体EQUIJOIN和NATURAL JOIN 122 6.3.3 关系代数操作的完备集 124 6.3.4 DIVISION操作 124 6.3.5 查询树表示法 126 6.4 其他关系操作 127 6.4.1 广义投影 127 6.4.2 聚集函数和分组 127 6.4.3 递归闭包操作 128 6.4.4 OUTER JOIN操作 130 6.4.5 OUTER UNION操作 130 6.5 关系代数中的查询示例 131 6.6 元组关系演算 133 6.6.1 元组变量和值域关系 133 6.6.2 元组关系演算中的表达式与公式 134 6.6.3 存在量词与全称量词 134 6.6.4 使用存在量词的查询示例 135 6.6.5 查询图表示法 136 6.6.6 全称量词与存在量词的转换 137 6.6.7 使用全称量词 137 6.6.8 安全表达式 138 6.7 域关系演算 139 6.8 小结 140 复习题 141 练习题 141 实验题 144 选读文献 146 第7章 使用ER到关系的映射和EER到关系的映射进行关系数据库设计 147 7.1 使用ER到关系的映射进行关系数据库设计 147 7.1.1 ER到关系的映射算法 147 7.1.2 ER模型构造映射的讨论和总结 151 7.2 EER模型构造到关系的映射 152 7.2.1 特化或泛化的映射 153 7.2.2 共享子类(多重继承)的映射 154 7.2.3 类别的映射(并类型) 155 7.3 小结 156 复习题 156 练习题 156 实验题 157 选读文献 157 第8章 SQL-99:模式定义、约束、查询和视图 158 8.1 SQL数据定义和数据类型 159 8.1.1 SQL2中模式和目录的概念 159 8.1.2 SQL的CREATE TABLE命令 160 8.1.3 SQL中的属性数据类型和域 161 8.2 在SQL中定义约束 162 8.2.1 指定属性约束和属性默认值 162 8.2.2 指定码和参照完整性约束 163 8.2.3 为约束命名 164 8.2.4 使用CHECK指定元组约束 164 8.3 SQL中的模式更改语句 165 8.3.1 DROP命令 165 8.3.2 ALTER命令 165 8.4 SQL中的基本查询 166 8.4.1 基本SQL查询的SELECT-FROM- WHERE结构 166 8.4.2 多义属性名、别名和元组变量 168 8.4.3 未指定WHERE子句的查询语句和星号(*)的用法 170 8.4.4 SQL中作为集合的表 170 8.4.5 子串样式匹配和算术操作符 172 8.4.6 查询结果排序 173 8.5 更复杂的SQL查询 173 8.5.1 包含NULL和三值逻辑的比较 173 8.5.2 嵌套查询、元组与集/多集比较 174 8.5.3 关联嵌套查询 176 8.5.4 SQL中的EXISTS和UNIQUE函数 177 8.5.5 SQL中的显式集合和属性重新命名 178 8.5.6 SQL中的连接表和外连接 179 8.5.7 SQL中的聚集函数 180 8.5.8 分组:GROUP BY和HAVING子句 181 8.5.9 SQL查询的讨论与小结 183 8.6 SQL中的插入、删除和更新语句 184 8.6.1 INSERT命令 184 8.6.2 DELETE命令 185 8.6.3 UPDATE命令 186 8.7 指定约束作为断言和触发器 186 8.8 SQL中的视图(虚表) 187 8.8.1 SQL中视图的概念 187 8.8.2 SQL中的视图规范 188 8.8.3 视图的实现和更新 188 8.9 SQL的其他特性 190 8.10 小结 190 复习题 192 练习题 192 实验题 194 选读文献 195 第9章 SQL程序设计技术简介 197 9.1 数据库程序设计:问题与技术 197 9.1.1 数据库程序设计方法 198 9.1.2 阻抗失配 198 9.1.3 数据库程序设计中的典型交互序列 199 9.2 嵌入式SQL、动态SQL和SQLJ 199 9.2.1 用嵌入式SQL检索单个元组 199 9.2.2 在嵌入式SQL中使用游标检索多个元组 202 9.2.3 使用动态SQL在运行时指定查询 203 9.2.4 SQLJ:Java中嵌入SQL命令 204 9.2.5 SQLJ中使用迭代器检索多个元组 206 9.3 使用函数调用的数据库程序设计:SQL/CLI和JDBC 207 9.3.1 以C语言为宿主语言,使用SQL/CLI进行数据库程序设计 208 9.3.2 JDBC:面向Java程序设计的SQL函数调用 211 9.4 数据库存储过程与SQL/PSM 214 9.4.1 数据库存储过程和函数 214 9.4.2 SQL/PSM: 扩展SQL以指定持久存储模块 215 9.5 小结 216 复习题 216 练习题 216 实验题 217 选读文献 218 第三部分 数据库设计理论和方法学 219 第10章 函数依赖和关系数据库的规范化 220 10.1 关系模式的非形式化设计准则 221 10.1.1 给予关系中的属性以清晰的语义 221 10.1.2 元组中的冗余信息和更新异常 223 10.1.3 元组中的NULL值 225 10.1.4 生成寄生元组 226 10.1.5 总结和讨论设计准则 227 10.2 函数依赖 228 10.2.1 函数依赖的定义 228 10.2.2 函数依赖的推理规则 229 10.2.3 函数依赖集的等价 232 10.2.4 最小函数依赖集 232 10.3 基于主码的范式 233 10.3.1 关系的规范化 233 10.3.2 范式的实际使用 234 10.3.3 码的定义和参与码的属性 234 10.3.4 第一范式 235 10.3.5 第二范式 238 10.3.6 第三范式 239 10.4 第二范式和第三范式的通用定义 239 10.4.1 第二范式的通用定义 240 10.4.2 第三范式的通用定义 241 10.4.3 解释第三范式的通用定义 241 10.5 Boyce-Codd范式 241 10.6 小结 243 复习题 244 练习题 244 实验题 247 选读文献 248 第11章 关系数据库设计算法和其他依赖 249 11.1 关系分解的性质 250 11.1.1 关系分解和范式的不足 250 11.1.2 分解的依赖保持性质 250 11.1.3 分解的非加性(无损)连接性质 251 11.1.4 检验二元分解的非加性连接性质 253 11.1.5 连续非加性连接分解 254 11.2 关系数据库模式设计算法 254 11.2.1 依赖保持分解成3NF模式 254 11.2.2 非加性连接分解成BCNF模式 255 11.2.3 依赖保持和非加性(无损)连接分解成3NF模式 256 11.2.4 NULL值和悬挂元组问题 258 11.2.5 规范化算法的讨论 258 11.3 多值依赖和第四范式 261 11.3.1 多值依赖的形式化定义 261 11.3.2 函数依赖和多值依赖的推理规则 263 11.3.3 第四范式 263 11.3.4 非加性连接分解成4NF关系 264 11.4 连接依赖和第五范式 265 11.5 包含依赖 266 11.6 其他依赖和范式 267 11.6.1 模板依赖 267 11.6.2 域-码范式 268 11.7 小结 268 复习题 268 练习题 269 实验题 270 选读文献 270 第12章 实际数据库设计方法学和UML图的使用 271 12.1 组织中信息系统的角色 271 12.1.1 使用数据库系统的组织环境 271 12.1.2 信息系统的生命周期 273 12.1.3 数据库应用系统的生命周期 274 12.2 数据库设计与实现过程 275 12.2.1 第1阶段:需求汇集和分析 276 12.2.2 第2阶段:概念数据库设计 277 12.2.3 第3阶段:DBMS的选择 284 12.2.4 第4阶段:数据模型映射(逻辑数据库设计) 285 12.2.5 第5阶段:物理数据库设计 286 12.2.6 第6阶段:数据库系统的实现和调优 286 12.3 使用UML图作为数据库设计规范说明的辅助工具 287 12.3.1 UML作为设计规范说明的标准 287 12.3.2 将UML用于数据库应用设计 287 12.3.3 各种UML图 288 12.3.4 建模和设计的示例:UNIVERSITY数据库 291 12.4 基于UML的设计工具:Rational Rose 293 12.4.1 面向数据库设计的RationalRose 293 12.4.2 Rational Rose Data Modeler 293 12.4.3 使用Rational Rose Data Modeler的数据建模 294 12.5 自动化数据库设计工具 297 12.6 小结 299 复习题 299 选读文献 300 第四部分 数据存储、索引、查询处理和物理设计 303 第13章 磁盘存储、基本文件结构和散列 304 13.1 概述 304 13.1.1 存储层次和存储设备 304 13.1.2 数据库的存储 305 13.2 二级存储设备 306 13.2.1 磁盘设备的硬件描述 306 13.2.2 磁带存储设备 310 13.3 块缓冲 311 13.4 把文件记录保存在磁盘上 312 13.4.1 记录和记录类型 312 13.4.2 文件、定长记录和变长记录 313 13.4.3 记录块、跨块记录与非跨块记录 314 13.4.4 在磁盘上分配文件块 315 13.4.5 文件首部 315 13.5 文件操作 315 13.6 无序记录文件(堆文件) 317 13.7 有序记录文件(排序文件) 318 13.8 散列技术 320 13.8.1 内部散列 321 13.8.2 磁盘文件的外部散列法 323 13.8.3 允许动态文件扩展的散列技术 324 13.9 其他主文件组织 327 13.9.1 混合记录文件 327 13.9.2 B树和其他数据结构作为主组织 327 13.10 使用RAID技术的并行磁盘访问 327 13.10.1 用RAID增强可靠性 328 13.10.2 用RAID改善性能 329 13.10.3 RAID组织体系和级别 329 13.11 新的存储系统 331 13.11.1 存储局域网 331 13.11.2 网络连接存储 331 13.12 小结 332 复习题 332 练习题 333 选读文献 335 第14章 文件的索引结构 336 14.1 单级有序索引的类型 336 14.1.1 主索引 337 14.1.2 聚簇索引 339 14.1.3 辅助索引 339 14.1.4 小结 344 14.2 多级索引 344 14.3 使用B树与B+树的动态多级索引 346 14.3.1 搜索树和B树 347 14.3.2 B+树 350 14.4 多码上的索引 357 14.4.1 多属性上的有序索引 357 14.4.2 分区散列法 357 14.4.3 网格文件 358 14.5 其他类型的索引 358 14.5.1 使用散列和其他数据结构作为索引 358 14.5.2 逻辑索引与物理索引 359 14.5.3 讨论 359 14.6 小结 359 复习题 360 练习题 360 选读文献 362 第15章 查询处理和优化的算法 363 15.1 把SQL查询转换成关系代数 364 15.2 外排序算法 365 15.3 SELECT与JOIN操作的算法 366 15.3.1 SELECT操作的实现 366 15.3.2 JOIN操作的实现 369 15.4 PROJECT和集合操作的算法 374 15.5 聚集操作和外连接的实现 375 15.5.1 聚集操作的实现 375 15.5.2 外连接的实现 375 15.6 用流水线组合操作 376 15.7 在查询优化中使用启发式规则 376 15.7.1 查询树和查询图的表示法 377 15.7.2 查询树的启发式优化 378 15.7.3 将查询树转换为查询执行计划 383 15.8 利用选择性和代价估算进行查询优化 383 15.8.1 查询执行的代价成分 383 15.8.2 代价函数中使用的目录信息 384 15.8.3 SELECT操作的代价函数示例 384 15.8.4 JOIN的代价函数示例 386 15.8.5 多关系查询和连接顺序 387 15.8.6 说明基于代价的查询优化的示例 388 15.9 Oracle中的查询优化概述 390 15.10 语义查询优化 390 15.11 小结 391 复习题 391 练习题 391 选读文献 392 第16章 物理数据库设计和调优 393 16.1 关系数据库中的物理数据库设计 393 16.1.1 影响物理数据库设计的因素 393 16.1.2 物理数据库设计决策 394 16.2 关系系统中的数据库调优概述 396 16.2.1 索引的调优 396 16.2.2 数据库设计的调优 397 16.2.3 查询的调优 398 16.2.4 其他的查询调优原则 399 16.3 小结 400 复习题 400 选读文献 400 附录A ER模型的可选图形表示法 401 附录B 磁盘参数 403 附录C QBE语言概述 405 前言 近几年来,虽然许多出版社都影印和翻译了多种数据库系统方面的教材,我们也曾与中国人民大学张坤龙老师等一起翻译了《数据库系统基础》的第3版。凭我们多年来从事数据库课程教育的实践经验,认为Elmasri和Navathe的《数据库系统基础》是一本出色的、系统的、先进的、实用的数据库课程教科书。它清晰地阐述了数据库系统理论和设计问题;它的内容极为充实,广泛地涵盖了所有涉及数据库系统的设计、实现和管理所要求的诸多专题;它使用优秀的实例引入最新的现代数据库技术,全书贯穿两个例子:COMPANY和UNIVERSITY,使得读者能够使用同一个应用来比较不同的方法。当我们得到并初步阅读了Elmasri和Navathe的《数据库系统基础》第5版时,我们发现它对全书又作了完善性修改和更新,适时地反映了数据库技术和应用开发的最新发展趋势。而且它新增了一些应用实例使读者可以参与其中,而书中章节后面的练习题和新的实验题,又可以让读者获得基于现代数据库技术,如Oracle、MySQL和SQLServer,以及了解使用PHP和XML的Web数据库编程,获得建造数据库应用系统的实践经验。《数据库系统基础》正在成为从技术角度而不是从商业角度介绍数据库系统的权威教材。它既适合于研究生又适合于本科生使用,更为教师提供了足够丰富的数据库课程教育素材。当然,本书也是从事数据库技术研究和应用开发人员的良师益友。 这就是为什么我们还要花费大量精力和时间来翻译本书的原因和理由。 本书包括8个部分和5个附录。从第1部分开始,介绍了为更好地掌握数据库设计与实现所需的基本概念,以及数据库系统中用到的概念建模技术。第2部分到第4部分深入讲解了数据库系统基础中最重要的几个方面,包括:关系模型的概念、约束、语言、设计和编程,数据库设计理论和方法学,数据存储、索引、查询处理和物理设计。第5部分和第6部分是数据库系统的高级专题,包括:事务处理、并发控制、恢复技术,以及对象和对象-关系数据库,并给出了如何用SQL实现这些概念。第7和第8部分作为结束,对诸如数据库安全性,适应高级应用的增强数据模型,分布式数据库及三层客户/服务器据结构,以及XML、Web数据库、数据挖掘、数据仓库、移动数据库、多媒体数据库、地理信息系统、基因数据管理等新兴技术作了介绍。附录A给出许多可选用的显示ER或EER模式的图形记号;附录B给出磁盘的一些重要物理参数;附录C给出最早的图形化查询语言之一:示例查询(Query-By-Example,QBE)语言的概述;附录D和E介绍基于层次数据模型和网状数据模型的传统数据库系统(http://www.aw.com/elmasri)。 本书分为上、下两册:上册包括第1~4部分及附录,建议可以作为“数据库导论课程”的教科书;下册包括第5~8部分及附录,建议可以作为“数据库高级课程”的教科书。当然,正如在本书的前言中所指出的那样,讲授一门数据库课程有许多种不同的方式,各位教师可根据课程侧重点的不同,以及根据学生的背景和需求组织教学内容。在前言中展示的各章节间的主要依赖关系图可以作为参考,各主题可以按不同顺序进行讲授。可以跳过那些选择性的章节,也可以添加书中其余部分的章节以便充实课程。 本书的翻译和审校由中国科学院研究生院信息学院邵佩英教授、徐俊刚副教授、王文杰副教授共同组织完成。参加翻译的还有(按姓氏笔画)裴莹、陈明、丁杰、林欢欢、张坤、张颖、周良、余清等。全书由邵佩英教授负责统一定稿。由于水平有限,翻译不当之处,恳请读者批评指正。 本书翻译过程中曾得到中国科学院高能物理所李伯民研究员的关心和指导,得到我们的研究生王辉、祝孔强、阚劲松的帮助,在此向他们表示衷心的感谢。我们还应感谢人民邮电出版社杨海玲等编辑们,是他们的远见和支持,使得本书能够尽快与读者见面。 译者 中国科学院研究生院信息学院 2007年5月 本书介绍了在设计、使用和实现数据库系统及应用时所需的基本概念。书中重点强调了数据库建模与设计的基础、数据库管理系统提供的语言和工具,以及系统实现技术。本书旨在作为本科生或研究生的数据库系统课程(一个或两个学期)的教材或教学参考书。本书假定读者已熟悉基本的程序设计和数据结构的概念,并对基本的计算机组成知识有所了解。 本书第一部分先提供了一个引言,并介绍了最基本的概念和术语以及数据库概念建模原则。第二部分到第四部分深入讲解了数据库基础中最重要的几个方面。 以下是第5版的主要特色: ●本书内容的组织遵循独立性和灵活性原则,可以根据个人需要进行取舍。 ●新增加了一章来介绍SQL程序设计技术,这种技术用于使用PHP(一种流行的脚本语言)的Web应用。 ●对每章末尾的习题集进行了更新和扩充。 ●提供了一个辅助网站(http://www.aw.com/elmasri),其中包括可以装载到各种类型关系数据库中的数据,以便学生更好地进行实验题。 ●提供了一个简单的关系代数和关系演算解释程序。 ●每章末尾的实验题(第3章~第12章)涵盖了该章的主题,这些主题是与本书辅助网站上的数据库相关联的;这些实验题一开始是介绍性的,在后续的章节中则将引入新的资料对其进行扩展。 ●对补充资料进行了重要的修订,包括为教师和学生而准备的一组资料,例如PowerPoint幻灯片和书中的图表,以及带有答案的教师指导手册。 ■与第4版的主要区别 第5版对全书内容的组织结构改动较少,主要改动集中于对单独某一章的改进上。主要改动如下: ●增加了新的实验题,并对每章(第一部分到第三部分)末尾的练习题做了改进。 ●给出了说明规范化和数据库设计算法的新示例(第10章和第11章)。 ●给出了一种新设计,这种设计增强了书中插图的视觉效果,并对各种属性和实体类型使用了特殊字体,从而增强了可读性和可理解性。 ■第5版的内容 第一部分描述了为更好地掌握数据库设计与实现所需的基本概念,以及数据库系统中用到的概念建模技术。第1章和第2章介绍了数据库、数据库的典型用户以及DBMS(数据库管理系统)的概念、术语和体系结构。第3章介绍了实体—联系(Entity-Relationship, ER)模型和ER图的概念,并用它来说明概念数据库设计。第4章重点讨论数据抽象和语义数据建模的概念,并且扩展ER模型以便把这些概念融入到模型中,从而产生增强的实体—联系(Enhanced ER, EER)数据模型和EER图。第4章提出的概念包括子类、特化、泛化和并类型(类别)。在第3章和第4章中还介绍了UML类图表示法。 第二部分描述了关系数据模型和关系型DBMS。第5章描述了基本关系模型、完整性约束和更新操作;第6章描述了关系代数操作,并介绍了关系演算;第7章讨论了通过ER到关系的映射和EER到关系的映射进行关系数据库设计;第8章详细介绍了SQL语言,包括SQL标准,大多数关系型系统中都实现了这一标准;第9章介绍了有关SQL程序设计的主题,如SQLJ、JDBC和SQL/CLI。 第三部分讨论了一些与数据库设计有关的主题。第10章和第11章涵盖了通过规范化进行关系数据库设计而开发的形式化体系、理论和算法。这些内容包括函数依赖和其他类型的依赖,以及各种关系范式等;第10章对规范化提供了循序渐进的直观的讲解;第11章则给出了带有示例的关系设计算法,并定义了一些其他类型的依赖,如多值依赖和连接依赖等;第12章概要介绍了使用UML完成中型和大型应用数据库设计过程中的各个阶段。 第四部分从描述数据库系统中使用的物理文件结构和存取方法开始。第13章描述了磁盘上组织记录文件的主要方法,包括静态和动态的散列技术;第14章描述了文件的索引技术,包括B树和B+树数据结构和网格文件;第15章介绍了查询处理与优化的基本知识;第16章讨论了物理数据库的设计与调优。 附录A给出了展示基本的ER或EER模式时还可选用的其他一些图示表示法。如果教师认为必要,可以用这些表示法替代书中所用的表示法。附录B给出了关于磁盘的一些重要的物理参数。附录C概述了QBE图形查询语言。附录D和附录E(在本书的辅助网站http://www.aw.com/elmasris 中也可找到)讨论了基于分层和网状数据模型的遗留数据库系统。这些已经使用了30多年的数据库系统是现今许多商业数据库应用和事务处理系统的基础,要完全取代它们还需要数十年。我们认为,对于学习数据库管理的学生来说,了解这些存在已久的方法也是很重要的。 ■如何使用本书 讲授数据库课程有许多种不同的方式。本书的第一部分到第四部分中的各章可用于讲授数据库系统的导论课程,各位教师可以按照本书给出的顺序,也可以按照自己喜欢的顺序组织讲授。根据课程侧重点的不同,教师可以跳过那些选择性的章节,也可以添加书中其余部分的章节以充实授课内容。在每章开篇的最后列出了对某个特定的主题不需要详细讨论的情况下可以跳过的小节。我们建议作为数据库导论课程的教材,可以选用第1章到第14章的内容,并根据学生的背景和需求,从本书中的其他章节选择一些内容添加进来。如果要强调系统实现技术,那么可以包括本书第四部分和本书姊妹篇《数据库系统基础:高级篇》的第一部分的内容。 第3章和第4章涵盖了如何使用ER模型和EER模型进行概念建模,这部分内容对于较好地从概念上理解数据库是很重要的。但是,这两章内容可以有选择地讲授,或者在课程的后期讲授,如果课程的重点是数据库管理系统(DBMS)的实现,甚至可以跳过这两章。第13章和第14章介绍的是文件组织和索引,这两章内容同样可以在课程的前期或后期讲授,如果课程的重点是数据库模型和语言,也可以跳过这两章。对于学习过文件组织课程的学生,可以把这几章的部分内容作为课后阅读材料,或者布置一些练习题来复习这些概念。 一个有完整生命周期的数据库设计与实现的项目,要涵盖概念设计(第3章和第4章)、数据模型映射(第7章)、规范化(第10章)和SQL实现(第9章)。同时还需要有关特定的程序设计语言和RDBMS的附加文档。 本书在编写时就考虑到了其主题可以按不同顺序进行讲授。下图展示了各章之间的主要依赖关系 。由图可知,在前面引导性的两章之后,可以从多个不同的主题开始讲授。这个图可能看起来有些复杂,但它显现了非常重要的一点是,如果按照如图所示的顺序进行讲授,章节间的依赖关系就不会丢失。如果教师想以自己选择的顺序来讲授课程,那么可以将此图作为参考。 如果将本书作为一个学期课程的教材,可以将某些章节留作课外阅读资料。第四部分、《数据库系统基础:高级篇》的第三部分和第四部分可以考虑作为这样的阅读资料。如果将本书作为上、下两个学期的教材,第一学期的课程“数据库设计/系统导论”,面向大二、大三或大四的学生,可以涵盖第1章~第14章的大部分内容。第二学期的课程“数据库设计与实现技术”,面向大四学生或一年级研究生,则可涵盖《数据库系统基础:高级篇》中的内容。在以上两个学期中可以有选择地选用《数据库系统基础:高级篇》第三部分和第四部分中的某些章节。除本书之外,如果学生所在学院还有其他介绍DBMS的资料,也可以作为本书的附加资料进行学习。 ■补充资料 本书的所有使用者均可获得辅助资料。 ●在网站http://www.aw.com/cssupport上提供了PowerPoint讲稿和图。 ●在本书辅助网站(http://www.aw.com/elmasri)上提供了第5版新增的实验手册。实验手册包括流行的数据建模工具、关系代数和关系演算解释程序,以及本书中使用的两个通用数据库管理系统实现的示例。本书每章末尾的实验题也与实验手册相关。 ●得到确认的教师可以获得习题答案。请访问Addison-Wesley 的教师资源中心(http://www.aw.com/irc)、联系当地的Addison-Wesley销售代表或者发送电子邮件到computing@aw.com以获取如何获得习题答案的信息。 ■致谢 非常荣幸能够向这么多人致谢,感谢他们对本书的帮助与贡献。首先要感谢本书的编缉Matt Goldstein及Katherine Harutunian。特别要感谢第5版的首席编辑Matt Goldstein所付出的努力及帮助。我们还要感谢Addison-Wesley的那些为第5版做出贡献的人们:Michelle Brown、Gillian Hall、Patty Mahtani、Maite Suarez-Rivas、Bethany Tidd和Joyce Cosentino Wells。我们感谢Gillian Hall完成了本书的内部设计,包括版式、字体和艺术设计方面非常细致的工作,正是她周全的考虑,我们才有了如此美观的书。 我们感谢为本书作出贡献的审稿人: Hani Abu-Salem,迪保罗大学 Jamal R. Alsabbagh, 大河谷州立大学 Ramzi Bualuan,圣母大学 Soon Chung,赖特州立大学 Sumali Conlon,密西西比大学 Hasan Davulcu,亚利桑那州立大学 James Geller,新泽西理工学院 Le Gruenwald,俄克拉何马大学 Latifur Khan,得克萨斯大学达拉斯分校 Herman Lam,佛罗里达大学 Byung S.Lee,佛蒙特大学 Donald Sanderson,东田纳西州立大学 Jamil Saquer,西南密苏里州立大学 Costas Tsatsoulis,堪萨斯大学 Jack C. Wileden,马萨诸塞大学阿默斯特分校 我们感谢Raj Sunderraman与我们一起完成了本书的实验部分并设计了实验题。旧金山大学的Salman Azar也贡献了部分习题。 Sham Navathe要向他佐治亚理工学院的学生们致谢:Saurav Sahay、Liora Sahar、Fariborz Farahmand、Nalini Polavarapu、Wanxia Xie、Ying Liu以及Gaurav Bhatia。Ed Omiecinski也曾提供了有价值的建议和修正。 我们还要再次感谢曾经审阅本书以及为本书前几版做出过贡献的人们。 ●第1版。Alan Apt(编缉)、Don Batory、Scott Downing、Dennis Heimbinger、Julia Hodges、Yannis Ioannidis、Jim Larson、Dennis McLeod、Per-Ake Larson、Rahul Patel、Nicholas Roussopoulos、David Stemple、Michael Stonebraker、Frank Tompa和Kyu-Young Whang。 ●第2版。Dan Joraanstad(编缉)、Rafi Ahmed、Antonio Albano、David Beech、Jose Blakeley、Panos Chrysanthis、Suzanne Dietrich、Vic Ghorpadey、Goets Graefe、Eric Hanson、Junguk L.Kim、Roger King、Vram Kouramajian、Vijay Kumar、John Lowther、Sanjay Manchanda、Toshimi Minoura、Inderpal Mumick、Ed Omiecinski、Girish Pathak、Raghu Ramakrishnan、Ed Robertson、Eugene Sheng、David Stotts、Marianne Winslett以及Stan Zdonick。 ●第3版。Maite Suarez-Rivas和Katherine Harutunian(编缉)、Suzanne Dietrich、Ed Omiecinski、Rafi Ahmed、Francois Bancilhon、Jose Blakeley、Rick Cattell、Ann Chervenak、David W.Embley、Henry A. Etlinger、Leonidas Fegaras、Dan Forsyth、Farshad Fotouhi、Michael Franklin、Sreejith Gopinath、Goetz Craefe、Richard Hull、Sushil Jajodia、Ramesh K. Karne、Harish Kotbagi、Vijay Kumar、Tarcisio Lima、Ramon A. Mata-Toledo、Jack McCaw、Dennis McLeod、Rokia Missaoui、Magdi Morsi、M.Narayanaswamy、Carlos Ordonez、Joan Peckham、Betty Salzberg、Ming-Chien Shan、Junping Sun、Rajshekhar Sunderraman、Aravindan Veerasamy以及Emilia E.Villareal。 ●第4版。Maite Suarez-Rivas、Katherine Harutunian、Daniel Rausch以及Juliet Silveri(编缉);、Phil Bernhard、Zhengxin Chen、Jan Chomicki、Hakan Ferhatosmanoglu、Len Fisk、William Hankley、Ali R.Hurson、Vijay Kumar、Peretz Shoval、Jason T.L. Wang(审稿人);;Ed Omiecinski(协助完成了第27章);得克萨斯大学阿灵顿分校的贡献者有Hyoil Han、Babak Hojabri、Jack Fu、Charley Li、Ande Swathi以及Steven Wu;佐治亚理工学院的贡献者有Dan Forsythe、Weimin Feng、Angshuman Guin、Abrar Ul-Haque、Bin Liu、Ying Liu、Wanxia Xie以及Waigen Yee。 最后,我们真切地感谢我们的家人所给予的支持、鼓励和耐心。 R.E. S.B.N.
zip
发布资源于 8 年前

ARM Cortex-A8嵌入式系统开发与实践——WinCE与Android平台--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 ARM Cortex-A8嵌入式系统开发与实践——WinCE与Android平台 基本信息 作者: 倪旭翔    计春雷    出版社:中国水利水电出版社 ISBN:9787508481777 上架时间:2011-2-12 出版日期:2011 年1月 开本:16开 页码:315 版次:1-1 内容简介    本书以飞思卡尔应用处理器i.mx51为例,全面系统地讲述基于新一代高性能arm cortex-a8内核应用处理器以及wince
pdf
发布资源于 8 年前

Google Android开发入门与实战(09年度畅销榜TOP50)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Google Android开发入门与实战(09年度畅销榜TOP50)(附赠400分钟高清教学视频 ,涵盖5大商业案例完整源代码) 基本信息 作者: 靳岩    姚尚朗    [作译者介绍] 丛书名: 移动开发系列丛书 出版社:人民邮电出版社 ISBN:9787115209306 上架时间:2009-6-24 出版日期:2009 年7月 开本:16开 页码:340 版次:1-1 编辑推荐    *《边看边读》第9期: 《Google Android开发入门与实战》    * 第一本国内开发团队原创的Android图书    * 完全基于Android最新的SDK1.5    * 著名台湾技术专家高焕堂、Google Android工程师何峰、InfoQ站长霍泰稳鼎力推荐!    * 全书除了大量小型案例之外还包含了5个Android平台下的完整商业实例及源码分析,分别是RSS阅读器、基于GoogleMap的个人GPS、豆瓣客户端、在线音乐播放器、手机信息助手    * 随书附赠的光盘中包含389分钟的详细教学视频以及Android开发必备开发资源,部分教学视频免费下载地址:http://www.eoeandroid.com/viewthread.php?tid=328    * 读者对于此书内容的疑问可以访问http://www.eoeandroid.com社区,作者团队将会及时解答 内容简介   本书内容上涵盖了用android开发的大部分场景,从android基础介绍、环境搭建、sdk介绍、market使用,到应用剖析、组件介绍、实例演示等方面。从技术实现上,讲解了5个android平台下的完整综合实例及源代码分析,分别是rss阅读器、基于google map的个人gps、豆瓣网(web 2.0)客户端、在线音乐播放器、手机信息查看助手。本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配以了翔实的开发情景截图,并将重要的知识点和开发技巧以“小实验”、“小提醒”、“小知识”、“注意”等的活泼形式呈现给读者。在程序实例的讲解方面,主要将实例安插在android开发的精髓知识章节,这为初学者学习与实践结合提供了很好的指导。.   本书配套有400多分钟的全程开发视频光盘,指导读者快速、无障碍地学通android实战开发技术。..   本书适合具备一定软件开发经验,想快速进入android开发领域的程序员;具备一些手机开发经验的开发者和android开发爱好者学习用书;也适合作为相关培训学校的android培训教材。... 作译者   本书由国内Android知名专业开发团队eoeMobile团队倾心撰写。eoeMoblie团队国内最早一批专注于Android开发的专业团队,目前团队已经在Google Market上有超过5款的作品,而且取得了可喜的下载量。国内著名网站豆瓣网的Android客户端(eoeDouban)也是由此团队制作。关于此团队的更多信息请访问:[url]http://www.eoemobile.com.[/url]关于图书的进展,可以访问[url]http: //www.eoeandroid.com[/url] 社区。 目录 封面 -19 推荐序 -18 名家推荐 -17 前言 -16 目录 -8 第1章 掀起你的盖头来——初识Android 1 1.1 认识Android 1 1.2 Android的背景 2 1.2.1 Android的历史 2 1.2.2 Android的发展 2 1.3 我的Android我做主 2 1.3.1 开发基于Android平台的应用 3 1.3.2 参加Android开发者大赛 3 1.3.3 个人英雄主义再现——得到更多人的认可和尊重 3 1.3.4 获得应有的收益——Android Market 3 1.4 真实体验——Android模拟器 4 1.4.1 模拟器概述 4 1.4.2 模拟器和真机的区别 4 1.4.3 模拟器使用注意事项 4 1.5 更上一层楼——加入Android开发社区 5 1.6 本章小结 6 第2章 工欲善其事 必先利其器——搭建Android开发环境 7 2.1 开发Android应用前的准备 7 2.1.1 Android开发系统要求 7 2.1.2 Android软件开发包 7 2.1.3 其他注意事项 8 2.2 Windows开发环境搭建 8 2.2
pdf
发布资源于 8 年前

Android移动应用开发从入门到精通--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Android移动应用开发从入门到精通 基本信息 原书名: Android Wireless Application Development 原出版社: Addison-Wesley Professional 作者: (美)Shane Conder    Lauren Darcey 译者: 张魏 李卉 出版社:人民邮电出版社 ISBN:9787115230195 上架时间:2010-7-8 出版日期:2010 年7月 开本:16开 页码:470 版次:1-1 编辑推荐   本书提供Android开发从入门到进阶的全程指导,囊括详尽的开发实践技术和前瞻的市场应用技巧! 内容简介   本书涵盖了android开发从概念、技术到市场推广应用的全部话题,内容包括:android概览、android应用程序设计精髓、android用户界面设计精髓、常用android api、更多android应用程序设计原则、对外发布你的android应用程序和附录等7个部分。附录还包含了android开发常用工具(如模拟器、ddms、调试桥和sqlite等)的使用指南。   本书不仅适合android应用程序开发人员阅读,还能为qa测试人员提供指导。另外本书还可以帮助项目经理更好地管理项目进程和项目团队,帮助市场推广人员更好地把握市场、创造令人瞩目的销售业绩。 作译者   Shane Conder拥有丰富的开发经验,在过去的10年中,他把主要精力集中在移动和嵌入式开发领域,迄今已设计并开发了基于BREW、J2ME、Windows Mobile和Android的诸多商业软件。Shane撰写了大量关于移动通信行业和评估移动开发平台的文章,这些文章发表在他的个人技术博客上,在领域内受到了广泛的关注。Shane获得了加州大学授予的计算机科学学士学位。   Lauren Darcey是一家专注于移动开发的小软件公司的技术主管。拥有20年专业软件产品研发经验的Lauren,被公认为企业架构和商业级移动应用开发的权威.Lauren获得了加州大学圣克鲁兹分校授予的计算机学士学位. 目录 封面 -20 封底 -19 扉页 -18 版权 -17 内容提要 -16 作者简介 -15 致谢 -15 前言 -14 目录 -10 第一部分 Android概览 1 第1章 Android简介 2 1.1 移动软件开发简史 2 1.1.1 遥想当年 2 1.1.2 “砖头” 3 1.1.3 无线应用协议(WAP) 4 1.1.4 商用移动平台 6 1.2 开放手机联盟(OHA) 8 1.2.1 无线Google 8 1.2.2 开放手机联盟成立 8 1.2.3 制造商:设计Android手机 9 1.2.4 内容提供商:开发Android应用程序 9 1.2.5 移动操作系统:传播Android体验 9 1.2.6 充分发挥Android的优势 10 1.3 Android平台的不同之处 10 1.3.1 Android:下一代平台 10 1.3.2 免费开放源代码 11 1.3.3 熟悉和廉价的开发工具 11 1.3.4 合理的开发人员学习曲线 12 1.3.5 强大的应用程序开发支持 12 1.3.6 丰富、安全的应用集成 12 1.3.7 无障碍发布 13 1.3.8 为应用程序提供的“自由市场” 13 1.3.9 新生并逐渐成长的平台 14 1.4 Android平台 14 1.4.1 Android的基本体系结构 14 1.4.2 安全与许可权限 16 1.4.3 开发Android应用程序 17 小结 18 参考资料和更多信息 19 第2章 你的Android开发环境 20 2.1 配置你的开发环境 20 2.1.1 支持的操作系统 20 2.1.2 安装Java开发包(JDK) 20 2.1.3 安装Eclipse开发环境 21 2.1.4 其他开发环境 22 2.1.5 安装Android软件开发包(SDK) 22 2.1.6 安装与配置Android Eclipse插件(ADT) 23 2.1.7 ADT安装释疑 25 2.1.8 升级Android SDK 25 2.1.9 Android SDK的问题 25 2.1.10 配置Android编译硬件 26 2.1.1
pdf
发布资源于 8 年前

精通Android游戏开发(将本地PC游戏轻松移植到Android的秘技)--源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《精通Android游戏开发》的随书源代码 对应的书籍资料见: 精通Android游戏开发(将本地PC游戏轻松移植到Android的秘技) 基本信息 原书名: Pro Android Games 原出版社: Apress 作者: (美)Vladimir Silva 译者: 王恒 苏金国 丛书名: 图灵程序设计丛书.移动开发类 出版社:人民邮电出版社 ISBN:9787115246981 上架时间:2011-2-25 出版日期:2011 年2月 开本:16开 页码:245 版次:1-1 编辑推荐   将本地PC游戏轻松移植到Android的秘技    精彩炫酷游戏示例引人入胜    简明易读,一学就会 内容简介   本书讨论如何将pc 上的3d 游戏移植到android 平台。作者从必备的技能和软件工具入手,逐步介绍如何从头构建纯java 游戏,如何混合使用opengl 3d 图形和jni,并以真实的pc 游戏wolfenstein 3d和doom 为例,介绍如何融合java 的优雅设计和c 的强大功能,使混合游戏达到最佳性能。   本书适合熟悉android 平台的开发人员阅读。 作译者   Vladimir Silva 美国田纳西州立大学计算机科学硕士,美国国家荣誉协会成员。曾在IBM担任过4年研究工程师,在此期间积累了有关分布式和网格计算研究的丰富经验。为IBM发表过多篇计算机科学文章。除本书外,他还著有Grid Computing for Developers 和Practical Eclipse RCP Projects。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 前言 -7 目录 -2 第1章 欢迎进入Android游戏世界 1 1.1 必备技能 1 1.1.1 扎实的Android基础 1 1.1.2 Linux和Shell脚本的基本知识 3 1.2 需要哪些软件工具 3 1.3 建立环境 4 1.3.1 获得Android源文件 4 1.3.2 提取本地Android库 6 1.3.3 为ARM处理器安装GNU工具链 8 1.3.4 编写定制编译脚本 10 1.4 建立开发环境 17 1.5 已经成功迈出第一步 22 第2章 在Android中编译本地代码 23 2.1 第一个本地Android应用 23 2.1.1 创建AVD 23 2.1.2 创建Android项目 26 2.1.3 应用体系结构 27 2.2 编译和测试共享库 38 2.2.1 缺少符号时的调试 40 2.2.2 在设备上测试动态库 41 2.2.3 用strace调试 42 2.2.4 静态编译 43 2.3 测试本地应用 44 2.4 下一章内容 46 第3章 从头构建Java游戏 47 3.1 Android游戏与Java ME游戏 47 3.2 创建你的第一个Java游戏——Space Blaster 48 3.2.1 了解游戏的体系结构 49 3.2.2 创建项目 50 3.2.3 创建游戏的活动类 51 3.2.4 创建游戏布局 53 3.2.5 实现游戏 58 3.2.6 处理按键和触控事件 66 3.3 在模拟器上测试 69 3.4 下一章内容 70 第4章 Java游戏续篇:多边形的乐趣 71 4.1 关于本章安排 71 4.2 了解在Android中绘制多边形的问题 71 4.3 了解绘制矩形的问题 73 4.4 为Asteroids创建一个Polygon类 75 4.5 为Asteroids创建PolygonSprite类 80 4.6 游戏的体系结构 84 4.7 创建项目 84 4.7.1 创建游戏布局 85 4.7.2 查看资源 86 4.7.3 了解游戏生命期 87 4.7.4 响应按键和触控事件 97 4.8 在模拟器上测试Asteroids 100 4.9 下一章内容 101 第5章 OpenGL 3D图形与JNI混合 102 5.1 移动设备的强大能力 103 5.2 在Java中使用OpenGL 104 5.2.1 Java主活动 106 5.2.2 表面视图 108 5.2.3 GL线程 110 5.2.4 立方体渲染器 113 5.2.5 Cube类 116 5.3 以本地方式使用OpenGL 118 5.3.1 主活动 120 5.3.2 本地接口类 122 5.3.3 对原示例的修改 123 5.3.4 本地立方体渲染器 124 5.3.5 本地立方体 131 5.3.6 编译和运行示例 132 5.4 OpenGL游戏移植到Android的问题 137 5.5 大幕已经拉开 138 第6章 3D射击游戏Ⅰ:面向Android的Wolfenstein 3D 139 6.1 收集工具 139 6.2 Wolf 3D 140 6.3 游戏体系结构 143 6.4 Wolf 3D的Java类 144 6.4.1 创建主要的WolfLauncher类 145 6.4.2 创建Wolf 3D主菜单 149 6.4.3 处理按键和触控事件 150 6.4.4 创建游戏循环 152 6.4.5 建立本地回调 153 6.4.6 创建声音和音乐处理器 155 6.4.7 创建运动控制器处理程序 156 6.4.8 创建运动控制器 158 6.4.9 声音类 165 6.4.10 本地接口类 174 6.5 编写本地层 176 6.5.1 初始化游戏循环 177 6.5.2 用C到Java的回调级联传递消息 179 6.6 编译本地库 185 6.6.1 编写Makefile 186 6.6.2 生成JNI头文件 187 6.7 在模拟器中测试Wolf 3D 187 6.8 下一章内容 189 第7章 3D射击游戏Ⅱ:面向Android的Doom 191 7.1 Java/C组合的无限潜能 191 7.2 将Doom引入移动设备 192 7.3 Doom的游戏体系结构 194 7.4 Java主活动 195 7.4.1 创建处理器 196 7.4.2 游戏布局 197 7.4.3 菜单和选择处理器 199 7.4.4 按键和触控事件处理器 200 7.4.5 本地回调处理器 202 7.4.6 导航控件 205 7.5 音频类 207 7.6 本地接口类 208 7.6.1 回调监听器 208 7.6.2 本地方法 209 7.6.3 C到Java的回调 209 7.7 本地层 212 7.7.1 本地方法实现 212 7.7.2 对原游戏的修改 223 7.8 Doom库(DSO)编译 229 7.9 在模拟器中测试面向Android的Doom 230 7.10 大功告成 232 附录 部署与编译提示 234 译者序   首先,这是一本关于编程的书。(也许你会说:“编程书到处都是!”)   确切地说,这是一本关于游戏编程的书。(也许你会说:“游戏编程书有什么稀罕?”)   更准确地讲,这是一本关于Android游戏编程的书。(也许你会说:“如今,Android游戏编程书也不算少了!”)   最重要的是,这是一本能够帮助你将PC上庞大精美的3D游戏轻松移植到Android平台的编程书。(也许你会说:“……哦?那倒可以试试!”)   没错,这正是本书最引人注目的地方。不同于一般的Android游戏编程书,它没有详尽介绍在这个平台上开发游戏的方方面面,而是找到了一个独特的着眼点,让你切实领会如何“事半功倍”地完成Android游戏开发。   也许你从未想过Wolfenstein 3D和Doom之类的游戏也能在Android上流畅运转,不过这个看似艰巨的任务已经被作者轻松完成,而且他会把他的这一独门绝技悉心传授给你,你手上的这本书正是传说中的“葵花宝典”。   本书还有一大特点:说得少,做得多。它总是开门见山地切入主题,指明方法,然后完全通过实例讲解如何具体应用,并有针对性地强调如何解决应用过程中存在的问题。这一点应该很受一线编程人员欢迎。   你应该已经跃跃欲试了,那么现在就开始,去了解书中的奥秘,掌握作者传授的秘技,享受Android游戏开发的乐趣吧!   全书主要由王恒、苏金国翻译,并得到王小振、李璜、刘亮、王少轩、谢连宝的大力协助。若译文有不当之处,敬请读者批评指正。    前言   本书将帮助你为Android平台创建最棒的游戏。现在讨论这个主题的书有很多,不过本书会从一个独特的视角,展示如何不费吹灰之力就将本地PC游戏轻松地移植到Android平台上。为此,书中采用了我们耳熟能详的真实例子,而且每一章都提供了大量源代码。要记住,深入学习本书之前,首先要有Java 和ANSI C的坚实基础。我会尽我所能用清晰、简单的方式,结合图形和示例代码来解释这些最为复杂的概念。每一章提供的源代码都可以帮助你深入理解概念,作为移动游戏开发人员,你还可以充分利用这些源代码来节省开发时间。   需要什么软件   为了能够充分利用本书,需要以下工具。   已正确安装Java SDK的Windows或Linux PC   我想这是显而易见的,因为大多数Android开发都用Java完成。要注意,我所说的是Java SDK,而不是JRE。由于后面各章会用到JNI头文件和命令行工具,所以SDK是必不可少的。   Eclipse IDE 和Android SDK   Eclipse是Android开发领域事实上的标准IDE。我使用了Eclipse Galileo来创建本书所有示例的工作区,当然,使用Eclipse Ganymede也完全可以。.   是否需要IDE?   尽管我们选了Eclipse Galileo来创建代码工作区,不过你完全可以使用自己喜欢的其他IDE。当然,这需要一些额外的设置。从http://www.eclipse.org/可以得到Eclipse Galileo。   对于如何用其他IDE(如IntelliJ 或某个基本编辑器)安装Android SDK,有关说明请参见http://developer.android.com/guide/developing/other-ide.html。   所谓正确安装Android SDK,意味着两点。   必须为Eclipse安装Android SDK插件。   从IDE主菜单点击Help (帮助)→Install New Software(安装新软件)。   点击Add按钮增加一个新站点,并输入名字Android SDK和位置https://dl-ssl.google.com /android/eclipse/,然后点击OK按钮。   从Available Software(可用软件)对话框选择Android SDK,并按照向导的简易安装指令进行安装。   必须安装Android SDK。可以从上面的Android站点下载。要记住,Eclipse必须知道 Android SDK的位置。从IDE主菜单点击Window(窗口)→Preferences(首选项)。在左边的导航菜单选择Android ,并输入SDK的位置(见图0-1)。我使用的是SDK 1.5,因为写本书时这是可用的最新版本。不过,本书的代码已经在SDK 1.6和2.0中做了测试(有关细节见“Android SDK兼容性”一节)。   图0-1Eclipse Galileo 中的Android SDK 配置对话框   面向ARM处理器的GNU C编译器   本书的混合型游戏要求必须安装GNU C编译器。这些游戏结合了Java代码和一个本地核心库,因此需要一个面向移动ARM处理器的C编译器。本书中使用的编译器是Code Sourcery GNU G++ Toolkit(在第1章会详细介绍)。不过,并不是只能使用这个编译器。实际上,任何能够生成ARM代码的C编译器都可以使用,包括Android NDK ( Native Development Kit )。   各章源代码 .  这是可选的,不过学习本书时,各章源代码对于你理解书中的概念会很有帮助。我会尽可能简洁地介绍各章内容。不过,有些游戏(特别是Wolf 3D 和 Doom)采用了用C语言编写的庞大核心引擎(Doom的引擎就有10万行代码),而且注释很少,因此很难读懂。总而言之,最重要的是你会看到如何不费劲地将这两种绝妙的语言(Java 和C)轻松地结合在一起。登录出版商网站http://www.apress.com可以下载本书随附的源代码 ,这些代码均使用Eclipse Galileo构建。   本书独特之处   我认为有一点非常重要,那就是要让读者理解本书的写作目标与众不同。尽管Java是Android的主要开发语言,但Google意识到,作为一个游戏平台,Android要想取得成功,非常需要混合Java/C开发,正因如此,他们发布了NDK。Google逐渐认识到,为其他移动平台(如iPhone)编写的本地游戏非常之多,Android需要支持C开发才能迎头赶上。PC游戏已经有几十年的发展历程(主要用C编写),只需使用一个简单的ARM C 编译器,就可以把几千个PC游戏移植到Android平台。正是这一点让本书独具一格。既然可以采用一种优雅的方式简单地结合这两种语言,从而大量节省时间和金钱,为什么还要费力劳神地把10万行复杂的C代码转换成Java代码呢?利用这本书,你将掌握如何有效地结合这两种语言。这就是我的目标,也正是这一点,才让本书从众多相关图书中脱颖而出。另一方面,本书还包括介绍纯Java游戏的章节,通过合理均衡地分配各部分内容,希望能同时满足Java追随者和C爱好者的需要。   Android SDK兼容性   作为一个开发人员,你可能想明确本书中代码的SDK兼容性。这是一个重要的问题,因为Android SDK 的版本频繁更新。写本书时,Google刚刚发布了Android SDK 2.0版本。书中的代码已经用以下版本的Android SDK做过测试:   SDK 2.0   SDK 1.6   SDK 1.5   SDK 1.0   总之,本书中的代码在1.0到2.0的所有SDK版本中都可以顺利运行,这也是我一直以来的目标。   SDK 1.6版的变化   对于游戏开发来说,这个平台的1.5版到1.6版几乎未做任何改变。要了解1.6版本中API有哪些变化,详见http://developer.android.com/sdk/RELEASENOTES.html。   本书中对纯Java 游戏和混合游戏的内容做了合理的划分,安排如下:   第1章   作为第一步,这一章首先建立一个Linux系统,完成混合游戏编译,包括获取Android源文件、提取设备系统库、建立定制编译toolchain和定制编译脚本。由于本书后面将要使用Eclipse IDE,这一章还会介绍设置这个开发环境 的有关细节。.   第2章   这一章中,通过在一个本地库上构建简单的Java应用,你将了解如何采用一种优雅的方式结合Java 和C代码。你将学习关于Java本地接口(Java Native Interface ,JNI)的一些让人欢欣鼓舞的概念,还会了解结合Java 和C时所用的API,包括如何加载本地库、如何使用本地关键字、如何生成JNI头文件,以及方法签名、Java数组与C数组、调用Java方法、产品编译和打包等内容。   第3章   从这一章开始,我们来研究纯Java游戏,首先从一个名为Space Blaster的真实游戏入手。这个游戏的目标是利用手指或键盘让一个飞船飞越星空。从这一章中,你会了解如何构建基于XML的定制线性布局、如何使用抽象类和定时器任务来模拟简单的游戏循环、如何在一个非UI线程中使视图无效,以及如何从项目资源加载sprite和声音,另外还会学习一些绘制技术,如sprite动画、简单对象绘制以及使用Paint对象设置样式和颜色。   第4章   第4章以经典街机游戏Asteroids为例,继续讨论纯Java游戏。你将学习在Android画布上绘制多边形sprite的所有知识。这个技术稍有些难度,因为Android API缺乏对多边形的支持。这一章依赖于Java语言的高度可移植性,将多边形代码从 J2SE API 移植到Android API,从而最终创建Asteroids。你可能已经注意到,这是一个主要基于多边形的游戏。此外,这一章还谈到另外一些有意思的主题,包括游戏生命周期中的步骤(即初始化、绘制和更新物理特性)、响应按键和触控事件,以及在设备模拟器上测试。   第5章   这一章讨论的是利用OpenGL绘制3D图形。这里会展示我无意中得到的一个绝妙技巧,利用这个技巧可以在Java和C中混合OpenGL API调用。Google 提供了一个3D立方体示例来展示如何在纯Java 和混合模式中使用OpenGL,我们就通过这个立方体示例说明这个概念。这个技巧将为Android 的3D开发开拓一个新的领域,从而可以将大量3D PC游戏移植到这个平台,并且大大节省开发成本和时间。   第6章   第6章和第7章可以视为一个系列,这也是本书中我个人最喜欢的部分。这一章将把Wolfenstein 3D引入Android平台——这个游戏堪称所有PC上的3D 射击游戏的“教父”。 谁能想得到,这样一个复杂的PC游戏居然可以轻而易举地移植到Android移动设备上!这一章会介绍Java和C如何和谐共处,并介绍其他一些主题,如基本游戏体系结构(展示Java 和C组件如何结合),声音、音乐、按键和触控事件的资源处理器,如何使用JNI将图形信息、视频缓冲区和声音/音乐请求级联返回到Java,以及如何进行编译和测试。   第7章   作为下一步,第7章利用PC上的里程碑式游戏Doom进一步展示有关概念。Doom是迄今为止所创建的最伟大的3D游戏,这一点绝对无可争议,它为3D图形游戏开辟了一个新领域。这一章的最终目标并不是描述这个游戏本身,而是希望你能从中了解到:将类似Doom这么复杂的PC游戏移植到Android平台是何等容易。不相信吗?可以给你提供一个证据:Doom包含10万余行C代码,但是只需增加不到200行JNI API调用以及构建移动UI所需的Java代码,就可以把它引入到Android!这一章将说明,完全不必把10万行C代码全部转换为Java代码,只需要采用巧妙的方式将这两种强大的语言完美地混合在一个“优雅”的应用中。想想看这将节省多少开发时间和成本!一定要好好读一读这一章。    媒体评论   我喜欢作者的干脆爽快,他总是单刀直入,用代码说话,丝毫不会浪费时间和纸张在没用的说教上。   ——亚马逊读者评论   我最近买了6本Android开发方面的图书,这是唯一一本我看得上的,它提供的正好是我在游戏开发中需要用到的知识。   ——亚马逊读者评论   
zip
发布资源于 8 年前

精通Android游戏开发(将本地PC游戏轻松移植到Android的秘技)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 精通Android游戏开发(将本地PC游戏轻松移植到Android的秘技) 基本信息 原书名: Pro Android Games 原出版社: Apress 作者: (美)Vladimir Silva 译者: 王恒 苏金国 丛书名: 图灵程序设计丛书.移动开发类 出版社:人民邮电出版社 ISBN:9787115246981 上架时间:2011-2-25 出版日期:2011 年2月 开本:16开 页码:245 版次:1-1 编辑推荐
pdf
发布资源于 8 年前

精通Android 3--源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《精通Android 3》的随书源代码 对应的书籍资料见: 精通Android 3(亚马逊畅销书,读者好评如潮,涉及版本2.3和3.0) 基本信息 原书名: Pro Android 3 原出版社: Apress 作者: (印)Satya Komatineni    (美) Sayed Hashimi    Dave MacLean 译者: 杨越 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115266026 上架时间:2011-11-14 出版日期:2011 年11月 开本:16开 页码:907 版次:1-1 编辑推荐    亚马逊畅销书,读者好评如潮    涉及版本2.3和3.0    Android移动开发的制胜宝典 内容简介   《精通android 3》在上一版的基础上进行了全面改进,增加了android 内部构件的相关知识,介绍了线程、进程、长期运行的服务、广播接收程序和闹钟管理器。本版还介绍了更多ui 控件,并用150 多页的篇幅专门介绍了android 3.0 版,包括碎片、碎片对话框、actionbar 和拖放。此外,本书对服务和传感器的相关章节做了大幅改进,还对介绍opengl 的章节做了修订,涵盖了opengl es 2.0。   《精通android 3》囊括了android 开发人员所需的一切知识,既可为android 开发人员夯实基础,又能提高android开发人员的技能。 作译者   Satya Komatineni:   印度理工大学电子工程专业硕士。有20多年的程序设计经验,开发过用于Java Web开发的简单开源工具AspireWeb(www.activeintellect.com/aspire)以及开源个人Web 操作系统——Aspire Knowledge Central(www.knowledgefolders.com)。擅长使用Java、.NET和数据库技术进行Web开发,发表过30多篇这方面的 文章。他经常在创新技术相关的行业大会上发言,并为java.net上的网络博客撰稿。   Dave MacLean:   加拿大滑铁卢 大学系统设计工程专业学士。早在1980年就从事软件开发工作,使用过多种语言进行编程,曾开发机器人自动化、数据仓库、Web自助服务应用程序、EDI事务处理器等系统.Dave曾在Sun、IBM、Trimble Navigation、通用汽车等公司工作.   SayedcY.cHashimi:   美国佛罗里达大学工程学硕士.具有医疗、金融、物流和面向服务的架构等多个领域的软件开发经验,使用各种编程语言和平台(包括C/C++、MFC、J2EE和.NET)开发过大规模的分布式应用程序.他在重要软件杂志上发表过许多文章,还在Apress出版了其他广受欢迎的图书.个人主页为www.sayedhashimi.com. 目录 封面 -18 封底 -17 扉页 -16 版权 -15 版权声明 -14 序 -12 前言 -11 致谢 -10 目录 -9 第1章 Android计算平台简介 1 1.1 面向新PC的全新平台 1 1.2 Android的历史 3 1.3 Dalvik VM剖析 4 1.4 理解Android软件栈 5 1.5 使用Android SDK开发最终用户应用程序 6 1.5.1 Android模拟器 6 1.5.2 Android UI 7 1.5.3 Android基础组件 7 1.5.4 高级UI概念 8 1.5.5 Android Service组件 10 1.5.6 Android媒体和电话组件 10 1.5.7 Android Java包 11 1.6 利用Android源代码 13 1.7 本书的示例项目 14 1.8 小结 15 第2章 设置开发环境 16 2.1 设置环境 16 2.1.1 下载JDK 6 16 2.1.2 下载Eclipse 3.6 17 2.1.3 下载Android SDK 18 2.1.4 命令行窗口 19 2.1.5 安装ADT 19 2.2 了解基本组件 21 2.2.1 View 21 2.2.2 Activity 21 2.2.3 Intent 22 2.2.4 ContentProvider 22 2.2.5 Service 22 2.2.6 AndroidManifest.xml 22 2.2.7 AVD 22 2.3 Hello World! 23 2.4 AVD 27 2.5 剖析Android应用程序的结构 28 2.6 分析Notepad应用程序 30 2.6.1 加载和运行Notepad应用程序 30 2.6.2 分解应用程序 31 2.7 了解应用程序生命周期 37 2.8 调试应用程序 40 2.8.1 启动模拟器 41 2.8.2 StrictMode 42 2.8.3 参考资料 46 2.9 小结 46 第3章 使用Android资源 47 3.1 资源 47 3.1.1 字符串资源 47 3.1.2 布局资源 49 3.1.3 资源引用语法 51 3.1.4 定义资源ID供以后使用 52 3.1.5 已编译和未编译的Android资源 52 3.2 Android关键资源 53 3.3 使用任意XML资源文件 61 3.4 使用原始资源 62 3.5 使用资产 63 3.6 了解资源目录结构 63 3.7 资源和配置更改 64 3.8 参考资料URL 67 3.9 小结 67 第4章 ContentProvider 68 4.1 探索Android内置的ContentProvider 69 4.2 ContentProvider的架构 73 4.3 实现ContentProvider 84 4.4 练习图书提供程序 94 4.4.1 添加图书 94 4.4.2 删除图书 94 4.4.3 获取图书数量 95 4.4.4 显示图书列表 95 4.5 资源 96 4.6 小结 96 第5章 Intent 97 5.1 Android Intent基础知识 97 5.2 Android中可用的Intent 98 5.3 Intent的组成 100 5.3.1 Intent和数据URI 100 5.3.2 一般操作 101 5.3.3 使用extra信息 102 5.3.4 使用组件直接调用活动 103 5.3.5 Intent类别 104 5.3.6 将Intent解析为组件的规则 106 5.4 练习使用ACTION_PICK 108 5.5 练习使用GET_CONTENT操作 110 5.6 挂起的Intent 111 5.7 资源 112 5.8 小结 113 第6章 构建用户界面和使用控件 114 6.1 Android中的UI开发 114 6.1.1 完全利用代码来构建UI 115 6.1.2 完全使用XML构建UI 117 6.1.3 使用XML结合代码构建UI 118 6.2 Android中的常见控件 120 6.2.1 文本控件 120 6.2.2 按钮控件 123 6.2.3 ImageView控件 131 6.2.4 日期和时间控件 132 6.2.5 MapView控件 134 6.3 适配器 134 6.3.1 SimpleCursorAdapter 135 6.3.2 了解ArrayAdapter 136 6.4 结合使用适配器和AdapterView 138 6.4.1 基本的列表控件:ListView 138 6.4.2 GridView控件 145 6.4.3 Spinner控件 146 6.4.4 Gallery控件 148 6.4.5 创建自定义适配器 148 6.4.6 Android中的其他控件 153 6.5 样式和主题 154 6.5.1 使用样式 154 6.5.2 使用主题 156 6.6 布局管理器 157 6.6.1 LinearLayout布局管理器 157 6.6.2 TableLayout布局管理器 160 6.6.3 RelativeLayout布局管理器 163 6.6.4 FrameLayout布局管理器 165 6.6.5 为各种设备配置自定义布局 167 6.7 使用Hierarchy Viewer调试和优化布局 168 6.8 参考资料 171 6.9 小结 171 第7章 使用菜单 172 7.1 Android菜单 172 7.1.1 创建菜单 173 7.1.2 使用菜单组 174 7.2 响应菜单项 175 7.3 创建测试工具来测试菜单 176 7.4 使用其他菜单类型 182 7.4.1 展开的菜单 182 7.4.2 使用图标菜单 182 7.4.3 使用子菜单 183 7.4.4 配置系统菜单 183 7.4.5 使用上下文菜单 184 7.4.6 使用交替菜单 186 7.4.7 使用菜单响应数据变化 189 7.5 通过XML文件加载菜单 189 7.5.1 XML菜单资源文件的结构 189 7.5.2 填充XML菜单资源文件 190 7.5.3 响应基于XML的菜单项 190 7.5.4 其他XML菜单标记简介 191 7.6 资源 192 7.7 小结 192 第8章 使用对话框 193 8.1 使用Android中的对话框 193 8.1.1 设计提醒对话框 193 8.1.2 设计提示对话框 195 8.1.3 Android对话框的特性 199 8.1.4 重新设计提示对话框 200 8.2 使用托管对话框 200 8.2.1 理解托管对话框协议 201 8.2.2 将非托管对话框重新转换为托管对话框 201 8.2.3 简化托管对话框协议 202 8.3 使用Toast 209 8.4 资源 210 8.5 小结 210 第9章 管理和组织首选项 211 9.1 探索首选项框架 211 9.1.1 ListPreference 211 9.1.2 CheckBoxPreference 219 9.1.3 EditTextPreference 220 9.1.4 RingtonePreference 222 9.2 组织首选项 223 9.3 以编程方式操作首选项 226 9.4 使用首选项保存状态 226 9.5 参考资料 227 9.6 小结 228 第10章 探索安全性和权限 229 10.1 理解Android安全性模型 229 10.1.1 安全性概念概述 229 10.1.2 为部署签名应用程序 230 10.2 执行运行时安全性检查 234 10.2.1 进程边界上的安全性 235 10.2.2 声明和使用权限 235 10.2.3 理解和使用自定义权限 237 10.2.4 理解和使用URI权限 241 10.3 参考资料 243 10.4 小结 243 第11章 构建和使用服务 244 11.1 使用HTTP服务 244 11.1.1 将HttpClient用于HTTPGET请求 244 11.1.2 将HttpClient用于HTTPPOST请求(多部分POST请求示例) 246 11.1.3 SOAP、JSON和XML分析程序 248 11.1.4 处理异常 249 11.1.5 解决多线程问题 251 11.1.6 有趣的超时 253 11.1.7 使用HttpURLConnection 254 11.1.8 使用AndroidHttpClient 254 11.1.9 使用后台线程(AsyncTask) 255 11.1.10 使用AsyncTask处理配置更改 260 11.1.11 使用DownloadManager获取文件 265 11.2 使用Android服务 270 11.2.1 Android中的服务 270 11.2.2 本地服务 271 11.2.3 AIDL服务 277 11.2.4 在AIDL中定义服务接口 278 11.2.5 实现AIDL接口 280 11.2.6 从客户端应用程序调用服务 282 11.2.7 向服务传递复杂的类型 285 11.3 使用服务的真实示例 294 11.3.1 Google翻译API 294 11.3.2 使用Google翻译API 295 11.4 参考资料 303 11.5 小结 303 第12章 包 304 12.1 包和进程 304 12.1.1 包规范的细节 304 12.1.2 将包名称转换为进程名称 304 12.1.3 列出安装的包 305 12.1.4 通过包浏览器删除包 305 12.2 包签名过程回顾 306 12.2.1 理解数字签名:场景1 306 12.2.2 理解数字签名:场景2 306 12.2.3 一种理解数字签名的模式 307 12.2.4 数字签名执行方式 307 12.2.5 签名过程的影响 307 12.3 在包之间共享数据 308 12.3.1 共享用户ID的性质 308 12.3.2 共享数据的代码模式 309 12.4 库项目 309 12.4.1 库项目的概念 310 12.4.2 库项目的性质 310 12.4.3 创建库项目 312 12.4.4 创建使用库的Android项目 314 12.5 参考资料 320 12.6 小结 320 第13章 处理程序 321 13.1 Android组件和线程 321 13.1.1 活动在主线程上运行 322 13.1.2 广播接收程序在主线程上运行 322 13.1.3 服务在主线程上运行 322 13.1.4 ContentProvider在主线程上运行 322 13.1.5 单一主线程的影响 323 13.1.6 线程池、ContentProvider、外部服务组件 323 13.1.7 线程实用程序:发现线程 323 13.2 处理程序 324 13.2.1 持有主线程的影响 325 13.2.2 使用处理程序延迟主线程上的工作 325 13.2.3 延迟工作的处理程序源代码示例 327 13.2.4 构造合适的Message对象 327 13.2.5 将Message对象发送给队列 328 13.2.6 响应handleMessage回调 328 13.3 使用工作线程 328 13.3.1 从菜单调用工作线程 329 13.3.2 在工作线程与主线程之间通信 330 13.3.3 线程行为概述 332 13.4 处理程序示例驱动程序类 332 13.4.1 驱动程序活动文件 333 13.4.2 布局文件 336 13.4.3 菜单文件 336 13.4.4 描述文件 336 13.5 组件和进程寿命 337 13.5.1 活动生命周期 337 13.5.2 服务生命周期 338 13.5.3 接收程序生命周期 338 13.5.4 提供程序生命周期 339 13.6 代码编译说明 339 13.6.1 从ZIP文件创建项目 339 13.6.2 从代码清单创建项目 340 13.7 参考资料 340 13.8 小结 341 第14章 广播接收程序和长期运行的服务 342 14.1 广播接收程序 342 14.1.1 发送广播 342 14.1.2 编写简单的接收程序:示例代码 343 14.1.3 在描述文件中注册接收程序 344 14.1.4 发送测试广播 344 14.1.5 容纳多个接收程序 348 14.1.6 进程外接收程序项目 349 14.2 从接收程序使用通知 350 14.2.1 通过通知管理器监控通知 350 14.2.2 发送通知 352 14.3 长期运行的接收程序和服务 354 14.3.1 长期运行的广播接收程序协议 355 14.3.2 IntentService 356 14.3.3 IntentService源代码 356 14.4 为广播接收程序扩展IntentService 358 14.4.1 长期运行的广播服务抽象 358 14.4.2 长期运行的接收程序 360 14.4.3 使用LightedGreenRoom抽象唤醒锁 362 14.5 长期运行的服务的实现 367 14.5.1 非粘滞性服务的细节 368 14.5.2 粘滞性服务的细节 368 14.5.3 非粘滞性的变体:重传送(redeliver)Intent 368 14.5.4 在onStartCommand中指定服务标志 369 14.5.5 挑选合适的粘滞性 369 14.5.6 从两个位置控制唤醒锁 369 14.5.7 长期运行的服务的实现 369 14.5.8 测试长期运行的服务 371 14.6 代码编译说明 372 14.6.1 从ZIP文件创建项目 372 14.6.2 通过代码清单创建项目 372 14.7 参考资料 374 14.8 小结 374 第15章 闹钟管理器 375 15.1 闹钟管理器基本知识:设置一个简单的闹钟 375 15.1.1 获取闹钟管理器 375 15.1.2 设置闹钟时间 375 15.1.3 设置闹钟接收程序 376 15.1.4 创建适合闹钟的PendingIntent 377 15.1.5 设置闹钟 377 15.1.6 测试项目 378 15.2 探索其他闹钟管理器场景 384 15.2.1 设置重复闹钟 384 15.2.2 取消闹钟 386 15.2.3 使用多个闹钟 388 15.2.4 Intent在设置闹钟时的首要职责 391 15.2.5 闹钟的持久化 394 15.3 闹钟管理器事实 394 15.4 参考资料 394 15.5 小结 395 第16章 2D动画揭秘 396 16.1 逐帧动画 396 16.1.1 计划逐帧动画 396 16.1.2 创建活动 398 16.1.3 将动画添加到活动 399 16.2 布局动画 401 16.2.1 基本的补间动画类型 402 16.2.2 计划布局动画测试工具 402 16.2.3 创建活动和ListView 403 16.2.4 将ListView制作成动画 405 16.2.5 使用插值器 408 16.3 视图动画 409 16.3.1 理解视图动画 409 16.3.2 添加动画 412 16.3.3 使用Camera实现2D图像的深度效果 415 16.3.4 探索AnimationListener类 416 16.3.5 关于变换矩阵的一些说明 416 16.4 资源 417 16.5 小结 418 第17章 地图和基于位置的服务 419 17.1 地图包 419 17.1.1 从Google获取map-api密钥 419 17.1.2 MapView和MapActivity 421 17.1.3 使用覆盖图添加标记 426 17.2 位置包 431 17.2.1 使用Android进行地理编码 431 17.2.2 使用后台线程进行地理编码 434 17.2.3 LocationManager服务 437 17.2.4 使用MyLocationOverlay显示位置 443 17.2.5 使用接近提醒 447 17.3 参考资料 451 17.4 小结 451 第18章 电话API 452 18.1 使用SMS 452 18.1.1 发送SMS消息 452 18.1.2 监视传入的SMS消息 455 18.1.3 使用SMS文件夹 457 18.1.4 发送电子邮件 459 18.2 使用电话管理器 459 18.3 SIP 462 18.4 参考资料 464 18.5 小结 464 第19章 媒体框架 465 19.1 使用媒体API 465 19.2 播放媒体 468 19.2.1 播放音频内容 469 19.2.2 播放视频内容 478 19.3 录制媒体 481 19.3.1 使用MediaRecorder录制音频 481 19.3.2 使用AudioRecord录制音频 485 19.3.3 视频录制 489 19.3.4 MediaStore类 497 19.3.5 使用Intnet录制音频 498 19.3.6 将媒体内容添加到媒体存储 501 19.3.7 为整个SD卡触发MediaScanner 503 19.3.8 参考资料 503 19.4 小结 503 第20章 使用OpenGL进行3D图形编程 504 20.1 了解OpenGL的历史和背景 505 20.1.1 OpenGL ES 505 20.1.2 OpenGL ES与Java ME 506 20.1.3 M3G:另一种Java ME 3D图形标准 506 20.2 OpenGL的基本原理 507 20.2.1 使用OpenGL ES进行基本绘制 507 20.2.2 OpenGL照相机和坐标 512 20.3 在Android中使用OpenGL ES 515 20.3.1 使用GLSurfaceView和相关类 515 20.3.2 实现Renderer 515 20.3.3 通过Activity使用GLSurfaceView 518 20.3.4 更改照相机设置 523 20.3.5 使用索引添加另一个三角形 524 20.3.6 为简单的OpenGL三角形制作动画 526 20.4 OpenGL的运用:形状和纹理 528 20.4.1 绘制矩形 528 20.4.2 使用形状 530 20.4.3 使用纹理 541 20.4.4 绘制多个图形 546 20.5 OpenGL ES 2.0 548 20.5.1 针对OpenGL ES 2.0的Java绑定 549 20.5.2 呈现步骤 552 20.5.3 着色器 552 20.5.4 将着色器编译到程序中 553 20.5.5 访问着色器程序变量 555 20.5.6 简单的ES 2.0三角形 555 20.5.7 关于OpenGL ES 2.0的更多阅读材料 558 20.6 代码编译说明 559 20.7 小结 560 第21章 活动文件夹 561 21.1 探索活动文件夹 561 21.1.1 用户如何使用活动文件夹 562 21.1.2 构建活动文件夹 565 21.2 代码编译说明 573 21.3 参考资料 573 21.4 小结 573 第22章 主屏幕部件 575 22.1 主屏幕部件的架构 575 22.1.1 什么是主屏幕部件 575 22.1.2 主屏幕部件的用户体验 576 22.1.3 部件的生命周期 578 22.2 示例部件应用程序 582 22.2.1 定义部件提供程序 583 22.2.2 定义部件尺寸 584 22.2.3 与部件布局相关的文件 586 22.2.4 实现部件提供程序 586 22.2.5 实现部件模型 589 22.2.6 实现部件配置活动 595 22.3 部件局限性和扩展 598 22.4 资源 599 22.5 小结 599 第23章 Android搜索 600 23.1 Android搜索体验 600 23.1.1 探索Android全局搜索 601 23.1.2 为全局搜索启用建议提供程序 606 23.2 活动与搜索键交互 608 23.2.1 常规活动上的搜索键行为 609 23.2.2 禁用了搜索的活动的行为 615 23.2.3 通过菜单显式调用搜索 617 23.2.4 本地搜索和相关活动 620 23.2.5 启用键入搜索 625 23.3 实现简单建议提供程序 626 23.3.1 计划简单建议提供程序 626 23.3.2 简单建议提供程序实现文件 626 23.3.3 实现SimpleSuggestion-Provider类 627 23.3.4 简单建议提供程序搜索活动 630 23.3.5 搜索调用方活动 634 23.3.6 简单建议提供程序用户体验 636 23.4 实现自定义建议提供程序 638 23.4.1 计划自定义建议提供程序 638 23.4.2 SuggestURLProvider项目实现文件 639 23.4.3 实现SuggestUrlProvider类 639 23.4.4 实现自定义建议提供程序的搜索活动 647 23.4.5 自定义建议提供程序描述文件 652 23.4.6 自定义建议用户体验 653 23.5 使用操作键和应用程序特有的搜索数据 655 23.5.1 在Android搜索中使用操作键 655 23.5.2 使用应用程序特定的搜索上下文 658 23.6 资源 659 23.7 对平板电脑的意义 659 23.8 小结 660 第24章 文本到语音转换 661 24.1 Android中的文本到语音转换 661 24.2 使用语段跟踪语音 665 24.3 使用音频文件代替话音 666 24.4 TTS引擎的高级功能 672 24.4.1 设置音频流 673 24.4.2 使用耳标 673 24.4.3 播放静音 674 24.4.4 选择不同的文本到语音转换引擎 674 24.4.5 使用语言方法 674 24.5 参考资料 675 24.6 小结 676 第25章 触摸屏 677 25.1 MotionEvent 677 25.1.1 MotionEvent 对象 677 25.1.2 回收MotionEvent 687 25.1.3 使用VelocityTracker 687 25.1.4 探索拖放操作 689 25.2 多点触摸 692 25.2.1 Android2.2之前的多点触摸 692 25.2.2 自Android 2.2开始的多点触摸 699 25.3 触摸地图 699 25.4 手势 702 25.4.1 捏合手势 702 25.4.2 GestureDetector和OnGestureListener 705 25.4.3 自定义手势 707 25.4.4 Gestures Builder应用程序 708 25.5 参考资料 713 25.6 小结 714 第26章 传感器 715 26.1 什么是传感器 715 26.1.1 检测传感器 716 26.1.2 可以了解的传感器信息 716 26.2 获取传感器事件 718 26.3 解释传感器数据 727 26.3.1 光线传感器 727 26.3.2 接近传感器 727 26.3.3 温度传感器 727 26.3.4 压力传感器 728 26.3.5 陀螺仪传感器 728 26.3.6 加速度计 728 26.3.7 磁场传感器 733 26.3.8 结合使用加速度计和磁场传感器 734 26.3.9 方向传感器 734 26.3.10 磁偏角和GeomagneticField 740 26.3.11 重力传感器 740 26.3.12 直线加速度传感器 740 26.3.13 旋转矢量传感器 740 26.3.14 近场通信传感器 741 26.4 参考资料 749 26.5 小结 749 第27章 联系人API 750 27.1 账户 750 27.1.1 账户屏幕概览 750 27.1.2 账户与联系人的相关性 754 27.1.3 枚举账户 754 27.2 联系人应用程序 754 27.2.1 显示联系人 755 27.2.2 显示联系人详细信息 755 27.2.3 编辑联系人详细信息 756 27.2.4 设置联系人的照片 758 27.2.5 导出联系人 758 27.2.6 各种联系人数据类型 759 27.3 联系人 760 27.3.1 内容SQLite数据库 760 27.3.2 原始联系人 761 27.3.3 数据表 762 27.3.4 聚合联系人 763 27.3.5 view_contacts 765 27.3.6 contact_entities_view 765 27.4 联系人API 766 27.4.1 浏览账户 766 27.4.2 浏览聚合联系人 773 27.4.3 浏览原始联系人 781 27.4.4 浏览原始联系人数据 785 27.4.5 添加联系人和它的详细信息 788 27.5 控制聚合 790 27.6 同步的影响 791 27.7 参考资料 792 27.8 小结 792 第28章 使用Android Market 793 28.1 成为发布者 793 28.1.1 遵守规则 794 28.1.2 开发人员控制台 795 28.2 准备销售应用程序 798 28.2.1 针对不同设备进行测试 798 28.2.2 支持不同的屏幕尺寸 798 28.2.3 准备上传AndroidManifest.xml 799 28.2.4 本地化应用程序 800 28.2.5 准备应用程序图标 800 28.2.6 付费应用程序考虑因素 801 28.2.7 将用户引导至Market 801 28.2.8 Android授权服务 802 28.2.9 准备上传.apk文件 802 28.3 上传应用程序 803 28.4 Android Market上的用户体验 805 28.5 更多发布途径 806 28.6 参考资料 807 28.7 小结 807 第29章 多用途的碎片 808 29.1 什么是碎片 808 29.1.1 何时使用碎片 809 29.1.2 碎片的结构 809 29.1.3 碎片的生命周期 810 29.1.4 展示生命周期的示例碎片应用程序 814 29.2 FragmentTransactions和碎片后退栈 821 29.3 FragmentManager 823 29.3.1 引用碎片时的注意事项 824 29.3.2 ListFragments和fragment 824 29.3.3 在需要时调用独立的活动 828 29.3.4 碎片的持久化 830 29.4 对话框碎片 831 29.4.1 DialogFragment基础知识 831 29.4.2 DialogFragments示例应用程序 835 29.5 碎片之间的更多通信方式 846 29.6 使用ObjectAnimator自定义动画 847 29.7 参考资料 849 29.8 小结 850 第30章 ActionBar 851 30.1 ActionBar剖析 851 30.2 选项卡导航操作栏活动 852 30.2.1 实现基础活动类 853 30.2.2 为ActionBar分配统一的行为 855 30.2.3 实现选项卡监听器 857 30.2.4 实现选项卡操作栏活动 858 30.2.5 可滚动的调试文本视图布局 860 30.2.6 操作栏和菜单交互 861 30.2.7 Android描述文件 863 30.2.8 测试选项卡操作栏活动 863 30.3 列表导航操作栏活动 864 30.3.1 创建SpinnerAdapter 864 30.3.2 创建列表监听器 865 30.3.3 设置列表操作栏 865 30.3.4 更改BaseActionBar-Activity 866 30.3.5 更改AndroidManifest.xml 866 30.3.6 测试列表操作栏活动 867 30.4 标准导航操作栏活动 868 30.4.1 标准导航操作栏活动 868 30.4.2 更改BaseActionBar-Activity 869 30.4.3 更改AndroidManifest.xml 870 30.4.4 测试标准操作栏活动 870 30.5 参考资料 871 30.6 小结 872 第31章 3.0版中的更多主题 873 31.1 基于列表的主屏幕部件 873 31.1.1 3.0版中新的远程视图 873 31.1.2 在远程视图中使用列表 875 31.1.3 应用示例:测试主屏幕列表部件 885 31.1.4 对测试列表部件进行测试 893 31.2 拖放 894 31.2.1 3.0版中拖放的基础知识 894 31.2.2 拖放示例应用程序 895 31.2.3 测试示例拖放应用程序 905 31.3 参考资料 906 31.4 小结 907 前言   你是否曾希望自己是罗丹?坐着用凿子雕琢着一块石头,将它塑造成你想要的样子。由于害怕无法“雕琢”出实用的应用程序,主流程序员曾经十分排斥资源严重受限的移动设备。不过那段时光已经一去不复返了。   Android将可编程设备难以置信的应用领域带到了你的门前。本书将证实Android是出色的编程平台,从而打消你的疑虑。面对这个激动人心、功能强大的通用计算平台,Java程序员很有可能会从中获益。Android令我们非常激动,因为它是一个先进的平台,引入了框架设计上的众多新模式(即使受移动平台所限)。   这是这本关于Android主题的书的第3版,也是目前为止最出色的版本。本书是一部蕴含丰富内容的编程指南。在这一版中,我们重新定义、重新编写并改进了上一版中的所有内容,打造了一部全面更新且同时适合初学者和专业人员的编程指南——我们3年的研究结晶。本书用31章涵盖了100多个主题。这一版介绍了Android的2.3和3.0版,它们分别是针对移动电话和平板电脑而优化的Android版本。   这一版增加了Android内部构件的相关知识,介绍了线程、进程、长期运行的服务、广播接收器和闹钟管理器。这一版还介绍了更多UI控件。本书用150多页专门介绍了3.0版,包括碎片、碎片对话框、ActionBar和拖放。本书还对与服务和传感器内容相关的章节做了大幅改进,同时也对介绍OpenGL的章节做了修订,涵盖了OpenGL ES 2.0。   概念、代码和教程是本书的基本要素,这在本书中的每一章都有所体现。每章中自成一体的教程都有专家建议。本书中的所有项目都可供下载,以方便导入Eclipse。我们付出了艰辛努力,保证这些代码无需本书也可以编译。每个项目中包含的文件列表都已在每章中明确分类和列出,以方便参考。   本书涵盖的领域包括一些关键概念,比如资源、Intent、Contentprovider、进程、线程、UI控件、广播接收器、服务和长期运行的服务。我们为OpenGL初学者提供大量OpenGL ES 1.0及OpenGL ES 2.0的信息。本书还用大量篇幅介绍了文本语音转换技术、传感器和多点触摸技术。书中还合并了大量3.0版的主题,包括碎片、碎片对话框、ActionBar和拖放。   最后,本书不再限于介绍基本知识,还针对每个主题提出了一些复杂问题,并记录问题答案(请参阅目录以了解书中所涉及内容的详细列表)。我们会不断用当前和未来的Android SDK研究成果来更新辅助性网站(www.androidbook.com)。在阅读过程中,如有任何疑问,可通过电子邮件快速获得我们的解答。    序言   所有这一切已曾发生,所有这一切还会再发生。复杂系统和模式从一系列环境交互中诞生的方式正是涌现理论。   而且,这一切似曾相识。   当我在1985年开始编程时,世面上存在着各式各样的PC。在我刚学会Apple II C时,我的朋友有使用Commodore 128、Tandy CoCo 3的,还有使用Atari计算机的。我们每个人都在自己环境的约束下成长着,很少能分享自己的工作。当运行Microsoft DOS的价格适中的IBM仿制计算机诞生时,开发人员开始看到它所创造的市场价值,DOS生态系统内的快速演化也已开始发生。最终,微软公司在PC市场中占据了主导地位,而且这一地位一直保持至今。   2003年,当我开始接触移动编程时,该生态系统看起来与1985年没什么两样。可以通过众多途径实现你的愿景,从Microsoft .NET CF到Java Micro Edition,再到BREW。但就像我与朋友合作编写的游戏一样,应用程序被孤立在我们所选的生态系统中。   随着2011年的到来,通过向众多硬件供应商普及Android操作系统,Google有望成为移动领域的微软。可能正是出于此原因,你选择了本书并正在阅读序言。无论你是一名(移动领域演进)历史研究人员,还是跟我一样是名开发者,能够亲历这一过程应该是很幸运了。   我们带来了好消息!在本书这一版中,我们付出了艰辛的努力,力求为你提供工具来实现头脑中浮现的想法。无论是设置开发环境的基本知识,还是部署到市场,我们都有所涉及。当然,这是一段漫长的旅程,所以我们还是走寻常路,但同时将提供大量参考资料供你自行钻研。   旅途愉快,祝你好运!   ——Dylan Phillips    媒体评论   “本书涵盖了大量的基础概念,其中一些概念是Android所独有的,作者对每一概念都诠释得细致入微。我被Android这一成熟的编程平台深深吸引!”   ——亚马逊读者评论   
zip
发布资源于 8 年前

精通Android 3--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《精通Android 3》的随书源代码 对应的书籍资料见: 精通Android 3(亚马逊畅销书,读者好评如潮,涉及版本2.3和3.0) 基本信息 原书名: Pro Android 3 原出版社: Apress 作者: (印)Satya Komatineni    (美) Sayed Hashimi    Dave MacLean 译者: 杨越 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:978711526
pdf
发布资源于 8 年前

Android开发入门教程--源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Android开发入门教程》的随书源代码 对应的书籍资料见: Android开发入门教程(汇集Android社区智慧图) 基本信息 原书名: Beginning Android 2 原出版社: Apress 作者: (美)Mark L.Murphy 译者: 李雪飞 吴明晖 丛书名: 图灵程序设计丛书 移动开发类 出版社:人民邮电出版社 ISBN:9787115241160 上架时间:2010-11-23 出版日期:2010 年12月 开本:16开 页码:293 版次:1-1 内容简介   《android开发入门教程》是一部关于android 2开发的基础教程。书中结合简单实例,讲解了创建用户界面、内置的web浏览器组件、菜单开发、sdk工具、多媒体、content provider、位置服务、地图api、多点触摸,以及android 2新增特性。   《android开发入门教程》适合对android平台感兴趣的移动开发人员参考学习。 作译者 作者:(美国)墨菲(Mark L.Murphy) 译者:李雪飞 吴明晖 目录 封面 -13 封底 -12 扉页 -11 版权 -10 版权声明 -9 前言 -8 目录 -6 第1章 Android开发概述 1 1.1 智能手机编程的挑战 1 1.2 Android由哪些部分构成 2 1.3 你能够控制什么 3 第2章 项目和目标 4 2.1 基本概念 4 2.2 创建项目 5 2.3 项目结构 5 2.3.1 根目录 5 2.3.2 主Activity 6 2.3.3 资源 6 2.3.4 编译结果 7 2.4 AndroidManifest.xml文件 7 2.4.1 一开始是根元素 8 2.4.2 权限、编排和应用程序 8 2.4.3 应用程序总要做点什么 9 2.4.4 确保最大兼容性 10 2.4.5 版本=控制 10 2.5 模拟器和目标 11 2.5.1 虚拟设备 11 2.5.2 设定目标 13 第3章 简单的应用程序 14 3.1 创建项目 14 3.2 剖析Activity 15 3.3 构建和运行Activity 17 第4章 基于XML的布局 18 4.1 何谓基于XML的布局 18 4.2 为什么使用基于XML的布局 18 4.3 举个例子 19 4.4 什么时候加@符号 20 4.5 怎样在Java中使用布局文件 20 4.6 把故事讲完 20 第5章 使用基本的部件 22 5.1 标签 22 5.2 按钮 23 5.3 图像 23 5.4 字段 24 5.5 复选框 25 5.6 单选按钮 27 5.7 视图 28 5.7.1 特性 28 5.7.2 方法 29 5.7.3 颜色 29 第6章 使用容器 30 6.1 线性布局 30 6.1.1 LinearLayout的概念和特性 30 6.1.2 LinearLayout示例 33 6.2 相对布局 36 6.2.1 RelativeLayout的概念和属性 36 6.2.2 RelativeLayout示例 37 6.3 表格布局 40 6.3.1 TableLayout的概念和特性 40 6.3.2 TableLayout示例 42 6.4 滚动 42 第7章 使用选择部件 45 7.1 适配器 45 7.2 列表 46 7.3 微调控件 49 7.4 网格 51 7.5 自动完成字段(至少减少35%的输入) 53 7.6 画廊 55 第8章 使用列表 57 8.1 初步改进 57 8.2 动态列表 58 8.3 更好,更快,更强 60 8.3.1 使用convertView 61 8.3.2 使用持有者模式 62 8.4 交互式列表 64 8.5 可重用列表 68 8.6 选用其他适配器 74 第9章 高级部件和容器 75 9.1 选择日期和时间 75 9.2 时钟 78 9.3 进度条 79 9.4 滑动选择 79 9.5 选项卡 80 9.5.1 构建 80 9.5.2 规则 80 9.5.3 使用 81 9.5.4 增强 83 9.5.5 Intent和View 84 9.6 翻转 85 9.6.1 手工翻转 86 9.6.2 动态添加内容 87 9.6.3 自动翻转 88 9.7 滑动的抽屉 89 9.8 其他容器 91 第10章 输入法框架 92 10.1 键盘,硬还是软 92 10.2 按需定制 92 10.3 修改附属键 95 10.4 适应布局 96 10.5 释放创造力 97 第11章 使用菜单 98 11.1 选项菜单 98 11.1.1 创建选项菜单 98 11.1.2 添加菜单项和子菜单 99 11.2 上下文菜单 100 11.3 简单的示例 100 11.4 扩展的示例 104 11.4.1 菜单的XML结构 104 11.4.2 菜单项与XML 105 11.4.3 创建菜单 106 第12章 字体 107 12.1 珍惜已有字体 107 12.2 更多字体 108 12.3 字形介绍 109 第13章 嵌入WebKit浏览器 111 13.1 小型浏览器 111 13.2 加载内容 112 13.3 导航内容 113 13.4 扩展应用程序 114 13.5 设置、首选项和选项 115 第14章 显示弹出消息 116 14.1 弹出Toast 116 14.2 提醒框 117 14.3 检查效果 117 第15章 处理线程 120 15.1 了解处理程序 120 15.1.1 消息 120 15.1.2 Runnable 123 15.2 就地运行 123 15.3 我的UI线程到哪去了 123 15.4 异步观感 123 15.4.1 原理 124 15.4.2 AsyncTask、泛型和Vararg 124 15.4.3 AsyncTask的各个阶段 125 15.4.4 示例任务 125 15.5 附加说明 129 第16章 处理Activity生命周期事件 130 16.1 Activity的状态 130 16.2 Activity的生命周期 131 16.2.1 onCreate()和onDestroy() 131 16.2.2 onStart()、onRestart()和onStop() 131 16.2.3 onPause()和onResume() 131 16.3 优美的状态 132 第17章 创建Intent过滤器 133 17.1 你有什么意图 133 17.1.1 Intent组成 133 17.1.2 Intent路由 134 17.2 叙述Intent 135 17.3 缩小接收器范围 136 17.4 暂停警告 137 第18章 启动活动和子活动 138 18.1 对等活动和子活动 138 18.2 启动 139 18.2.1 制作Intent 139 18.2.2 进行调用 139 18.3 多标签浏览 142 第19章 处理旋转 145 19.1 销毁问题 145 19.2 异同 145 19.3 更多保存 149 19.4 DIY旋转 151 19.5 强制解决问题 152 19.6 综述 154 第20章 处理资源 156 20.1 资源 156 20.2 字符串理论 156 20.2.1 纯文本字符串 157 20.2.2 字符串格式 157 20.2.3 样式文本 157 20.2.4 样式字符串格式 158 20.3 获取图片 160 20.4 XML:资源之路 162 20.5 杂项 164 20.5.1 维度 164 20.5.2 颜色 165 20.5.3 数组 165 20.5.4 因人而异 166 第21章 使用首选项 171 21.1 获取想要的内容 171 21.2 编辑首选项 172 21.3 目前的框架 172 21.4 让用户自己选择 173 21.5 添加“分层”结构 176 21.6 弹出对话框 177 第22章 管理和访问本地数据库 180 22.1 数据库示例 180 22.2 SQLite快速入门 181 22.3 从头开始 182 22.4 设置表 184 22.5 数据 184 22.6 有因必有果 185 22.6.1 Raw查询 186 22.6.2 常规查询 186 22.6.3 使用构造器进行构建 186 22.6.4 使用Cursor 187 22.7 无所不在的数据 188 第23章 访问文件 190 23.1 使用的数据 190 23.2 读取与写入 192 第24章 充分利用Java库 196 24.1 外部限制 196 24.2 Ant和JAR 197 24.3 参照脚本 197 24.4 滴酒不沾 200 24.5 评审脚本 200 第25章 通过Internet进行通信 201 25.1 REST和Relaxation 201 25.2 通过Apache HttpClient操作HTTP 201 25.3 解析响应 203 25.4 要考虑的问题 205 第26章 使用内容提供程序 206 26.1 数据片段 206 26.2 获得句柄 207 26.3 查询 207 26.4 适应环境 208 26.5 舍与得 209 26.6 感知BLOB 210 第27章 构建内容提供程序 211 27.1 剖析 211 27.2 类型 212 27.3 创建内容提供程序 212 27.3.1 第一步:创建提供程序类 212 27.3.2 第二步:提供URI 217 27.3.3 第三步:声明属性 218 27.3.4 第四步:更新清单文件 218 27.4 更改通知支持 219 第28章 请求和要求许可 220 28.1 请求许可 220 28.2 声明许可 221 28.2.1 通过清单文件强制实施许可 222 28.2.2 在其他地方强制实施许可 222 28.3 别忘了文档 223 第29章 创建服务 224 29.1 通过类创建服务 224 29.2 单例 225 29.3 清单文件的作用 226 29.4 事件提醒 227 29.4.1 回调 227 29.4.2 广播Intent 228 29.5 远程服务与其他代码 229 第30章 调用服务 230 30.1 联系的纽带 230 30.2 接收广播内容 232 第31章 利用通知提醒用户 234 31.1 发布通知的类型 234 31.1.1 硬件通知 235 31.1.2 图标 235 31.2 查看运行中的通知发布 235 第32章 访问基于位置的服务 238 32.1 位置提供程序:它们知道你藏在哪里 238 32.2 自我定位 239 32.3 移动 240 32.4 我们到了吗 241 32.5 测试 241 第33章 使用MapView和MapActivity显示地图 242 33.1 条款无情 242 33.2 添加项问题 242 33.3 基本要素 243 33.4 练习控制 244 33.4.1 缩放 244 33.4.2 居中 245 33.5 地形起伏 245 33.6 层上加层 245 33.6.1 Overlay类 246 33.6.2 绘制ItemizedOverlay 246 33.6.3 处理屏幕单击 247 33.7 MyLocationOverlay 248 33.8 关键所在 249 第34章 呼叫处理 250 34.1 向管理者报告 250 34.2 亲自进行呼叫 250 第35章 开发工具 253 35.1 层次结构管理 253 35.2 令人愉快的Dalvik调试详细演示 257 35.2.1 日志记录 259 35.2.2 文件推拉 259 35.2.3 屏幕截图 260 35.2.4 位置更新 260 35.2.5 接入呼叫和消息 261 35.3 存储卡 262 35.3.1 创建卡的映像 262 35.3.2 插入卡 263 第36章 处理多种屏幕尺寸 264 36.1 默认设置 264 36.2 多合一 265 36.2.1 考虑规则,而不是位置 265 36.2.2 考虑物理尺寸 266 36.2.3 避免使用实际像素 266 36.2.4 选择可缩放的Drawable 266 36.3 量身定制 267 36.3.1 添加supports-screens 267 36.3.2 资源和资源集 268 36.3.3 查找尺寸 268 36.4 一切都是模拟的 269 36.4.1 密度不同 269 36.4.2 调整密度 270 36.4.3 访问实际设备 270 36.5 充分利用形势 271 36.5.1 用按钮代替菜单 271 36.5.2 使用简单的Activity代替选项卡 271 36.5.3 整合多个Activity 272 36.6 示例:EU4You 272 36.6.1 第一个版本 272 36.6.2 固定字体大小 277 36.6.3 固定大小的图标 278 36.6.4 使用空间 278 36.6.5 不是浏览器会怎样 279 36.7 合作伙伴的错误有哪些 280 第37章 手机的处理 281 37.1 该应用程序包含显式指令 281 37.2 按钮 282 37.3 有保障的市场 282 37.4 细枝末节 283 37.4.1 Archos 5 Android Internet Tablet 283 37.4.2 Motorola CLIQ/DEXT 284 37.4.3 Motorola DROID/Milestone 284 37.4.4 Google/HTC Nexus One 284 37.4.5 Motorola BACKFLIP 284 第38章 处理平台变更 285 38.1 品牌管理 285 38.2 让人头疼的更多问题 286 38.2.1 视图层次结构 286 38.2.2 变更资源 287 38.3 处理API变更 287 38.3.1 检测版本 287 38.3.2 包装API 287 第39章 未来何去何从 292 39.1 问题——部分答案 292 39.2 源代码 292 39.3 获得最新的信息 293 前言   欢迎阅读本书   感谢你对开发Android应用程序怀有浓厚兴趣!毋庸置疑,越来越多的人在访问因特网服务时,都将使用所谓“非传统的”手段,如移动设备。现在我们在这个领域里做得越多,人们就会在这个领域投入更多的钱,从而使得将来构建更强大的移动应用程序会变得更容易。Android还很新(基于Android的设备在2008年底才刚刚出现在市场上),但相信在兼具深度和广度优势的开放手机联盟(Open Handset Alliance)的支持下,它一定能够迅速地发展壮大。   在此,首先感谢你选择这本书,由衷地希望本书能够对你有所帮助,或者至少能让你不时地露出会心一笑。   预备知识   如果你想学习为Android编写应用程序,那么你至少要理解Java编程的基本概念。Android编程使用的是Java语法和一个作为Java SE子集的类库(还有特定于Android的扩展)。如果此前你没有使用Java编写过程序,那在学习Android编程之前恐怕还得补上这一课。   本书不会详细介绍怎样下载或安装Android开发工具,包括基于Eclipse IDE的工具或者其他独立的工具。这些内容都可以在Android网站上查到。本书内容与你是否使用IDE应该没有什么关系 。不过,要是你想试验本书中给出的任何示例,那么恐怕就得下载、安装和测试Android网站上列出的Android开发工具了。   本书中的有些章节可能会引用前面章节的内容。而且,也不是书中的每个示例都会给出完整的源代码;否则本书就太厚了。如果读者想要编写示例,可以从Apress网站(www.apress.com)下载完整的源代码 。   本书版本说明   本书是Apress和CommonsWare合作的产物。你现在看到的是Apress的版本,是纸质的,此外还有针对不同的数字图书服务的电子版,例如Safari版。   CommonsWare会继续在最初文本内容的基础上不断保持更新,并随时提供给Warescription项目的成员,而书名则是The Busy Coder’s Guide to Android Development。   CommonsWare的网站上有关于这一合作关系的FAQ(问答),地址为http://commonsware. com/apress。   源代码及许可   读者可以从www.apress.com下载本书的源代码。如果你想修改或将其中的示例用作其他用途,请注意源代码中的所有Android项目都必须遵循Apaceh 2.0许可,参见www.apache.org/ licenses/LICENSE-2.0.html。   致谢   首先要感谢Android开发团队,不仅谢谢他们奉献了如此优秀的产品,更因为他们在Android Google Groups中提供了无私帮助。特别是,我要感谢Romain Guy、Justin Mattson、Dianne Hackborn、Jean-Baptiste Queru、Jeff Sharkey和Xavier Ducrohet。   本书示例用到的图标由Nuvola图标集 提供:www.icon-king.com/?p=15。
zip
发布资源于 8 年前

Android开发入门教程(汇集Android社区智慧图)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Android开发入门教程(汇集Android社区智慧图) 基本信息 原书名: Beginning Android 2 原出版社: Apress 作者: (美)Mark L.Murphy 译者: 李雪飞 吴明晖 丛书名: 图灵程序设计丛书 移动开发类 出版社:人民邮电出版社 ISBN:9787115241160 上架时间:2010-11-23 出版日期:2010 年12月 开本:16开 页码:293 版次:1-1 内容简介   《android开发入门教程》是一部关于android 2开发的基础教程。书中结合简单实例,讲解了创建用户界面、内置的web浏览器组件、菜单开发、sdk工具、多媒体、content provider、位置服务、地图api、多点触摸,以及android 2新增特性。   《android开发入门教程》适合对android平台感兴趣的移动开发人员参考学习。 作译者 作者:(美国)墨菲(Mark L.Murphy) 译者:李雪飞 吴明晖 目录 封面 -13 封底 -12 扉页 -11 版权 -10 版权声明 -9 前言 -8 目录 -6 第1章 Android开发概述 1 1.1 智能手机编程的挑战 1 1.2 Android由哪些部分构成 2 1.3 你能够控制什么 3 第2章 项目和目标 4 2.1 基本概念 4 2.2 创建项目 5 2.3 项目结构 5 2.3.1 根目录 5 2.3.2 主Activity 6 2.3.3 资源 6 2.3.4 编译结果 7 2.4 AndroidManifest.xml文件 7 2.4.1 一开始是根元素 8 2.4.2 权限、编排和应用程序 8 2.4.3 应用程序总要做点什么 9 2.4.4 确保最大兼容性 10 2.4.5 版本=控制 10 2.5 模拟器和目标 11 2.5.1 虚拟设备 11 2.5.2 设定目标 13 第3章 简单的应用程序 14 3.1 创建项目 14 3.2 剖析Activity 15 3.3 构建和运行Activity 17 第4章 基于XML的布局 18 4.1 何谓基于XML的布局 18 4.2 为什么使用基于XML的布局 18 4.3 举个例子 19 4.4 什么时候加@符号 20 4.5 怎样在Java中使用布局文件 20 4.6 把故事讲完 20 第5章 使用基本的部件 22 5.1 标签 22 5.2 按钮 23 5.3 图像 23 5.4 字段 24 5.5 复选框 25 5.6 单选按钮 27 5.7 视图 28 5.7.1 特性 28 5.7.2 方法 29 5.7.3 颜色 29 第6章 使用容器 30 6.1 线性布局 30 6.1.1 LinearLayout的概念和特性 30 6.1.2 LinearLayout示例 33 6.2 相对布局 36 6.2.1 RelativeLayout的概念和属性 36 6.2.2 RelativeLayout示例 37 6.3 表格布局 40 6.3.1 TableLayout的概念和特性 40 6.3.2 TableLayout示例 42 6.4 滚动 42 第7章 使用选择部件 45 7.1 适配器 45 7.2 列表 46 7.3 微调控件 49 7.4 网格 51 7.5 自动完成字段(至少减少35%的输入) 53 7.6 画廊 55 第8章 使用列表 57 8.1 初步改进 57 8.2 动态列表 58 8.3 更好,更快,更强 60 8.3.1 使用convertView 61 8.3.2 使用持有者模式 62 8.4 交互式列表 64 8.5 可重用列表 68 8.6 选用其他适配器 74 第9章 高级部件和容器 75 9.1 选择日期和时间 75 9.2 时钟 78 9.3 进度条 79 9.4 滑动选择 79 9.5 选项卡 80 9.5.1 构建 80 9.5.2 规则 80 9.5.3 使用 81 9.5.4 增强 83 9.5.5 Intent和View 84 9.6 翻转 85 9.6.1 手工翻转 86 9.6.2 动态添加内容 87 9.6.3 自动翻转 88 9.7 滑动的抽屉 89 9.8 其他容器 91 第10章 输入法框架 92 10.1 键盘,硬还是软 92 10.2 按需定制 92 10.3 修改附属键 95 10.4 适应布局 96 10.5 释放创造力 97 第11章 使用菜单 98 11.1 选项菜单 98 11.1.1 创建选项菜单 98 11.1.2 添加菜单项和子菜单 99 11.2 上下文菜单 100 11.3 简单的示例 100 11.4 扩展的示例 104 11.4.1 菜单的XML结构 104 11.4.2 菜单项与XML 105 11.4.3 创建菜单 106 第12章 字体 107 12.1 珍惜已有字体 107 12.2 更多字体 108 12.3 字形介绍 109 第13章 嵌入WebKit浏览器 111 13.1 小型浏览器 111 13.2 加载内容 112 13.3 导航内容 113 13.4 扩展应用程序 114 13.5 设置、首选项和选项 115 第14章 显示弹出消息 116 14.1 弹出Toast 116 14.2 提醒框 117 14.3 检查效果 117 第15章 处理线程 120 15.1 了解处理程序 120 15.1.1 消息 120 15.1.2 Runnable 123 15.2 就地运行 123 15.3 我的UI线程到哪去了 123 15.4 异步观感 123 15.4.1 原理 124 15.4.2 AsyncTask、泛型和Vararg 124 15.4.3 AsyncTask的各个阶段 125 15.4.4 示例任务 125 15.5 附加说明 129 第16章 处理Activity生命周期事件 130 16.1 Activity的状态 130 16.2 Activity的生命周期 131 16.2.1 onCreate()和onDestroy() 131 16.2.2 onStart()、onRestart()和onStop() 131 16.2.3 onPause()和onResume() 131 16.3 优美的状态 132 第17章 创建Intent过滤器 133 17.1 你有什么意图 133 17.1.1 Intent组成 133 17.1.2 Intent路由 134 17.2 叙述Intent 135 17.3 缩小接收器范围 136 17.4 暂停警告 137 第18章 启动活动和子活动 138 18.1 对等活动和子活动 138 18.2 启动 139 18.2.1 制作Intent 139 18.2.2 进行调用 139 18.3 多标签浏览 142 第19章 处理旋转 145 19.1 销毁问题 145 19.2 异同 145 19.3 更多保存 149 19.4 DIY旋转 151 19.5 强制解决问题 152 19.6 综述 154 第20章 处理资源 156 20.1 资源 156 20.2 字符串理论 156 20.2.1 纯文本字符串 157 20.2.2 字符串格式 157 20.2.3 样式文本 157 20.2.4 样式字符串格式 158 20.3 获取图片 160 20.4 XML:资源之路 162 20.5 杂项 164 20.5.1 维度 164 20.5.2 颜色 165 20.5.3 数组 165 20.5.4 因人而异 166 第21章 使用首选项 171 21.1 获取想要的内容 171 21.2 编辑首选项 172 21.3 目前的框架 172 21.4 让用户自己选择 173 21.5 添加“分层”结构 176 21.6 弹出对话框 177 第22章 管理和访问本地数据库 180 22.1 数据库示例 180 22.2 SQLite快速入门 181 22.3 从头开始 182 22.4 设置表 184 22.5 数据 184 22.6 有因必有果 185 22.6.1 Raw查询 186 22.6.2 常规查询 186 22.6.3 使用构造器进行构建 186 22.6.4 使用Cursor 187 22.7 无所不在的数据 188 第23章 访问文件 190 23.1 使用的数据 190 23.2 读取与写入 192 第24章 充分利用Java库 196 24.1 外部限制 196 24.2 Ant和JAR 197 24.3 参照脚本 197 24.4 滴酒不沾 200 24.5 评审脚本 200 第25章 通过Internet进行通信 201 25.1 REST和Relaxation 201 25.2 通过Apache HttpClient操作HTTP 201 25.3 解析响应 203 25.4 要考虑的问题 205 第26章 使用内容提供程序 206 26.1 数据片段 206 26.2 获得句柄 207 26.3 查询 207 26.4 适应环境 208 26.5 舍与得 209 26.6 感知BLOB 210 第27章 构建内容提供程序 211 27.1 剖析 211 27.2 类型 212 27.3 创建内容提供程序 212 27.3.1 第一步:创建提供程序类 212 27.3.2 第二步:提供URI 217 27.3.3 第三步:声明属性 218 27.3.4 第四步:更新清单文件 218 27.4 更改通知支持 219 第28章 请求和要求许可 220 28.1 请求许可 220 28.2 声明许可 221 28.2.1 通过清单文件强制实施许可 222 28.2.2 在其他地方强制实施许可 222 28.3 别忘了文档 223 第29章 创建服务 224 29.1 通过类创建服务 224 29.2 单例 225 29.3 清单文件的作用 226 29.4 事件提醒 227 29.4.1 回调 227 29.4.2 广播Intent 228 29.5 远程服务与其他代码 229 第30章 调用服务 230 30.1 联系的纽带 230 30.2 接收广播内容 232 第31章 利用通知提醒用户 234 31.1 发布通知的类型 234 31.1.1 硬件通知 235 31.1.2 图标 235 31.2 查看运行中的通知发布 235 第32章 访问基于位置的服务 238 32.1 位置提供程序:它们知道你藏在哪里 238 32.2 自我定位 239 32.3 移动 240 32.4 我们到了吗 241 32.5 测试 241 第33章 使用MapView和MapActivity显示地图 242 33.1 条款无情 242 33.2 添加项问题 242 33.3 基本要素 243 33.4 练习控制 244 33.4.1 缩放 244 33.4.2 居中 245 33.5 地形起伏 245 33.6 层上加层 245 33.6.1 Overlay类 246 33.6.2 绘制ItemizedOverlay 246 33.6.3 处理屏幕单击 247 33.7 MyLocationOverlay 248 33.8 关键所在 249 第34章 呼叫处理 250 34.1 向管理者报告 250 34.2 亲自进行呼叫 250 第35章 开发工具 253 35.1 层次结构管理 253 35.2 令人愉快的Dalvik调试详细演示 257 35.2.1 日志记录 259 35.2.2 文件推拉 259 35.2.3 屏幕截图 260 35.2.4 位置更新 260 35.2.5 接入呼叫和消息 261 35.3 存储卡 262 35.3.1 创建卡的映像 262 35.3.2 插入卡 263 第36章 处理多种屏幕尺寸 264 36.1 默认设置 264 36.2 多合一 265 36.2.1 考虑规则,而不是位置 265 36.2.2 考虑物理尺寸 266 36.2.3 避免使用实际像素 266 36.2.4 选择可缩放的Drawable 266 36.3 量身定制 267 36.3.1 添加supports-screens 267 36.3.2 资源和资源集 268 36.3.3 查找尺寸 268 36.4 一切都是模拟的 269 36.4.1 密度不同 269 36.4.2 调整密度 270 36.4.3 访问实际设备 270 36.5 充分利用形势 271 36.5.1 用按钮代替菜单 271 36.5.2 使用简单的Activity代替选项卡 271 36.5.3 整合多个Activity 272 36.6 示例:EU4You 272 36.6.1 第一个版本 272 36.6.2 固定字体大小 277 36.6.3 固定大小的图标 278 36.6.4 使用空间 278 36.6.5 不是浏览器会怎样 279 36.7 合作伙伴的错误有哪些 280 第37章 手机的处理 281 37.1 该应用程序包含显式指令 281 37.2 按钮 282 37.3 有保障的市场 282 37.4 细枝末节 283 37.4.1 Archos 5 Android Internet Tablet 283 37.4.2 Motorola CLIQ/DEXT 284 37.4.3 Motorola DROID/Milestone 284 37.4.4 Google/HTC Nexus One 284 37.4.5 Motorola BACKFLIP 284 第38章 处理平台变更 285 38.1 品牌管理 285 38.2 让人头疼的更多问题 286 38.2.1 视图层次结构 286 38.2.2 变更资源 287 38.3 处理API变更 287 38.3.1 检测版本 287 38.3.2 包装API 287 第39章 未来何去何从 292 39.1 问题——部分答案 292 39.2 源代码 292 39.3 获得最新的信息 293 前言   欢迎阅读本书   感谢你对开发Android应用程序怀有浓厚兴趣!毋庸置疑,越来越多的人在访问因特网服务时,都将使用所谓“非传统的”手段,如移动设备。现在我们在这个领域里做得越多,人们就会在这个领域投入更多的钱,从而使得将来构建更强大的移动应用程序会变得更容易。Android还很新(基于Android的设备在2008年底才刚刚出现在市场上),但相信在兼具深度和广度优势的开放手机联盟(Open Handset Alliance)的支持下,它一定能够迅速地发展壮大。   在此,首先感谢你选择这本书,由衷地希望本书能够对你有所帮助,或者至少能让你不时地露出会心一笑。   预备知识   如果你想学习为Android编写应用程序,那么你至少要理解Java编程的基本概念。Android编程使用的是Java语法和一个作为Java SE子集的类库(还有特定于Android的扩展)。如果此前你没有使用Java编写过程序,那在学习Android编程之前恐怕还得补上这一课。   本书不会详细介绍怎样下载或安装Android开发工具,包括基于Eclipse IDE的工具或者其他独立的工具。这些内容都可以在Android网站上查到。本书内容与你是否使用IDE应该没有什么关系 。不过,要是你想试验本书中给出的任何示例,那么恐怕就得下载、安装和测试Android网站上列出的Android开发工具了。   本书中的有些章节可能会引用前面章节的内容。而且,也不是书中的每个示例都会给出完整的源代码;否则本书就太厚了。如果读者想要编写示例,可以从Apress网站(www.apress.com)下载完整的源代码 。   本书版本说明   本书是Apress和CommonsWare合作的产物。你现在看到的是Apress的版本,是纸质的,此外还有针对不同的数字图书服务的电子版,例如Safari版。   CommonsWare会继续在最初文本内容的基础上不断保持更新,并随时提供给Warescription项目的成员,而书名则是The Busy Coder’s Guide to Android Development。   CommonsWare的网站上有关于这一合作关系的FAQ(问答),地址为http://commonsware. com/apress。   源代码及许可   读者可以从www.apress.com下载本书的源代码。如果你想修改或将其中的示例用作其他用途,请注意源代码中的所有Android项目都必须遵循Apaceh 2.0许可,参见www.apache.org/ licenses/LICENSE-2.0.html。   致谢   首先要感谢Android开发团队,不仅谢谢他们奉献了如此优秀的产品,更因为他们在Android Google Groups中提供了无私帮助。特别是,我要感谢Romain Guy、Justin Mattson、Dianne Hackborn、Jean-Baptiste Queru、Jeff Sharkey和Xavier Ducrohet。   本书示例用到的图标由Nuvola图标集 提供:www.icon-king.com/?p=15。
pdf
发布资源于 8 年前

MYSQL核心技术手册(第二版)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 MYSQL核心技术手册(第二版) 基本信息 原书名: MySQL in a Nutshell 2 edition 原出版社: O'Reilly Media, Inc. 作者: Russell J.T. Dyer 译者: 李红军 李冬梅 丛书名: 北京华章图文信息有限公司O'Reilly系列 出版社:机械工业出版社 ISBN:9787111268826 上架时间:2009-10-29 出版日期:2009 年9月 开本:16开 页码:554 版次:2-1 内容简介   mysql包含了许多功能,尤其是在mysql 5.0和5.1版本中新增了一些主要的功能和特性。mysql特有的函数或者语句是相当丰富的。这正是本书富有价值的原因。本书令读者可以快速查找到所需要的具体细节,无论是sql关键字还是mysql命令行选项、具体的api信息或管理实用工具。.    本书涵盖了适用于mysql 5.1版本的所有命令和编程信息,其中包括一些新增特性和语言接口,对于列举的大部分语句和函数,给出了它们的用法示例。    本书易于使用,并由权威作者执笔。本书:    ·提供了mysql语句、函数、配置选项和实用工具的一个完整手册。    ·给出了几个指导章节用于帮助新手入门。    ·为php、perl和c语言提供了应用程序编程接口(api)。..    ·在每章的api开头部分提供了简要的指南。    ·新增复制、触发器和存储过程章节。    ·提供了许多mysql的实用示例。    ·给出了一些有用的提示,用于帮助读者克服难题。    无论你为何而使用mysql,本书充满了大量的知识财富,给你节省了许多用于尝试的时间以及令人厌烦的在线搜索。... 作译者   Russell J.T.Dyer是一位自由作家,主要致力于MySQL数据库软件方面的研究,他是MySQL公司知识库(http://www.mysql.com/network/knowledgebase.html)的编辑。他在如下出版物上发表了很多文章,这些出版物包括DevZone(MySQL的一个出版物)、Linux期刊、ONlamp.com、Perl期刊、Red Hat杂志、Sys Admin杂志、TechRepublic、UNIX评论和XML.com。他还是本书英文版第1版的作者。 目录 封面 -19 封底 549 扉页 -18 版权 -17 O`Reilly Media,Inc.介绍 -16 推荐序 -15 译者序 -14 译者简介 -12 作者简介 -11 封面介绍 -11 目录 -10 前言 -6 第一部分 简介和指南 1 第1章 MySQL简介 3 1.1 MySQL的价值 3 1.2 MySQL安装包 4 1.3 MySQL许可证说明 4 1.4 MySQL邮件列表 5 1.5 MySQL相关书籍与出版物 6 第2章 安装MySQL 7 2.1 选择分发版本 7 2.2 UNIX源码分发版 8 2.3 UNIX二进制分发版 10 2.4 Linux RPM分发版 11 2.5 Macintosh OS X分发版 12 2.6 Novell NetWare分发版 14 2.7 Windows分发版 15 2.8 安装后的配置 17 第3章 MySQL基础 20 3.1 mysql客户机 20 3.2 创建数据库和表 21 3.3 显示结果 24 3.4 插入数据 24 3.5 选择数据 25 3.6 排序、限制与分组 26 3.7 分析和处理数据 28 3.8 修改数据 29 3.9 删除数据 31 3.10 查询数据 32 3.11 批量导入数据 33 3.12 命令行界面 35 3.13 小结 36 第二部分 SQL语句和函数 37 第4章 安全、用户语句和函数 39 4.1 语句和函数 40 4.2 按字母排序的SQL语句 40 4.3 按字母排序的函数 51 第5章 数据库和表模式语句 57 第6章 数据操纵语句和函数 117 6.1 按字符分组的语句和函数 117 6.2 按字母表排序的语句和子句 118 6.3 按字母排序的函数 157 第7章 表和服务器管理语句及函数 161 7.1 按字母排序的语句和子句 161 7.2 按字母排序的函数 179 第8章 复制语句和函数 182 8.1 复制的价值 182 8.2 复制过程 183 8.3 复制用户账户 190 8.4 配置服务器 191 8.5 复制数据库和启动复制 194 8.6 开始复制 196 8.7 使用复制备份 197 8.8 按字母排序的SQL语句和函数 198 8.9 复制状态 206 第9章 存储过程语句 211 第10章 聚集子句、聚集函数与子查询 230 10.1 按字母顺序排列的聚集函数 230 10.2 子查询 238 第11章 字符串函数 244 11.1 按类型排序的字符串函数 244 11.2 按字母排序的函数 245 第12章 日期和时间函数 273 12.1 按类型分组的日期和时间函数 274 12.2 按字母表排序的日期和时间函数 274 第13章 数学函数 310 按字母顺序排列的函数 310 第14章 控制流程函数 322 按字母顺序排列的函数 322 第三部分 MySQL服务器与客户端工具 327 第15章 MySQL服务器和客户程序 329 15.1 mysql客户程序 329 15.2 mysqld服务器 336 15.3 mysqld_multi 373 15.4 mysqld_safe 375 第16章 命令行实用工具 378 第四部分 API和连接器 431 第17章 C API 433 17.1 使用C与MySQL 433 17.2 按字母表顺序排列的函数 436 17.3 C API数据类型 464 第18章 Perl API 466 18.1 Perl DBI与MySQL的使用 466 18.2 Perl DBI参考 471 18.3 句柄属性 500 第19章 PHP API 506 19.1 使用PHP与MySQL 506 19.2 按字母顺序排序的PHP MySQL函数 508 第五部分 附录 531 附录A 数据类型 533 附录B 运算符 541 附录C 服务器和环境变量 547 译者序   MySQL是当前数据库市场上最流行的、使用最广泛的、多线程的开放源代码数据库管理系统(DBMS)之一,由Michael“Monty”Widenius在1995年创建,并在双重授权模式下于2000年开始发行。目前,MySQL在全世界的装机量已超过600万台,每天平均有5万人从MySQLAB官方网站和镜像站点下载MySQL安装程序,它几个席卷了整个产业界。MySQL在InfoWorld 2008评选中获得了“最佳开源软件大奖”称号。.   在众多数据库系统解决方案中,PHP或Peri语言与MySQL相结合的方案已被越来越多的网站所采用,尤以LAMP模式(“Linux+Apache+MySQL+PHP或Peri”)最为流行。   MySQL具有跨平台支持、适用面广的特性,它可以在Windows、Mac OS X、Novell NetWare、Linux、FreeBSD系统以及Sun Solaris、IBMAlX、HP-UX等各种UNIX操作系统上运行,它支持健壮的、可靠的、任务关键的应用程序。另外,它还具有较高的安全性和稳定性以满足众多应用项目的需求,具有独立的存储引擎、全文检索与索引等特性。   本书是MySQL领域的一部名著,该版本在第1版的基础上进行了大量的改写,大部分改动是以MySQL 5.1为蓝本的。在内容编排上,首先SAMySQL的历史讲起,介绍了MySQL的价值、使用许可协议以及邮件列表和相关参考书籍,如何在Linux/UNIX、MacOS X、NetWare和Windows平台上安装、配置和测试MySQL数据库,如何通过MySQL客户机登录到MySQU良务器、如何创建数据库、表以及如何操纵表中的数据。接着,介绍了MySQL的各种语句和函数,这包括对数据库、表以及索引和视图的新增、删除、修改、查询等操作以及MySQL的复制过程、存储过程、触发器和MySQL数据库系统的服务器和客户机管理工具等内容。最后,介绍了如何使用C、Perl和PHP语言创建应用程序。本书是为MySQL用户、数据库管理员和开发人员准备的一本综合性参考书。它包含了关于MySQL(包括MySQL 5.0和5.1版本)的详尽信息,全面涵盖了与MySQL相关的从软件安装、配置、日常使用到数据备份与复制以及进行C、Perl与PHP开发相关的所有主题。..   本书以一个共同的目标面向广大读者:在自己的操作系统平台上学习如何最好地配置和使用MySQL以及进行程序开发。无论读者是一个寻找开源数据库系统并准备学习、实践MySQL的新乎,还是有着多年操作大型数据库经验的老手或是数据库管理员,本书都是一本极有价值的参考书,相信本书必将会成为读者案头的实用的技术参考手册。   本书主要由李冬梅和我二人共同完成。李冬梅负责第l部分的1—3章、第3部分的16章以及第4部分的17—19章,我负责其余章节的翻译与全书的统稿工作。另外在翻译过程中,在本书作者的帮助下确认了书中的一些勘误。虽然这些勘误大多数是一些排版或印刷错误,对本书内容的领会并无大碍,但是更正过来可以减少细心读者的疑惑以免影响阅读速度。   感谢机械工业出版杜的陈冀康先生为译者提供翻译本书的机会,特别感谢本书作者RussellDyer先生及时且不厌其烦地就书中许多细节问题为译者进行了解答,前后达十几次,并确认了一些勘误,令译者受益匪浅。机械工业出版杜的编辑们为此书的出版在幕后付出了大量艰苦细致的工作,译者谨向他们表示衷心的感谢。此外,在翻译过程中,我的同事王镇海对本书做了大量的校对工作,李冬梅、杜占源、蔡世友,傅媛、侯世中、刘兴华、徐涵、林勇、白浪等朋友对本书提出了许多宝贵意见,在此对他们表示真挚的谢意。   由于译者知识宽度有限,尽管我们为翻译之精确付出了不懈努力,但书中的翻译疏漏之处可能仍旧存在,欢迎广大读者朋友批评指正。译者也为本书开通了博客,提供本书的勘误,网址为http://hongjunli.blogjava.net或http://www.vifir.com/blog/hongjunli。...   李红军   2009年1月   hjli@w3china.cn    前言   MySQL是目前最流行的开源数据库系统。尽管MySQL是免费的,但它仍然是可靠的和快速的,并在过去曾经使用过Oracle和SQL Server的领域中快速增长起来。感谢MySQL给我们带来这么多实用开发包,使管理变得很容易。在这些应用程序编程接口(application programming interface,API)中,我们很容易地应用MySQL的接口来开发自己的软件。.   本书为MySQL的语句和函数提供了一个快速参考、管理应用程序以及最流行的API。前几章用以帮助读者开启MySQL的大门。同时,每一章中的API以一个入门指南来开始。   在本书编写之际,MySQL 5.0版本是可用的,MySQL 5.1和6.0版本正处于开发中,虽然这两个版本都是可用的,但是当时它们并不稳定。因此你将会发现,在本书中涉及的内容大多数是以5.0.x版本为例来阐述的。另外,在更新的版本中会涉及的新特性本书也会有所提及。   本书目标   本书目标在于为读者提供一个快速参考:   MySQL语句和函数   MySQL服务器、实用程序的命令行选项和配置信息   访问MySQL数据库的最流行的API   本书随后几章是以指南的形式加以讲解,但是我们的中心目标在于填补人们的知识空白。令读者轻松地使用关系数据库。   对于每一个语句或者函数的描述,本书遵循这样的格式:先进行简单的描述性说明,然后深入地探讨其具体用法。如果你了解正在查询的这些语句或者函数,但是记不起它的语法来了,你将能在本书迅速找到它。如果你需要更多的信息来推动你的记忆力或者阐明其可用性,或许你将会在我们解释的第一个句子中发现它。如果你想把它理解得更清楚一些,你可以继续放慢步伐来领会这些语句或者函数。几乎所有语句和函数都提供了示例用法。   总之,本书的目标是,当你阅读它时,你会觉得本书简要但不失完整地阐述了这些细节内容。   本书组织结构   本书分成19个章和3个附录,如下所示。   第一部分 简介和指南   第1章,讲述了MySQL的主要组件以及与MySQL相关的其他一些指导准则。   第2章,描述了在MySQlAB公司所支持的通用操作系统上如何运行MySQL。   第3章,介绍了结构化查询语言(StructuredQuery Language,SQL)和mysql命令行界面。这并不能代替学习SQL和关系数据库的设计,但是它对于读者学习MySQL会有所帮助。   第二部分 SQL语句和函数   第4章,涵盖了与用户账户和安全有关的SQL语句和函数。   第5章,列举、解释并提供了SQL语句和函数的示例,这些语句和函数与创建、修改以及删除数据库、表、索引和视图有关。 .  第6章,涵盖了与数据操纵有关的SQL语句和函数——insert、update和delete。..   第7章,包括了SQL语句和函数的一些细节和示例,这些细节和示例在数据库、表和服务器的管理方面能够派得上用场。   第8章,包括了与复制过程严格有关的SQL语句。这一章也包括了复制过程的指南和解释,同时也阐述了复制状态用以帮助读者解决问题。   第9章,涵盖了相关语句的语法,尤其是与事件、存储过程、触发器和用户定义函数相关的语句。   第10章,主要讲述聚集子句、聚集函数和子查询,并把聚集子句(如6ROUP BY)和聚集函数结合在一起,聚集函数主要用在聚集子句中。同时,也包括了关于子查询的一个指南,因为它们用于聚集数据中。   第11章,涵盖了与操纵字符串数据有关的函数。   第12章,涵盖了与日期和时间相关的函数。   第13章,阐述并列举了与数学运算有关的一些精密函数。   第14章,涵盖了控制流程函数如CASE和IF。   第三部分,MySQL服务器与客户端工具   第15章,涵盖了mysqld daemon和MySQL客户端以及与之对应的选项。同时,本章介绍了用于启动服务器的脚本(如mysqld_safe)。   第16章,描述了管理MySQL服务器和数据的实用程序。同时也包括了像mysqldump这样的备份数据的实用工具。   第四部分,API和连接器   第17章,涵盖了由MySQL的基本C类库所提供的函数。   第18章,介绍了Perl DBI模块,用于从编程浯言Perl中访问MySQL数据库。   第19章,介绍了用于查询和操纵MySQL数据库的PHP函数。   附录   附录A列举了MySQL所支持的所有数据类型。   附录B列举了MySQL操作符,如数学符号以及LIKE和IS NU趾比较操作符。   附录C列举了用于查阅MySQL服务器、客户机和其他实用工具的操作系统的环境变量。   排版约定   在这本书中使用如下的排印约定:   斜体(Itailc)   表示新的条目,网址、电子邮件地址、文件名和文件扩展名。   宽体(Constant width)   用于程序列表,文本中涉及的程序元素,如变量或函数名、数据库、数据类型、环境变量、语句、应用、关键词以及模块。   宽粗体(Consrant width bold)   显示命令或其他应该由用户逐个输入的文本。   宽斜体(Constant width italic)   显示应该由用户提供的值或上下文确定的值进行替换的文本。   使用示例代码   这部分内容可以更好地帮助你完成工作。总的来说,你无需获得授权就可以在你的程序和文档中使用本书的代码,除非你对代码最重要的部分进行了二次加工。例如,使用本书的代码片段编写程序,并不需要特别的许可,但销售或者分发包含本书示例代码的光盘则必须获得许可。引用本书的问题解答或示例代码是不需要授权的,然而,如果要将本书示例中的核心代码放入你的产品文档中,则需要获得许可。   我们重视图书的版权要求,然而并非必需。图书版权通常包括标题、作者、出版商以及ISBN。例如:“MySQL in a Nutshell,Second Edition,by Russell J.T.Dyer.Copyright 2008 Russell J.T.Dyer,978-0-596-51433-4.”   如果你在使用示例代码过程中发现了错误,或者希望获得上述授权,敬请联系我们:permissions@oreilly.com。...    序言   如果说MySQL是开源世界中唯美的一把利剑,那么本书则是驾驭MySQL的圣洁而壳丽的剑谱。.   从红军兄手中拿到本书,认真阅读,发现这是不同寻常的一本书。用心研读了本书,它给我未知的问题带来了答案,终结了潜伏在我内心的疑惑。本书让我不再为维护MySQL而苦恼,因为我熟知了MySQL的命令行参数;不再让我因为查找某个特别的SQL语句而翻遍搜索引擎却难寻解决方法,因为我领略了SQL语句的不尽奥秘;同时不再苦于应用程序无法和MySQL高度集成,依靠书中提供的API,我们可以轻松地在应用程序和MySQL之间搭建起桥梁。除此之外,书中有许多亮点值得我们去发掘。..   书中理论和示例紧密结合,既授之以鱼,又授之以渔,能同时兼具这二者是难能可贵的,也是我欣赏这本书的一个方面。   本书是一本优秀的工具书,它能启迪MySQl爱好者的智慧,让大家在使用MySQL的道路上畅通无阻,也能让大家早日得心应手地使用MySQL。   MySQL是开源世界的一颗启明星,它照亮了开源的道路,使得开源的道路前行得更快更好,而拥有了本书,我们就可以顺利打开通往MySQL殿堂的大门。   本书的出版,将是送给MySQL爱好者和DBA们的一份大礼,希望它能受大家欢迎并能为大家带来帮助,也期待本书能取得成功。...   开源人网站站长   杜占源   2009年1月1日   
pdf
发布资源于 8 年前

Oracle 9i & 10g编程艺术:深入数据库体系结构(09年度畅销榜TOP50)(08年度畅销榜TOP50)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle 9i & 10g编程艺术:深入数据库体系结构(09年度畅销榜TOP50)(08年度畅销榜TOP50) 基本信息 原书名: Expert Oracle Database Architecture 9i and 10g Programming Techniques and Solutions 原出版社: Apress 作者: (美)Thomas Kyte    译者: 苏金国 王小振 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:711515032X 上架时间:2006-8-25 出版日期:2006 年10月 开本:16开 页码:737 版次:1-1 内容简介    本书是一本关于Oracle 9i & 10g数据库体系结构的权威图书,涵盖了所有最重要的Oracle体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并利用具体的例子来充分介绍每个特性,不仅讨论了各个特性是什么,还说明了它是如何工作的,如何使用这个特性来开发软件,以及有关的常见陷阱。    本书面向从事Oracle数据库应用的所有开发人员或DBA。 作译者    Thomas Kyte是Oracle公司核心技术集团的副总裁,从Oracle 7.0.9版本开始就一直任职于Oracle公司,不过,其实他从5.1.5c版本就开始使用Oracle了。 在Oracle公司,Kyte专门负责Oracle数据库,他的任务是帮助使用Oracle数据库的客户,并与他们共同设计和构建系统,或者对系统进行重构和调优。在进入Oracle公司之前,Kyte是一名系统集成人员,主要为美国军方和政府部门的客户构建大规模、异构数据库。 Thomas Kyte就是主持Oracle Magazine Ask Tom专栏和Oracle公司同名在线论坛的那个Tom,他通过这一方式热心地回答困扰着Oracle开发人员和DBA的各种问题。 目录 封面 -41 封底 738 扉页 -40 版权 -39 译者序 -38 序 -36 致谢 -33 前言 -32 配置环境 -25 目录 -4 第1章 开发成功的Oracle应用 1 1.1 我的方法 2 1.2 黑盒方法 4 1.3 开发数据库应用的正确(和不正确)方法 8 1.3.1 了解Oracle体系结构 8 1.3.2 理解并发控制 14 1.3.3 多版本 19 1.3.4 数据库独立性? 25 1.3.5 “怎么能让应用运行得更快?” 41 1.3.6 DBA与开发人员的关系 45 1.4 小结 46 第2章 体系结构概述 47 2.1 定义数据库和实例 48 2.2 SGA和后台进程 53 2.3 连接Oracle 56 2.3.1 专用服务器 56 2.3.2 共享服务器 57 2.3.3 TCP/IP连接的基本原理 58 2.4 小结 61 第3章 文件 63 3.1 参数文件 64 3.1.1 什么是参数? 65 3.1.2 遗留的init.ora参数文件 67 3.1.3 服务器参数文件 69 3.1.4 参数文件小结 75 3.2 跟踪文件 76 3.2.1 请求的跟踪文件 77 3.2.2 针对内部错误生成的跟踪文件 80 3.2.3 跟踪文件小结 83 3.3 警告文件 83 3.4 数据文件 86 3.4.1 简要回顾文件系统机制 86 3.4.2 Oracle数据库中的存储层次体系 87 3.4.3 字典管理和本地管理的表空间 91 3.5 临时文件 93 3.6 控制文件 95 3.7 重做日志文件 95 3.7.1 在线重做日志 96 3.7.2 归档重做日志 98 3.8 密码文件 100 3.9 修改跟踪文件 103 3.10 闪回日志文件 104 3.10.1 闪回数据库 104 3.10.2 闪回恢复区 105 3.11 DMP文件(EXP/IMP文件) 106 3.12 数据泵文件 107 3.13 平面文件 110 3.14 小结 111 第4章 内存结构 113 4.1 进程全局区和用户全局区 113 4.1.1 手动PGA内存管理 114 4.1.2 自动PGA内存管理 121 4.1.3 手动和自动内存管理的选择 131 4.1.4 PGA和UGA小结 132 4.2 系统全局区 133 4.2.1 固定SGA 137 4.2.2 重做缓冲区 137 4.2.3 块缓冲区缓存 138 4.2.4 共享池 145 4.2.5 大池 148 4.2.6 Java池 149 4.2.7 流池 150 4.2.8 自动SGA内存管理 150 4.3 小结 151 第5章 Oracle进程 153 5.1 服务器进程 153 5.1.1 专用服务器连接 154 5.1.2 共享服务器连接 156 5.1.3 连接与会话 157 5.1.4 专用服务器与共享服务器 163 5.1.5 专用/共享服务器小结 166 5.2 后台进程 167 5.2.1 中心后台进程 168 5.2.2 工具后台进程 175 5.3 从属进程 178 5.3.1 I/O从属进程 178 5.3.2 并行查询从属进程 179 5.4 小结 179 第6章 锁 181 6.1 什么是锁? 181 6.2 锁定问题 184 6.2.1 丢失更新 184 6.2.2 悲观锁定 185 6.2.3 乐观锁定 187 6.2.4 乐观锁定还是悲观锁定? 197 6.2.5 阻塞 198 6.2.6 死锁 201 6.2.7 锁升级 206 6.3 锁类型 206 6.3.1 DML锁 207 6.3.2 DDL锁 215 6.3.3 闩 218 6.3.4 手动锁定和用户定义锁 226 6.4 小结 227 第7章 并发与多版本 229 7.1 什么是并发控制? 229 7.2 事务隔离级别 230 7.2.1 READ UNCOMMITTED 232 7.2.2 READ COMMITTED 233 7.2.3 REPEATABLE READ 235 7.2.4 SERIALIZABLE 237 7.2.5 READ ONLY 239 7.3 多版本读一致性的含义 240 7.3.1 一种会失败的常用数据仓库技术 240 7.3.2 解释热表上超出期望的I/O 241 7.4 写一致性 244 7.4.1 一致读和当前读 244 7.4.2 查看重启动 247 7.4.3 为什么重启动对我们很重要? 250 7.5 小结 251 第8章 事务 253 8.1 事务控制语句 254 8.2 原子性 255 8.2.1 语句级原子性 255 8.2.2 过程级原子性 257 8.2.3 事务级原子性 260 8.3 完整性约束和事务 260 8.3.1 IMMEDIATE约束 260 8.3.2 DEFERRABLE约束和级联更新 261 8.4 不好的事务习惯 263 8.4.1 在循环中提交? 264 8.4.2 使用自动提交? 270 8.5 分布式事务 271 8.6 自治事务 273 8.6.1 自治事务如何工作? 273 8.6.2 何时使用自治事务? 276 8.7 小结 279 第9章 redo与undo 281 9.1 什么是redo? 281 9.2 什么是undo? 282 9.3 redo和undo如何协作? 285 9.4 提交和回滚处理 289 9.4.1 COMMIT做什么? 289 9.4.2 ROLLBACK做什么? 296 9.5 分析redo 297 9.5.1 测量redo 298 9.5.2 redo生成和BEFORE/AFTER触发器 300 9.5.3 我能关掉重做日志生成吗? 306 9.5.4 为什么不能分配一个新日志? 310 9.5.5 块清除 312 9.5.6 日志竞争 315 9.5.7 临时表和redo/undo 317 9.6 分析undo 321 9.6.1 什么操作会生成最多和最少的undo? 321 9.6.2 ORA-01555: snapshot too old错误 323 9.7 小结 334 第10章 数据库表 335 10.1 表类型 335 10.2 术语 337 10.2.1 段 337 10.2.2 段空间管理 339 10.2.3 高水位线 340 10.2.4 freelists 342 10.2.5 PCTFREE和PCTUSED 345 10.2.6 LOGGING和NOLOGGING 348 10.2.7 INITRANS和MAXTRANS 349 10.3 堆组织表 349 10.4 索引组织表 352 10.5 索引聚簇表 368 10.6 散列聚簇表 376 10.7 有序散列聚簇表 386 10.8 嵌套表 390 10.8.1 嵌套表语法 390 10.8.2 嵌套表存储 399 10.8.3 嵌套表小结 402 10.9 临时表 402 10.10 对象表 410 10.11 小结 418 第11章 索引 421 11.1 Oracle索引概述 422 11.2 B*树索引 423 11.2.1 索引键压缩 426 11.2.2 反向键索引 429 11.2.3 降序索引 435 11.2.4 什么情况下应该使用B*树索引? 437 11.2.5 B*树小结 448 11.3 位图索引 448 11.3.1 什么情况下应该使用位图索引? 449 11.3.2 位图联结索引 453 11.3.3 位图索引小结 455 11.4 基于函数的索引 456 11.4.1 重要的实现细节 456 11.4.2 一个简单的基于函数的索引例子 457 11.4.3 只对部分行建立索引 465 11.4.4 实现有选择的惟一性 467 11.4.5 关于CASE的警告 467 11.4.6 关于ORA-01743的警告 469 11.4.7 基于函数的索引小结 470 11.5 应用域索引 470 11.6 关于索引的常见问题和神话 472 11.6.1 视图能使用索引吗? 472 11.6.2 Null和索引能协作吗? 472 11.6.3 外键是否应该加索引? 475 11.6.4 为什么没有使用我的索引? 476 11.6.5 神话:索引中从不重用空间 483 11.6.6 神话:最有差别的元素应该在最前面 486 11.7 小结 490 第12章 数据类型 491 12.1 Oracle数据类型概述 491 12.2 字符和二进制串类型 494 12.2.1 NLS概述 494 12.2.2 字符串 497 12.3 二进制串:RAW类型 504 12.4 数值类型 506 12.4.1 NUMBER类型的语法和用法 509 12.4.2 BINARYFLOAT/BINARYDOUBLE类型的语法和用法 513 12.4.3 非固有数值类型 513 12.4.4 性能考虑 514 12.5 LONG类型 515 12.5.1 LONG和LONG RAW类型的限制 516 12.5.2 处理遗留的LONG类型 517 12.6 DATE、TIMESTAMP和INTERVAL类型 523 12.6.1 格式 523 12.6.2 DATE类型 525 12.6.3 TIMESTAMP类型 533 12.6.4 INTERVAL类型 541 12.7 LOB 类型 544 12.7.1 内部LOB 545 12.7.2 BFILE 557 12.8 ROWID/UROWID类型 559 12.9 小结 560 第13章 分区 561 13.1 分区概述 561 13.1.1 提高可用性 562 13.1.2 减少管理负担 564 13.1.3 改善语句性能 569 13.2 表分区机制 571 13.2.1 区间分区 571 13.2.2 散列分区 574 13.2.3 列表分区 579 13.2.4 组合分区 581 13.2.5 行移动 583 13.2.6 表分区机制小结 585 13.3 索引分区 586 13.3.1 局部索引与全局索引 587 13.3.2 局部索引 587 13.3.3 全局索引 594 13.4 再论分区和性能 610 13.5 审计和段空间压缩 617 13.6 小结 618 第14章 并行执行 619 14.1 何时使用并行执行 620 14.2 并行查询 622 14.3 并行DML 628 14.4 并行DDL 631 14.4.1 并行DDL和使用外部表的数据加载 632 14.4.2 并行DDL和区段截断 634 14.5 并行恢复 643 14.6 过程并行化 643 14.6.1 并行管道函数 644 14.6.2 DIY并行化 648 14.7 小结 652 第15章 数据加载和卸载 655 15.1 SQL*Loader 655 15.1.1 用SQLLDR加载数据的FAQ 660 15.1.2 SQLLDR警告 686 15.1.3 SQLLDR小结 686 15.2 外部表 687 15.2.1 建立外部表 688 15.2.2 处理错误 693 15.2.3 使用外部表加载不同的文件 697 15.2.4 多用户问题 697 15.2.5 外部表小结 698 15.3 平面文件卸载 698 15.4 数据泵卸载 708 15.5 小结 710 索引 711 前言 每个人都可能有自己的学习套路。学习一个新工具时,有些人可能只是找一本入门书,粗略地翻翻就浅尝辄止,并相信实践出真知;有些人更喜欢系统地研习文档,对每个细节精雕细刻;有些人喜欢收集一些独门密技;有些人喜欢亲身尝试书上的基本用例……。每种方法都有可取之处,但我相信,真正的学习应该是“参考+实践”。盲目实践会频繁遇到本来可以避免的陷阱和失败,耽于参考又会成为纸上谈兵,无法得到真才实学。 学习Oracle时,很多书和资料都很有参考价值,特别是Oracle文档,更是全面地提供了我们想了解的信息。但是文档中没有实战用例,没有告诉我们哪些可行或者哪些不可行,什么情况下可行或者什么情况下不可行,为什么可行或者为什么不可行,它只是“公事公办”为你呈上厚厚的一摞文字,告诉你情况就是这样,你自己看着办吧。Thomas Kyte的这本书正好弥补了这一点,他使用大量实际的例子来解释所阐述的概念,由浅入深地传授实战技术。如果你喜欢Oracle,需要更多地了解Oracle,这本书绝对值得一读。 本书第1章强调不要把数据库当成一个黑盒,讨论了开发人员必须了解的数据库的基本特性和功能。第2章提供了一个创建Oracle数据库的绝好例子,从中你将深入地了解数据库和实例的概念。第3章介绍了各种类型的文件,特别是重做日志文件、闪回日志文件等。第4章关于内存,具体介绍了一些新选项,如何使用这些选项,以及要注意哪些问题。第5章讨论各个进程的功能。第6章至第8章分别介绍锁和闩、多版本以及事务。这几章是本书的精华,而且也是理解Oracle的关键所在。第9章讨论redo和undo,解释了它们分别是什么,并指出如何避免各种可能出现的错误。第10章介绍了各种类型的表,其中最重要的是堆组织表、索引组织表、临时表和外部表。你能从这一章中了解到改善性能的一些技巧。第11章讨论了有关索引的问题。第12章涵盖了Oracle中的各种数据类型。第13章讨论了分区,这一章开场白里就提出警告——不要把分区当作一个提速开关,并在接下来的内容中详细分析了分区的有关问题。第14章介绍了并行执行,如并行DML、并行DDL等。这里作者给出了自己从实际经验中总结的许多见解,指出并行DDL是Oracle并行执行的闪光点。最后一章介绍了数据的加载和卸载,不仅详细说明了常用的SQL*Loader工具,还解释了如何用外部表加载数据。尽管外部表从很大程度上优于SQL*Loader,但使用外部表并没有完全摒弃SQL*Loader,而且完全可以利用SQL*Loader来为外部表生成CREATE语句。 在Oracle领域中,大概无人不识Thomas Kyte,也无人不知他的Expert One-on-One Oracle。本书是该书的全新改版,涵盖了Oracle9i和10g,并专门介绍了最重要的Oracle体系结构特性。翻译这样一本巨著,确实让我们很有压力,所以我们不敢马虎,尽力用准确、贴切的语言表述出作者的原意。但是由于水平有限,译文肯定有不当之处,敬请批评指正。 译者 2006年7月 “Think”(思考)。1914年,Thomas J. Watson先生加入后来成为IBM的公司时,带来了这样一个简简单单的座右铭。后来,这成为每一位IBM员工的训词,不论他们身居何职,只要需要做出决策,并利用自己的才智完成所承担的工作,就要把“Think”谨记于心。一时间,“Think”成为一个象征、一个标志,屡屡出现在出版物上,人们把它写在日历上提醒自己,而且不仅在IBM内部,就连其他一些公司的IT和企业管理者的办公室墙上也悬挂着这个牌匾,甚至《纽约客》杂志的漫画里都有它的身影。“Think”在1914年是一个很好的观念,即使在今天也同样有着重要的意义。 “Think different”(不同凡想)是20世纪90年代苹果公司在其旷日持久的宣传活动中提出的一个口号,想借此重振公司的品牌,更重要的是,想改变人们对技术在日常生活中作用的看法。苹果公司的口号不是“think differently”(换角度思考,暗含如何去思考),而是把“different”用作动词“think”的宾语,暗含该思考些什么(与“think big”句式相同)。这个宣传活动强调的是创造性和有创造性的人,暗示苹果电脑在支持创新和艺术成就方面与众不同。 我在1981年加入Oracle公司(那时还叫Relational Software公司)时,包含了关系模型的数据库系统还是一种新兴技术。开发人员、程序员和队伍逐渐壮大的数据库管理员都在学习采用规范化方法的数据库设计原则。在此之后出现了非过程性的SQL语言。尽管人们对它很陌生,但无不为其强大的能力所折服,因为利用SQL语言能有效地管理数据,而以前同样的工作需要进行非常辛苦地编程才能完成。那时要思考的东西很多,现在也依然如此。这些新技术不仅要求人们学习新的观念和方法,还要以新的思路来思考。不论是过去还是现在,做到了这一点的人最终都大获成功,他们能最大限度地利用数据库技术,为企业遇到的问题建立有效的创新性解决方案。 想一想SQL数据库语言吧,历史上是Oracle首次推出了商业化的SQL实现。有了SQL,应用设计人员可以利用一种非过程性语言(或称“描述性语言”)管理行集(即记录集),而不必使用传统的过程性语言编写循环(一次只能处理一条记录)。刚开始接触SQL时,我发现自己必须“转45°”考虑问题,以确定如何使用诸如联结和子查询之类的集合处理操作来得到我想要的结果。那时,集合处理对大多数人来说还是全新的概念,不仅如此,这也是非过程性语言的概念,也就是说,你只需指定想要的结果,而无需指出如何得到这些结果。这种新技术确实要求我“换角度思考”,当然也使我有机会“不同凡想”。 集合处理比一次处理一条记录要高效得多,所以如果应用程序能以这种方式充分利用SQL,就能比那些没有使用集合处理的应用程序表现得更出色。不过,遗憾的是,应用程序的性能往往都不尽如人意。实际上,大多数情况下,最能直接影响整体性能的是应用程序设计,而不是Oracle参数设置或其他配置选项。所以,应用程序开发人员不仅要学习数据库特性和编程接口的详细内容,还要掌握新的思路,并在应用程序中适当地使用这些特性和接口。 在Oracle社区中,关于如何对系统调优以得到最佳的性能(或者如何最佳地使用各种Oracle特性)有许多“常识”。这种原本明智的“常识”有时却演变成为一种“传说”甚至“神话”,这是因为开发人员和数据库管理员可能不加任何批判地采纳这些思想,或者不做任何思考就盲目扩展它们。 举一个例子,比如说这样一个观点:“如果一个东西很好,那么更多——再多些——会更好。”这种想法很普遍,但一般并不成立。以Oracle的数组接口为例,它允许开发人员只用一个系统调用就能插入或获取多行记录。显然,能减少应用程序和数据库之间传递的网络消息数当然很好。但是再想想看,到达某个“临界”点后,情况可能会改变。一次获取100行比一次获取1行要好得多,但是如果一次获取1 000行而不是100行,这对于提高整体性能通常意义并不大,特别是考虑到内存需求时更是如此。 再来看另一个不加判断就采纳的例子,一般主张关注系统设计或配置中有问题的地方,而不是最有可能改善性能的方面(或者是能提高可靠性、可用性或增强安全性的方面)。请考虑一个系统调优的“常识”:要尽可能提高缓冲区的命中率。对于某些应用,要尽量保证所需数据在内存中,这会最大限度地提高性能。不过,对于大多数应用,最好把注意力放在它的性能瓶颈上(我们称之为“等待状态”),而不要过分强调某些系统级指标。消除应用程序设计中那些导致延迟的因素,就能得到最佳的性能。 我发现,将一个问题分解为多个小部分再逐个加以解决,是一种很好的应用程序设计方法。采用这种方式,往往能极好地、创造性地使用SQL解决应用需求。通常,只需一条SQL语句就能完成许多工作,而你原来可能认为这些工作需要编写复杂的过程性程序才能实现。如果能充分利用SQL的强大能力一次处理一个行集(可能并行处理),这不仅说明你是一个高效率的应用程序开发人员,也说明应用程序能以更快的速度运行! 一些最佳实践取决于(或部分取决于)事实的真实性,有时,随着事实的改变,这些最佳实践可能不再适用。请考虑一句古老的格言:“要得到最好的性能,应当把索引和数据放在单独的表空间中。”我经常发现许多数据库管理员都恪守着这个观点,根本不考虑如今磁盘的速度和容量已经大为改观,也不考虑给定工作负载的特殊要求。要评价这个“规则”是否合适,应该考虑这样一个事实:Oracle数据库会在内存中缓存最近经常使用的数据库块(通常这些块属于某个索引)。还有一点需要考虑:对于给定的请求,Oracle数据库会按顺序使用索引和数据块,而不是同时访问。这说明,所有并发用户实际上应该都会执行涉及索引和数据的I/O操作,而且每块磁盘上都会出现I/O操作。可能你会出于管理方面的原因(或者根据你的个人喜好)将索引和数据块分置于不同的表空间中,但绝不能说这样做是为了提高性能。(Thomas Kyte在Ask Tom网站http://asktom.oracle.com上对这个主题做了深入的分析,有关文章可以在“index data table space”中查到。)从中我们可以得到一个教训,要根据事实做出决定,而且事实必须是当前的、完备的。 不论我们的计算机速度变得多快,数据库变得多复杂,也不管编程工具的能力如何,人类的智慧和一套正确的“思考原则”仍是无可替代的。所以,对于应用中使用的技术,尽管学习其细节很重要,但更重要的是,应该知道如何考虑适当地使用这些技术。 Thomas Kyte是我认识的最聪明的人之一,他在Oracle数据库、SQL、性能调优和应用设计方面具有渊博的学识。我敢肯定,Thomas绝对是“Think”和“Think different”这两个口号不折不扣的追随者。有位中国的智者说过“授人以鱼,为一饭之惠;授人以渔,则终身受用”,显然Thomas对此深以为然。Thomas很乐于把自己的Oracle知识与大家共享,但他并不只是罗列问题的答案,而是尽力帮助大家学会如何思考和推理。 在Thomas的网站(http://asktom.oracle.com)上、发言稿中以及书中,他其实不断鼓励人们在使用Oracle数据库设计数据库应用时要“换角度思考”。他从不墨守成规,而坚持通过实例,用事实证明。Thomas采用一种注重实效的简单方法来解决问题,按照他的建议和方法,你将成为更高效的开发人员,能开发出更好、更快的应用。 Thomas的这本书不仅介绍Oracle的诸多特性,教你使用这些特性,还反映了以下简单的观点:     不要相信神话,要自己思考。     不要墨守成规,所有人都知道的事情其实很可能是错的!     不要相信传言,要自己测试,根据经过证明的示例做出决定。     将问题分解为更简单的小问题,再把每一步的答案组合为一个优秀、高效的解决方案。     如果数据库能更好、更快地完成工作,就不要事必躬亲地自己编写程序来完成。     理解理想和现实之间的差距。     对于公司制定的未加证实的技术标准,要敢于提出质疑。     要针对当前需求从大局考虑怎样做最好。     要花时间充分地思考。 Thomas建议,不要只是把Oracle当作一个黑盒。你不只是在Oracle中放入和取出数据。他会帮助你理解Oracle是如何工作的,如何充分利用它强大的能力。通过学习如何深思熟虑地、创造性地应用Oracle技术,你会更快、更好地解决大多数应用设计问题。 通过阅读这本书,你会了解到Oracle数据库技术的许多新动态,还会掌握应用设计的一些重要概念。如果你确实领会了这些思想,相信你肯定也会对所面对的难题“换角度思考”。 IBM的Watson曾经说过:“自始以来,每一个进步都源自于思考。仅仅因为‘没有思考’,就造成全世界白白浪费了无数资金。”Thomas和我都赞同这种说法。学完这本书后,利用你掌握的知识和技术,希望你能为这个世界(至少能为你的企业)节省无数资金,把工作干得更出色。 Ken Jacobs Oracle 公司产品战略部(服务器技术)副总裁 过去我一直在开发Oracle软件,并与其他Oracle开发人员一同工作,帮助他们构建可靠、健壮的应用程序。在这个过程中积累了一些经验,正是这些经验赋予我灵感,才有了本书中的内容。这本书实际上反映了我每天做了些什么,汇集了我所看到的人们每天遇到的问题。 本书涵盖了我认为最重要的一些内容,即Oracle数据库及其体系结构。我也可以写一本书名类似的其他方面的书,向你解释如何用一种特定的语言和体系结构开发应用程序。例如,我可以告诉你如何使用 JavaServer Pages(JSP)与Enterprise JavaBeans(EJB)通信,EJB再如何使用JDBC与Oracle通信。不过,归根结底,你最后还是要了解Oracle数据库及其体系结构(本书介绍的内容),才能成功地构建这样一个应用程序。要想成功地使用Oracle进行开发,我认为有些内容你必须了解,而不论你是一位使用ODBC的Visual Basic程序员、使用EJB和JDBC的Java程序员,还是使用DBI Perl的Perl程序员,这本书都会介绍这些通用的知识。本书并不推崇哪一种特定的应用体系结构,在此没有比较三层结构和客户/服务器结构孰优孰劣。我们只是讨论了数据库能做什么,另外关于数据库如何工作,我们还会指出你必须了解哪些内容。由于数据库是所有应用体系结构的核心,所以这本书适用面很广。 在编写本书时,我对Expert One-on-One Oracle一书中关于体系结构的章节做了全面修订和更新,并补充了大量新的内容。Expert One-on-One Oracle一书所基于的版本是Oracle 8.1.7,在此之后又推出了3个版本——两个Oracle9i版本和Oracle数据库10g Release 1,这也是写这本书时的Oracle发行版本。因此,有许多新的功能和新的特性需要介绍。 如果针对9i和10g更新Expert One-on-One Oracle,那么需要补充的内容太多了,那本书原本篇幅较多,再加太多内容就会很难处理。出于这个考虑,我们决定分两本书来介绍。这是其中的第一本,第二本书暂定名为Expert Oracle Programming 。 顾名思义,本书的重点是数据库体系结构,并强调数据库本身如何工作。我会深入地分析Oracle数据库体系结构,包括文件、内存结构以及构成Oracle数据库(database)和实例(instance)的底层进程。然后讨论一些重要的数据库主题,如锁定、并发控制、事务、redo和undo,还会解释为什么了解这些内容很重要。最后,我们再来分析数据库中的物理结构,如表、索引和数据类型,并介绍哪些技术能最优地使用这些物理结构。 本书内容 如果开发的选择余地很大,则会带来一些问题,其中一个问题是有时很难确定哪种选择是满足特定需求的最佳选择。每个人都希望灵活性尽可能大(有尽可能多的选择),同时他们又希望能简单明了,换句话说,希望尽量容易。Oracle为开发人员提供的选择几乎无穷无尽。没有人会说“这在Oracle中做不到”,而只会说“在Oracle中你想用多少种不同的方法来实现?”希望这本书能帮你做出正确的选择。 如果你不只是想知道做何选择,还想了解有关Oracle特性和功能的一些原则和实现细节,这本书就很适合你。例如,Oracle有一个很棒的特性,称为并行执行(parallel execution)。Oracle文档会告诉你如何使用这个特性,并说明它到底能做什么。不过,Oracle文档没有告诉你应该在什么时候用这个特性,更重要的是没有指出什么时候不该使用这个特性。另外,文档一般没有提供特性的实现细节,如果你不清楚,可能会因此而困扰(我指的不是bug,而是说你可能很想知道这个特性如何工作,以及为此是怎样具体设计的,但从文档中找不到答案)。 在本书中,我不仅会尽力阐明各个特性如何工作,还会指出什么情况下要考虑使用某个特性或实现,并解释为什么。我认为,理解“怎么做”固然很重要,但理解“什么时候做”和“为什么这样做”(以及“什么时候不做”和“为什么不做”)也同样重要! 读者对象 这本书面向那些使用Oracle作为数据库后端开发应用程序的人员。专业Oracle开发人员如果想了解如何在数据库中完成某些工作,同样可以参考本书。本书相当实用,所以DBA也会对书中的许多内容感兴趣。书中大部分例子都使用SQL*Plus来展示关键特性,所以如果你想通过本书来了解如何开发一个很酷的GUI,可能不能如愿。不过,从这本书中,你将知道Oracle数据库如何工作,它的关键特性能做些什么,以及什么时候应该(和不应该)使用这些特性。 如果你想事半功倍地使用Oracle,如果你想了解使用现有特性的新方法,如果你想知道这些特性在真实世界中如何应用(不只是展示如何使用特性,而是首先分析为什么要用这个特性),就请阅读这本书。作为技术经理,如果你手下的开发人员在开发Oracle项目,你可能也会对这本书感兴趣。从某种程度上讲,技术经理也要懂数据库,而且要知道这对于成功至关重要。如果技术经理想安排员工进行适当的技术培训,或者想确保员工了解他们应该掌握的技术,就可以利用这本书来“充电”。 要想更好地学习本书的内容,要求读者:     了解SQL。不要求你能编写最棒的SQL代码,但是如果用过SQL,对SQL有实战经验,这会很有帮助。     掌握PL/SQL。这不是一个必要的前提,但是有助于你“领会”书中的例子。例如,本书不会教你怎样编写一个FOR循环,或者如何声明一个记录类型,这些内容可以参考Oracle文档和许多相关的图书。不过,这并不是说你从本书中学不到PL/SQL的知识。不是这样的。通过阅读本书,你会对PL/SQL的许多特性相当熟悉,而且会学到一些新方法,还会注意到你以前以为不存在的一些包和特性。     接触过某种第三代语言(third-generation language,3GL),如C或Java。我相信,如果你能阅读3GL语言编写的代码,或者编写过这种代码,肯定能顺利地阅读和理解本书中的例子。     熟悉Oracle Concepts手册。 最后再说两句,由于Oracle文档实在太庞大了,这让很多人都有些畏惧。如果你刚开始读Oracle Concepts手册,或者还没有看过,那我可以告诉你,这个手册绝对是一个很好的起点。它大约有700页,涉及了你需要知道的许多重要的Oracle概念。其中不会涵盖每一个技术细节(Oracle文档提供了技术细节,不过它有10 000~20 000页之多),但你能从中学到所有重要的概念。 这个手册涉及以下主题(这里所列的并不完整):     数据库中的结构,数据如何组织和存储;     分布式处理;     Oracle的内存体系结构;     Oracle的进程体系结构;     你要使用的模式对象(表、索引、聚簇等);     内置数据类型和用户定义的数据类型;     SQL存储过程;     事务如何工作;     优化器;     数据完整性;     并发控制。 我自己也会时不时地温习这些内容。这些都是基础,如果不了解这些知识,你创建的Oracle应用程序就很容易失败。建议你通读Oracle Concepts手册来了解这些主题。 本书组织结构 为了帮助你更好地使用这本书,大部分章节都组织为4个部分。这个划分并不严格,不过有助于你快速地找到感兴趣的方面,从中获得所需的更多信息。本书有15章,每一章都像一本“迷你书”,可以单独成册。有时我会引用其他章中的例子或特性,不过你完全可以从书中任选一章,不参考其他章也能顺利阅读。例如,要理解或使用第14章关于并行机制的知识,就不必先阅读介绍数据库表的第10章。 许多章的格式和风格基本上都一样:     首先是特性或功能的介绍。     说明为什么可能想使用(或者不想使用)这个特性或功能。我会概要地指出哪些情况下要考虑使用这个特性,而哪些情况下这个特性不适用。     如何使用这个特性。这里提供的信息不是完全照搬SQL参考资料中的内容,而是会以一种循序渐进的方式组织。我会清楚地指出哪些是你需要的,哪些是你必须做的,另外哪些环节需要仔细检查。这一部分包括以下内容:     如何实现这个特性;     许许多多的例子;     如何调试这个特性;     使用这个特性的忠告;     如何(主动地)处理错误。     对上述内容的小结。 书中有相当多的例子和大量的代码,这些都可以从http://www.apress.com的Source Code区下载。下面将详细介绍每一章的内容。 第1章:开发成功的Oracle应用 从这一章开始,我将介绍数据库编程的基本方法。所有数据库创建得并不一样,要想按时、成功地开发数据库驱动的应用,你必须了解你的数据库能做什么,它是怎么做的。如果不清楚你的数据库能做什么,就很可能不断地遭遇“闭门造车”的窘境,徒劳地从头开发数据库本已提供的功能;如果不清楚你的数据库是怎么工作的,很可能开发出性能很差的应用,达不到预期的要求。 这一章先根据经验分析了一些应用,这些应用都因为缺乏对数据库的基本理解而导致项目失败。这一章就采用这种“拿例子说话”的方式,讨论了开发人员必须了解数据库的哪些基本特性和功能。关键是,不要把数据库当成一个黑盒,不要认为它能自己努力得出答案并自行负责可扩展性和性能。 第2章:体系结构概述 这一章介绍Oracle体系结构的基础知识。首先给出两个术语——“实例”(instance)和“数据库”(database)的明确定义,Oracle领域中的许多人都对这两个词存在误解。我们还会简要介绍系统全局区(System Global Area,SGA)和Oracle实例底层的进程,并分析“连接Oracle”这样一个简单的动作是如何实现的。 第3章:文件 这一章将深入介绍构成Oracle 数据库和实例的8类文件。从简单的参数文件到数据文件和重做日志文件(redo log file)都会涵盖。我们将说明这些文件是什么,为什么有这些文件,以及如何使用它们。 第4章:内存结构 这一章讨论Oracle如何使用内存,包括各个进程中的内存(PGA内存,PGA即进程全局区)和共享内存(SGA)。我们会分析手动和自动PGA内存管理之间的区别,并介绍Oracle 10g中的SGA内存管理,还会说明各种方法适用于什么情况。读完这一章之后,你会对Oracle如何使用和管理内存有深入的了解。 第5章:Oracle进程 这一章概述了各种Oracle进程(服务器进程和后台进程),另外还相当深入地讨论了通过共享服务器进程或专用服务器进程连接数据库有何区别。启动Oracle实例时会看到一些后台进程,这一章将逐一介绍其中一些重要的后台进程(如LGWR、DBWR、PMON和SMON),并分别讨论这些进程的功能。 第6章:锁 不同的数据库有不同的行事方法(SQL Server里能做的在Oracle中不一定能做)。应当了解Oracle如何实现锁定和并发控制,这对于应用的成功至关重要。这一章将讨论Oracle解决这些问题的基本方法,可以应用哪些类型的锁[DML、DDL和闩(latch)],还会指出如果锁定实现不当会出现哪些问题(死锁、阻塞和锁升级)。 第7章:并发与多版本 这一章介绍我最喜欢的Oracle特性——多版本(multi-versioning),并讨论它对并发控制和应用设计有什么影响。在这里能清楚地看到,所有数据库创建得都不一样,具体的实现会对应用的设计产生影响。我们先回顾ANSI SQL标准定义的各个事务隔离级别,并介绍它们在Oracle中的具体实现(还会介绍其他数据库中的实现)。基于多版本特性,Oracle能够在数据库中提供非阻塞读(non-blocking read),本章接下来会分析多版本特性对我们有什么影响。 第8章:事务 事务是所有数据库的一个基本特性,这也是数据库区别于文件系统的一个方面。不过,事务常常遭到误解,很多开发人员甚至不知道他们有时没有使用事务。这一章将讨论Oracle中应当如何使用事务,还列出了使用其他数据库进行开发时可能出现的一些“坏习惯”。特别地,我们将讨论原子性的含义,并说明原子性对Oracle中的语句有何影响。这一章还会讨论事务控制语句(COMMIT、SAVEPOINT和ROLLBACK)、完整性约束和分布式事务(两段提交或2PC),最后介绍自治事务。 第9章:redo与undo 可能有人说,开发人员不用像DBA那样深入地了解redo(重做信息)和undo(撤销信息)的细节,但是开发人员确实要清楚redo和undo在数据库中所起的重要作用。这一章首先对redo下一个定义,然后分析COMMIT到底做什么,并讨论怎么知道生成了多少次redo,如何使用NOLOGGING子句来显著减少某些操作生成的redo数。我们还研究了redo生成与块清除(block cleanout)和日志竞争(log contention)等问题的关系。 这一章的undo一节中讨论了撤销数据的作用,并介绍哪些操作会生成最多/最少的undo。最后分析“讨厌”的ORA-01555:snapshot too old(ORA-01555:快照太旧)错误,解释导致这个错误的可能原因,并说明如何避免。 第10章:数据库表 Oracle现在支持多种表类型。这一章将分别介绍每一种类型,包括堆组织表(heap organized,也就是默认的“普通”表)、索引组织表(index organized)、索引聚簇表(index clustered)、散列聚簇表(hash clustered)、嵌套表(nested)、临时表(temporary)和对象表(object),并讨论什么时候使用这些类型的表、如何使用以及为什么使用。大多数情况下,堆组织表就足够了,不过这一章还将帮助你认识到在哪些情况下使用其他类型的表更合适。 第11章:索引 索引是应用设计的一个重要方面。要想正确地实现索引,要求深入地了解数据,清楚数据如何分布,并且知道要如何使用数据。人们经常把索引当作“马后炮”,直到应用开发的后期才增加,这就会导致应用的性能低下。 这一章将详细分析各种类型的索引,包括B*Tree索引、位图索引(bitmap index)、基于函数的索引(function-based index)和应用域索引(application domain index),并讨论各种索引应该在哪些场合使用,以及哪些场合不适用。我会在“有关索引的常见问题和神话”一节回答常常被问到的一些问题,如“索引能在视图上使用吗?”和“为什么没有使用我的索引?”。 第12章:数据类型 有许多数据类型(datatype)可供选择。这一章会逐一分析22种内置数据类型,解释这些类型是如何实现的,并说明如何以及何时使用这些数据类型。首先对国家语言支持(National Language Support,NLS)做一个简要的概述;要想充分理解Oracle中简单的串类型,必须先掌握这个基础知识。接下来再讨论广泛使用的NUMBER类型,并介绍Oracle 10g 对于在数据库中存储数值又提供了哪些新的选项。我们主要从历史角度介绍LONG和LONG RAW类型,目的是讨论如何处理应用中遗留的LONG列,并将其移植为LOB类型。然后会深入分析存储日期和时间的各种数据类型,讨论如何处理这些数据类型来得到我们想要的结果。这里还会谈到时区支持的有关细节。 接下来讨论LOB数据类型。我们会说明LOB类型的存储方式,并指出各种设置(如IN ROW、CHUNK、RETENTION、CACHE等)对我们有什么意义。处理LOB时,重要的是要了解默认情况下它们如何实现和存储,在对LOB的获取和存储进行调优时这一点尤其重要。本章的最后介绍ROWID和UROWID类型。这些是Oracle专用的特殊类型,用于表示行地址。我们会介绍什么时候可以将它们用作表中的列数据类型(这种情况几乎从来不会出现!)。 第13章:分区 分区(partitioning)的目的是为了便于管理非常大的表和索引,即实现一种“分而治之”的逻辑,实际上就是把一个表或索引分解为多个较小的、更可管理的部分。在这方面,DBA和开发人员必须协作,使应用能有最大的可用性和最高的性能。这一章介绍了表分区和索引分区。我们会谈到使用局部索引(在数据仓库中很常用)和全局索引(常见于OLTP系统)的分区。 第14章:并行执行 这一章介绍了Oracle中并行执行(parallel execution)的概念,并说明了如何使用并行执行。首先指出并行处理在什么情况下有用,以及哪些情况下不应考虑使用它。有了一定的认识后,再来讨论并行查询的机制,大多数人提到并行执行都会想到这个特性。接下来讨论并行DML(parallel DML,PDML),利用PDML,可以使用并行执行完成修改。我们会介绍PDML在物理上如何实现,并说明为什么这个实现会对PDML带来一系列限制。 然后再来看并行DDL。在我看来,这才是并行执行真正的闪光之处。通常,DBA会利用一些小的维护窗口来完成大量的操作。利用并行DDL,DBA就能充分利用可用的机器资源,在很短的时间内完成很大、很复杂的操作(它只需原先串行执行所需时间的很小一部分)。 这一章的最后将讨论过程并行机制(procedural parallelism),采用这种方法可以并行地执行应用程序代码。这里将介绍两个技术。首先是并行管线函数(parallel pipelined function),即Oracle能动态地并行执行存储函数。第二个技术是DIY并行机制(DIY parallelism),利用这个技术可以把应用设计为并发地运行。 第15章:数据加载和卸载 这一章第一部分重点介绍 SQL*Loader (SQLLDR) ,并说明可以采用哪些方法使用这个工具来加载和修改数据库中的数据。我们会讨论以下问题:加载定界数据,更新现有的行和插入新行,卸载数据,以及从存储过程调用SQLLDR。重申一遍,SQLLDR是一个完备而重要的工具,但它的实际使用也带来很多问题。这一章第二部分主要讨论外部表,这是另外一种数据批量加载和卸载的高效方法。 源代码和有关更新 使用这本书中的例子时,你可能想亲手键入所有代码。很多读者都喜欢这样做,因为这是熟悉编码技术的一种好办法。 无论你是否想自己键入代码,都能从Apress网站(http://www.apress.com)的Source Code区下载本书的所有源代码 。即使确实想自己键入代码,下载源代码也很有必要,你可以使用下载的源代码文件检查正确的结果是什么。如果你认为自己的录入可能有误,就可以先从这一步开始。倘若不想自己键入代码,那么除了从Apress网站下载源代码外别无选择!不论采用哪种方式,代码文件都能帮助你完成更新和调试。 勘误表 Apress极力确保文字或代码不会出错。不过,出错也是人之常情,所以只要发现并修改了错误,我们就会及时告诉你。Apress所有书籍的勘误表都可以在http://www.apress.com上找到。如果你发现一个还没有报告的错误,请通知我们。 Apress网站还提供了其他的信息和支持,包括所有Apress书籍的代码、样章、新书预告以及相关主题的文章等。
pdf
发布资源于 8 年前

Oracle 数据库管理艺术:11g新特性(世界级Oracle专家权威力作)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle 数据库管理艺术:11g新特性(世界级Oracle专家权威力作) 基本信息 原书名: Oracle Database 11g: New Features for DBAs and Developers 原出版社: Apress 作者: (美)Sam R. Alapati    Charles Kim    译者: 钟鸣 王君 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115191106 上架时间:2008-12-4 出版日期:2009 年1月 开本:16开 页码:488 版次:1-1 内容简介    本书是经典名著《oracle 10g数据库管理艺术》一书的姊妹篇,通过示例全面而又详细地讲述了oracle 11g的新特性,讲述了更改管理、数据库自动化、性能管理、故障诊断、存储管理、安全管理、性能管理、应用开发、数据仓库等各个方面的改进和创新。通过阅读本书,读者将全面了解oracle 11g新特性,从而进行更好的管理或开发。    本书结构清晰,内容全面,示例丰富,适用于所有dba 和开发人员。 作译者    Charles Kim Oracle OCP DBA、Red Hat RHCT和微软MCP,具有17年以上的IT经验,自1991年以来就一直使用Oracle。他曾经担任世界领先的金融信息服务公司Fidelity的首席Oracle数据库工程顾问。目前,他管理DBAExpert.com网站并给Oracle DBA和开发人员提供技术解决方案。此外,他还是Oracle Press的技术编辑。    Sam R. Alapati 世界顶尖的Oracle技术专家,一位经验丰富的数据库管理员,有20多年从业经历。他拥有Oracle OCP DBA证书和HP-UX CSA证书,曾经担任Oracle公司的高级顾问,并在AT&T、雷曼兄弟、NBC等世界顶级公司担任DBA。目前,他管理着世界上最大的Oracle数据库之一——美国童子军全国总部数据库。除本书外,他还是《Oracle 10g数据库管理艺术》(人民邮电出版社2007年出版)的作者,而且是Oracle公司OCP考试官方教材的作者。 目录 封面 -19 封底 489 扉页 -18 版权 -17 版权声明 -16 献词 -15 译者序 -14 致谢 -13 前言 -11 目录 -6 第1章 安装、升级和管理更改 1 1.1 服务器安装中的新特性 1 1.1.1 最佳灵活结构的更改 2 1.1.2 安装选项的更改 3 1.1.3 新的Oracle Database 11g组件 3 1.1.4 角色和权限更改 4 1.2 安装Oracle Database 11g 5 1.3 数据库创建中的新特性 6 1.3.1 新初始化参数 7 1.3.2 DBCA的增强 10 1.3.3 新Oracle后台进程 13 1.3.4 Oracle新提供的PL/SQL程序包 13 1.4 升级到Oracle Database 11g 14 1.4.1 升级与兼容问题 14 1.4.2 Oracle Database 11g的升级路径 15 1.4.3 用DBUA进行升级 20 1.4.4 升级的性能测试 20 1.4.5 升级到11g后的降级 20 1.4.6 滚动升级功能的增强 21 1.4.7 Oracle Clusterware升级 21 1.5 Real Application Testing 28 1.5.1 Database Replay 29 1.5.2 SQL Performance Analyzer 37 1.6 数据库软件补丁 42 1.6.1 Database Control中的补丁新特性 43 1.6.2 应急热补丁(联机数据库补丁) 44 1.6.3 Database Change Management Pack 44 1.6.4 软件和数据库克隆 45 第2章 数据库诊断和故障修复 46 2.1 故障诊断基础设施 47 2.1.1 问题和意外事件 48 2.1.2 Incident Packaging Service 49 2.1.3 ADR的结构和位置 49 2.2 调查和解决问题 50 2.2.1 使用命令行工具adrci 51 2.2.2 Support Workbench 59 2.3 数据库健康检查 64 2.3.1 检查、故障和修复 65 2.3.2 Health Monitor检查的类型 65 2.3.3 手动检查 66 2.4 Data Recovery Advisor 71 2.4.1 通过RMAN管理Data Recovery Advisor 71 2.4.2 SQL Test Case Builder 77 2.5 在处理数据讹误方面的改进 78 第3章 数据库管理 80 3.1 数据库自动化 80 3.1.1 自动内存管理 81 3.1.2 自动数据库维护任务 84 3.2 与闪回有关的新特性 89 3.2.1 Total Recall和闪回数据归档 89 3.2.2 闪回事务处理取消 98 3.3 数据库管理的新特性 100 3.3.1 虚拟列 100 3.3.2 新的数据分区方案 102 3.3.3 允许DDL锁等待DML锁 102 3.3.4 显式锁定表 102 3.3.5 不可见索引 103 3.3.6 只读表 106 3.3.7 临时表的管理 107 3.3.8 从内存中创建初始化参数文件 108 3.3.9 复原点的增强功能 109 3.3.10 数据库驻留连接池 111 3.3.11 比较和会聚数据库对象 114 3.4 SQL*Plus的新特性 117 3.4.1 SQL*Plus错误日志 118 3.4.2 SQL*Plus可执行程序中的默认设置 119 3.4.3 增强对SQL*Plus的BLOB数据类型的支持 119 3.5 联机应用维护 119 3.5.1 支持新的对象 120 3.5.2 增强的联机索引创建和重建 120 3.5.3 增强的默认列值功能 120 3.5.4 联机重组实体化视图 121 3.5.5 使依赖对象的无效性最小化 121 3.6 Oracle增强的表压缩选项 122 3.6.1 新压缩特性的工作原理 122 3.6.2 存储和性能的增益 123 3.6.3 实现OLTP表的压缩 123 3.6.4 压缩非结构数据 123 3.7 企业管理器的新特性 124 3.7.1 Availability标签页 125 3.7.2 Server标签页 125 3.7.3 新的Related Links 126 3.7.4 LogMiner支持 127 3.7.5 数据库诊断和调整包 128 3.8 Oracle Scheduler的新特性 129 3.8.1 轻型作业 129 3.8.2 远程外部作业 130 3.8.3 Data Guard的Scheduler支持 132 第4章 性能管理 134 4.1 SQL和PL/SQL性能增强 135 4.1.1 自动“本机”PL/SQL编译 135 4.1.2 更快的DML触发器 138 4.1.3 自适应游标共享 138 4.2 新的结果高速缓存功能 140 4.2.1 使用服务器结果高速缓存提高性能 140 4.2.2 管理查询结果高速缓存 148 4.2.3 PL/SQL函数结果高速缓存 150 4.2.4 内单元内联 153 4.3 自动SQL调整 153 4.3.1 Oracle Database 11g中SQL调整的自动化 153 4.3.2 SQL Access Advisor增强 156 4.4 优化程序和统计数据收集增强 158 4.4.1 多列统计 158 4.4.2 函数和表达式的表达式统计 161 4.4.3 更改统计首选项 162 4.4.4 保持统计数据挂起与立即公开统计数据 163 4.4.5 SQL Plan Management 166 4.4.6 ADDM增强 171 4.4.7 AWR基线 174 4.4.8 基线模板 175 4.4.9 自适应基线度量阈值 177 4.5 Database Control中与性能有关的更改 177 4.5.1 定制性能页 177 4.5.2 平均活动会话 178 4.5.3 ADDM性能分析 179 第5章 数据库安全 180 5.1 企业数据库安全问题 180 5.1.1 更强的口令散列算法 180 5.1.2 创新的安全性 181 5.1.3 延迟失败登录 183 5.1.4 口令区分大小写 184 5.1.5 基本遵从行业安全建议 184 5.1.6 升级隐含的安全问题 185 5.1.7 口令版本 185 5.1.8 区分大小写的口令文件 185 5.1.9 更改默认用户口令 186 5.1.10 数据库连接和区分大小写 187 5.1.11 口令管理 187 5.2 表空间加密 191 5.2.1 创建Oracle Wallet 192 5.2.2 钱夹需求 193 5.2.3 加密表空间的几点说明 193 5.2.4 加密一个表空间 194 5.3 企业管理器集成 196 5.3.1 用Enterprise Manager Database Control进行透明的数据加密 196 5.3.2 用Database Control进行表空间加密 196 5.3.3 Policy Trend Overview 198 5.3.4 Database Control中的其他安全管理集成 199 5.4 UTL_程序包网络访问管理 199 5.4.1 UTL_*网络程序包的细粒度访问控制 200 5.4.2 Automatic Storage Management的sysasm权限 206 5.4.3 LOB加密增强 207 5.4.4 Data Pump加密 207 5.4.5 RMAN虚拟专用目录 207 5.4.6 RMAN备份粉碎 207 5.4.7 具有LogMiner支持的TDE 207 5.4.8 带Data Guard SQL Apply的TDE 207 5.4.9 Oracle Audit Vault 208 5.4.10 带硬件安全模块集成的TDE 208 5.5 Oracle高级安全特性 209 5.5.1 Kerberos交叉领域支持 209 5.5.2 sysdba强身份验证 209 5.6 Oracle调用接口增强 210 5.6.1 设置坏数据包捕捉的信息级别 210 5.6.2 延迟或删除数据库连接 210 5.6.3 配置服务器连接尝试的最大次数 211 5.6.4 控制数据库版本信息的显示 211 5.6.5 设置未授权访问的标题和审计 212 第6章 备份和恢复 213 6.1 增强块介质恢复 213 6.1.1 使用recover...block命令的先决条件 214 6.1.2 使用recover...block命令 215 6.2 RMAN管理增强 217 6.2.1 用RMAN替换变量编写脚本 217 6.2.2 新RMAN配置参数 219 6.2.3 分段备份大文件 220 6.2.4 创建归档(长期的)备份 222 6.2.5 新的验证命令 225 6.2.6 配置归档重做日志删除策略 228 6.2.7 归档重做日志失败切换 230 6.2.8 备份粉碎 230 6.2.9 优化的重做数据备份 231 6.3 活动(基于网络)的数据库复制 231 6.3.1 先决条件 232 6.3.2 必要的spfile修改 232 6.3.3 执行活动复制 234 6.3.4 支持网络的复制如何工作 238 6.4 恢复目录管理 239 6.4.1 合并恢复目录 239 6.4.2 移动恢复目录到另一个数据库 241 6.4.3 虚拟专用目录 242 6.5 增强的RMAN与Data Guard的集成 246 6.5.1 不用数据库连接配置RMAN 246 6.5.2 复原备份控制文件为备用控制文件 247 6.5.3 重新同步恢复目录 248 6.5.4 备份文件可访问组 248 6.5.5 备用数据库中的块更改跟踪支持 248 第7章 Data Pump 249 7.1 API增强 249 7.2 压缩增强 250 7.3 加密 253 7.3.1 指定加密 254 7.3.2 选择加密方式 254 7.4 重用转储文件 256 7.5 重映射数据 257 7.6 重映射表 259 7.7 分区的导出和导入 259 7.8 忽略错误 262 7.9 基于Data Pump的外部表 262 第8章 Oracle Streams 268 8.1 同步捕捉 268 8.1.1 同步捕捉的限制 269 8.1.2 配置同步捕捉 269 8.1.3 同步捕捉的DBA视图 271 8.2 组合捕捉和应用 272 8.2.1 组合捕捉和应用的必要条件 272 8.2.2 组合捕捉和应用验证 272 8.3 Performance Advisor 273 8.4 Streams拓扑 274 8.5 用于“比较和修复”的DBMS_COMPARISON 276 8.5.1 DBMS_COMPARISON的必要条件 277 8.5.2 支持的数据库对象类型 277 8.5.3 比较 277 8.5.4 比较维护 279 8.5.5 复查以前的比较 279 8.5.6 会聚共享数据库对象(修复) 280 8.6 目的的拆分和合并 281 8.6.1 拆分流 281 8.6.2 合并流 282 8.6.3 合并流作业 282 8.7 可用性改进 282 8.7.1 消息跟踪 283 8.7.2 自动化客户机和阈值的预警 283 8.7.3 确定新支持的表视图 284 8.7.4 确定必需的最小检查点SCN 284 8.7.5 后台进程名更改 284 8.7.6 对存储为CLOB的XMLType值的支持 285 8.7.7 对透明数据加密的支持 285 8.7.8 对Oracle Scheduler的支持 285 第9章 存储管理 286 9.1 自动存储管理 286 9.1.1 对ASM的误解 287 9.1.2 RMAN和ASM 287 9.1.3 sysasm权限和osasm组 287 9.1.4 快速重平衡 290 9.2 ASM升级 290 9.2.1 手动升级 290 9.2.2 用DBUA升级 291 9.2.3 滚动升级 294 9.3 ASM的首选读取 296 9.3.1 首选读取设置 296 9.3.2 监视首选读取 297 9.3.3 ASM限制方式 298 9.3.4 磁盘组属性 302 9.3.5 分配单元尺寸 305 9.3.6 RDBMS和ASM兼容性 306 9.3.7 快速镜像重同步 308 9.4 asmcmd命令 313 9.4.1 ls 313 9.4.2 lsdg 313 9.4.3 lsct 314 9.4.4 lsdsk 314 9.4.5 cp 315 9.5 元数据备份和复原 317 9.5.1 使用md_backup备份磁盘组 318 9.5.2 用md_restore复原磁盘组 318 9.5.3 元数据备份和复原演示 319 9.5.4 其他的md_restore示例 325 9.5.5 用ASMCMD进行坏块恢复 325 9.6 Oracle Direct NFS 325 9.6.1 设置Direct NFS 326 9.6.2 验证Direct NFS 327 9.6.3 禁用Direct NFS 328 9.6.4 网络接口卡绑定 328 9.6.5 Direct NFS性能 328 第10章 Data Guard 329 10.1 活动的物理备用数据库复制 330 10.2 实时查询备用 332 10.2.1 启动实时查询备用 332 10.2.2 确认实时查询备用数据库生效 333 10.2.3 设计实时查询数据库 334 10.3 快照备用 334 10.3.1 转换为快照备用 335 10.3.2 转换回物理备用 337 10.4 使用物理备用滚动升级 338 10.4.1 准备主数据库 338 10.4.2 转换为逻辑备用:保持一致性 338 10.4.3 重做传送的改进 339 10.4.4 块更改跟踪支持 340 10.4.5 RMAN理解Data Guard配置 340 10.4.6 与RMAN集成的改进 340 10.4.7 压缩重做的通信量 341 10.4.8 使用NET_TIMEOUT属性的直方图 341 10.4.9 Maximum Performance方式的快速启动失败切换 342 10.5 逻辑备用:SQL Apply 342 10.5.1 支持透明的数据加密(TDE) 343 10.5.2 动态设置Data Guard SQL Apply参数 344 10.5.3 支持VPD和FGA 345 10.5.4 DBMS_SCHEDULER的支持 345 10.5.5 逻辑备用归档日志存储 346 10.5.6 SQL Apply事件消息 346 10.6 Data Guard Broker 347 10.6.1 Data Guard Broker的命令行界面 347 10.6.2 定制快速启动失败切换事件 349 10.6.3 从应用中启动快速启动失败切换 350 10.6.4 新的Data Guard Manager属性 350 10.6.5 用物理备用检测丢失写条件 351 10.6.6 异构OS的Data Guard配置的支持 352 10.6.7 Oracle Database 11g Data Guard优于存储供应商的解决方案 352 第11章 应用开发 353 11.1 新PL/SQL特性 353 11.1.1 CONTINUE语句 353 11.1.2 无dual的序列 353 11.1.3 本机编译 354 11.1.4 SIMPLE_INTEGER 354 11.1.5 正则表达式增强 356 11.1.6 SQL语句的PL/SQL函数调用中的有名和混合参数 358 11.1.7 子程序内联 358 11.1.8 广义调用 361 11.1.9 跨会话的PL/SQL函数结果高速缓存 364 11.1.10 FORALL中的Bulk In-Bind记录表 368 11.1.11 动态SQL对称和新功能 370 11.2 新的触发器特性 373 11.2.1 触发器次序:FOLLOWS子句 374 11.2.2 创建触发器为ENABLED或DISABLED 374 11.2.3 复合触发器类型 374 11.3 XML DB改进 379 11.3.1 信息库事件 379 11.3.2 支持Content Repository APIfor Java: JSR-17 379 11.3.3 ACL安全 379 11.3.4 新的XMLType 379 11.3.5 XMLIndex 384 11.3.6 Oracle XML DB的本机Web服务 394 11.3.7 XQuery增强 400 11.3.8 XML开发工具包(XDK)的改进 401 11.4 Application Express(APEX)增强 404 11.4.1 APEX配置 404 11.4.2 APEX增强 405 11.5 PHP支持增强 406 11.6 Java增强 406 11.6.1 即时编译程序和本机编译 406 11.6.2 JAR支持 407 11.6.3 对loadjava工具的改进 408 11.6.4 对dropjava工具的改进 408 11.6.5 对ojvmjava工具的改进 409 11.6.6 ojvmtc工具 410 第12章 数据仓库 411 12.1 下一代LOB 411 12.1.1 SecureFiles的必要条件 412 12.1.2 BasicFile和SecureFiles 412 12.1.3 LOB的性能 413 12.1.4 去复制 413 12.1.5 DBMS_LOB.SETOPTIONS 417 12.1.6 加密 417 12.1.7 压缩 418 12.1.8 db_securefile初始化参数 419 12.1.9 将BasicFiles移植到SecureFiles 420 12.1.10 LOB预取 421 12.2 数据仓库的新特性 421 12.2.1 分区变更跟踪 421 12.2.2 实体化视图刷新性能的改进 423 12.2.3 实体化视图的QUERY REWRITE功能的增强 423 12.2.4 pivot操作符 425 12.2.5 unpivot操作符 429 12.3 分区 430 12.3.1 Partition Advisor 431 12.3.2 引用分区 435 12.3.3 间隔分区 437 12.3.4 扩展组合分区 442 12.3.5 基于虚拟列的分区 445 12.3.6 系统分区 448 12.3.7 增强分区修剪功能 450 12.4 Oracle Multimedia 450 12.4.1 增强对DICOM的支持 450 12.4.2 ORDDICOM对象类型 450 12.4.3 图像处理 451 12.4.4 对SecureFiles的支持 451 12.4.5 其他多媒体功能的增强 451 索引 452 译者序   Oracle Database 11g使数据库基础架构更加高效、灵活且易于管理。它在数据库管理方面有许多创新和增强,包括更改管理、故障诊断、性能管理、Data Guard管理、安全管理、存储管理和数据仓库管理等。在开发方面也有较大的创新和增强,包括本机编译PL/SQL代码、PL/SQL内联以及触发器等。除了上述较大较明显的改进外,还有几百个较小的重要改进,它们使数据库更可靠、性能更好、更容易使用和更安全。由于篇幅有限,这里就不展开叙述了,请读者阅读本书,书中自会有精彩的讨论。.   本书的两位作者Sam R. Alapati和Charles Kim都是具有20年左右数据库工作经验的资深专家,目前都在从事Oracle数据库管理方面的工作。他们对Oracle数据库的管理和使用具有丰富的经验。Sam R. Alapati拥有Oracle DBA的OCP证书以及HP-UX系统管理员证书,撰写过多部关于Oracle的著作。Charles Kim是Oracle Press的技术编辑,曾经在相关网站上提出过关于Oracle的高水平论题,发表过高质量的文章。   如前所述,Oracle Database 11g有数百个大大小小的改进和创新,要对它们进行系统的介绍,并使读者容易掌握是一件极为困难的事情。这要求作者首先要对以前的Oracle版本有全面充分的了解,其次要深入研究Oracle Database 11g,知道它有什么样的功能,哪些是以前版本没有的,哪些是以前版本有但进行了改进的。最后,还需要对这些改进和创新进行有机的组织,撰写成文。   为此,Sam R. Alapati设法参与了Oracle Database 11g Beta版扩大测试组的工作,试用了beta版软件,参考了Oracle公司向beta版测试参与者提供的技术研究论文,为本书的撰写做了充分的准备。..   译者对作者的这种严谨的工作态度表示由衷的敬佩,向他们致以崇高的敬意!   作者的这种严谨的工作态度也给译者带来了很大的压力(也可以说是动力)。为了正确地翻译本书的技术内容,表达作者的意图,译者参考了许多相关的Oracle书籍,专门安装了Oracle Database 11g、Oracle Database 10g和Oracle 9i等软件,建立了工作环境,以便在翻译过程中参考。对于本书的翻译,不敢说是尽善尽美,但至少我们尽力了。当然,由于译者水平受限,翻译时间有限,在翻译中肯定有许多不到之处,敬请读者批评指正。   参加本书翻译的主要成员是钟鸣和王君。全书由刘晓霞同志审校。同时担任部分翻译及校对工作的还有梅刚、郝玉洁、杨桦、杨卫军、孙登峰、陈聪、邵晖、汪海玲、何江华、田晓涛、冯建奎、耿娜、左钦文、谌汉娥、张杰民、朱涛江、施加松、孙勇、陈小雷、刘伟、邵俊峰、梁卫平、赫立亮、苏秀玲、赵彦萍、马永良、张启斌、文卫东、张野、李海俊、汪民红、侯进、范庆英、严雷磊、方遒等。...   译者   2008年6月11日    前言   Oracle Database 11g在更改管理、故障诊断、性能管理、Data Guard管理、存储管理和数据仓库等方面有一些重要的创新。除数据库管理方面的更改之外,还有一些应用开发特性方面的重大改进,包括本机编译PL/SQL代码、PL/SQL内联以及触发器增强等。除了一些较大较明显的更改外,还有几百个较小但重要的更改,它们使数据库更可靠、性能更好、更容易使用和更安全。.   这个前言概述了将在本书中介绍的新版本的重要特性。   更改管理   更改管理是Oracle Database 11g新特性中最好的一个。数据库和服务器升级具有相当大的不确定性。Oracle Database 11g允许在更改之前和之后测试和比较性能,因此能方便地测试升级或其他更改。Oracle称其为Real Application Testing(真正应用测试)特性,它由提供高级更改管理能力的两个重要新特性组成:   Database Replay(数据库重放)允许捕捉生产数据库的工作负载并在测试服务器上对其重放,可以在测试服务器上用捕捉到的生产负载真实地测试更改;   另一更改管理工具是SQL Performance Analyzer(SQL性能分析程序),它帮助确定系统更改对SQL语句性能的作用。   数据库自动化增强   Oracle Database 11g提供了一些有用的自动数据库管理特性。其中主要有以下几点。   automatic memory management(自动内存管理)特性允许通过设置一个名为memory_target的初始化参数来自动化Oracle内存的系统全局区(SGA)和程序全局区(PGA)组件。   Automatic SQL Tuning(自动SQL调整)特性在晚间维护时间窗中自动运行SQL Tuning Advisor(SQL调整顾问),甚至自动实现该顾问所做的SQL概要文件建议。   Automatic Database Diagnostic Monitor(ADDM,自动数据库诊断监控器)现在除覆盖单个数据库实例外,还覆盖了Oracle Real Application Clusters(Oracle真正应用集群)。   性能管理   除了每晚自动运行SQL Tuning Advisor以外,还有几项改善数据库性能的创新。下面阐述了与数据库性能相关的重要改进。   Automatic Workload Repository(自动工作负载信息库)基线增强现在除了固定基线外,还允许创建移动时间窗基线和基线模板。   SQL Plan Management(SQL计划管理)允许你自动控制SQL计划演变。   当多列相关时,多列统计数据给优化程序提供了更有用的统计数据。   私有统计数据允许在将优化程序统计数据公布给查询优化程序使用前测试这些数据。   服务器端结果高速缓存允许高速缓存SQL和PL/SQL结果,从而极大地提高了性能。也存在新的客户端结果高速缓存。   SQL Test Case Builder(SQL测试案例生成器)允许方便地创建测试案例,使你能在别的系统上重新生成一个有问题的SQL意外事件。   故障诊断能力增强 .  Oracle Database 11g提供了合并故障诊断的能力,使故障诊断和修复比过去方便。下面列出了它所包括的组件。   自动诊断信息库将所有诊断数据合并到数据库外的某个集中位置。   Automatic Health Monitor(自动健康监控器)允许进行主动和被动的数据库健康检查。   Support Workbench(支持工作台)给几个诊断任务提供帮助,包括传送意外事件报告给Oracle Support。   Incident Packaging Service(意外事件打包服务)是把所有诊断数据打包为一个可编辑包以便发送给Oracle Support的一种有效的方法。   Data Guard增强   Oracle在Oracle Database 11g Data Guard技术栈中打包了重要的新特性。最新且最大的Data Guard进步如下:   实时查询备用数据库;   快照备用数据库;   逻辑备用数据库改进;   重做日志压缩;   Data Guard Broker(数据保护代理)增强;   Recovery Manager(RMAN)与Data Guard的结合;..   物理备用的滚动升级;   快速启动失败切换改进。   存储管理改进   在Oracle Database 11g中,自动存储管理(ASM)并入了许多改进。有关的ASM新特性包括:   滚动升级;   ASM快速磁盘重同步;   ASM首选读取故障组;   向后兼容的ASM磁盘组属性;   通过sysasm角色分离DBA和SA角色;   check、mount和drop命令的新的可管理性选项;   在磁盘组之间、跨ASM实例以及在ASM和操作系统之间复制文件的copy命令;   ASM扩展,如磁盘组元数据的备份、恢复以及块修复等。   Direct NFS对网络附加存储(NAS)上的数据库实现进行了简化,提高了性能。由于简单和低成本,客户喜欢选择块设备上的NFS解决方案,而且Direct NFS使NFS实现更简单和更快。   一般的数据库管理   有很多新的数据库管理特性都很有用,包括:   不可见索引,允许测试新索引而不影响性能,因为你可以在可见和不可见之间切换索引状态;   存在几种分区方案——引用分区、内部分区、系统分区和虚拟列分区;   虚拟列允许使用动态计算表列,这些列利用函数从已有列生成新列;   不可见索引通过让你在需要时使索引对优化程序可用来测试索引的使用;   只读表允许你阻止用户修改关键表的内容;   容易增加有默认值的列说明你可以联机增加列而不影响性能;   SecureFiles是一种完全经过了重新设计、用于性能和安全的LOB,它们包括加密、去复制和压缩等功能;   Data Pump结合了数据加密、掩码和压缩。   安全性增强   Oracle Database 11g中的安全特性将使得数据库管理员更容易实施安全措施。Oracle采取了比过去更严格的安全措施。主要的安全性增强包括:   表空间加密超越了以前版本中透明的表级加密,增强了数据库的安全性;   区分大小写的口令和更强的口令验证遵从了管理需求;   数据重映射屏蔽了静止数据;   来自数据库的细粒度的网络访问保护了数据库生态系统;   带SALT的SHA-1加密算法替代了口令散列算法;   Enterprise Manager Database Console中增加了安全支持;   带硬件安全模块集成的TDE提供了最高级别的TDE安全;   OCI安全捕捉坏数据包的信息的级别,n次坏数据包后延迟或删除数据库连接,配置服务器连接尝试的最大次数,启用登录和审计的标题页。   应用改进   对于应用开发人员,Oracle Database 11g提供了以下一些有用的增强。   旋转(pivot)操作通过把行转换为列并在处理过程中聚集数据,为行政管理报表提供交叉表格报表。   逆旋转(unpivot)操作把数据从列转为行。   PL/SQL现在可以不用C编译器,直接建立本机编译的PL/SQL代码。   跨会话PL/SQL函数结果高速缓存允许开发人员请求在SGA中高速缓存函数调用的结果,如果在以后的调用中给此函数传入相同的参数,则从高速缓存中返回结果。   PL/SQL中的内联是一种优化,PL/SQL编译程序用子程序(函数和过程)的代码来替换对子程序的调用代码。   新的SIMPLE_INTEGER数据类型提供了比PLS_INTEGER更快的性能。   触发器现在可以控制触发的次序,可以在ENABLED或DISABLED状态创建,复合触发器在一个DML操作的生命期中维持某种公共的状态。   REGEXP_INSTR()和REGEXP_SUBSTR()的一个新参数允许你选择被求值的正则表达式中的第n个子表达式。   Binary XML在数据库中引入了XML的优点。Binary XML格式通常会减少XML文档的冗长性,从而降低分析的成本。   XML模式进化功能允许对XML模式进行某些种类的更改而不用停机。   XQuery增加了两个新函数:XMLExists和XMLCast。   新XMLIndex可用来索引XML数据的内部结构,改进XML检索的性能。   XDK的新改进为XMLDiff和XMLPatch SQL操作符,它们用来比较和修补XML文档。   分区新特性   Oracle Database 11g中有许多新技术,用于对表数据进行分区以提高公司数据的性能和组织。这些分区技术包括:   引用分区允许具有父子关系的表通过从父表继承分区键进行逻辑等同分区,不需要复制键列;   间隔分区为范围分区自动创建维护分区;   扩展组合分区允许数据沿两维分区;   虚拟列分区允许虚拟列被定义为分区键列。   高可用性增强   有几个关于备份和恢复、闪回技术以及SQL修复和数据恢复的极为有用的创新。现在可以创建虚拟专用目录来控制对中心RMAN恢复目录的访问。   一个名为支持网络的数据库复制(network-aware duplication)的新特性,允许在之前没有备份源数据库的情况下,使用正在运行的数据库的数据文件创建一个数据库副本。   闪回事务处理取消(flashback transaction backout)特性允许一次性撤销整个事务处理及其依赖事务处理。   闪回归档特性允许你跟踪存储在SQL表中的数据(可以根据需要跟踪任意长时间),同时提供自动的历史数据管理。   SQL Repair Advisor(SQL修复顾问)以SQL补丁的形式提供可选择的工作区,以解决失败的SQL语句而不用更改SQL语句本身。   Data Recovery Advisor(数据恢复顾问)通过取得可以实现的修复忠告和建议,允许方便地从数据失败中恢复。   虚拟专用目录通过限制用户只能访问基恢复目录的一个子集,提供更好的安全性。   在闪回日志的帮助下提高块介质恢复性能。   可以合并恢复目录。   备份中可以使用新的section size参数进行数据文件的并行备份。   联机补丁增强使得能容易地在不停机的情况下应用补丁。   高级压缩   下面列出了Oracle Database 11g提供的新的高级压缩功能。   新版本允许压缩从属于正常数据操纵语言(DML)活动的OLTP数据。   在Data Pump操作中不仅可以压缩元数据,还可以压缩导出数据。   可以看到,Oracle Database 11g中有许多令人激动的新特性。那么,还等什么呢?让我们开始这些新特性的深入讨论吧!...    媒体评论   “这是市面上最详细的11g参考书,内容非常丰富,我极力推荐此书。”...   ——Amazon.com    书摘   第1章安装、升级和管理更改   1.1服务器安装中的新特性   1.1.1最佳灵活结构的更改    Oracle Database 11g安装过程在指定Oracle基目录、Oracle主目录和闪回恢复区(flash recovery area)的方法上有一些变化。此外,还有一个名为自动诊断信息库(automatic diagnostic repository,ADR)的新基础设施,它为所有数据库诊断信息提供了统一场所。    1.选择Oracle基目录位置    Oracle基目录是安装Oracle软件的顶层目录,这个目录的OFA推荐路径为/mount_poi nt/app/[Oracle软件拥有者]。例如,一般的Oracle基目录路径为/u01/app/oracle,其中oracle为Oracle软件拥有者。建议将Oracle基目录作为一个环境变量,就像在以前的Oracle版本中一样,不过以后的Oracle版本可能会使它成为一个强制性的变量。Oracle Universal Installer现在提供了一个编辑或选择Oracle基目录的列表框。Oracle Universal Installer从你提供的Oracle基目录位置自动导出默认的Oracle主目录位置。Oracle主目录为Oracle基目录的一个子目录,这是你安装自己的所有Oracle软件的位置。如果想指定其他目录作为Oracle主目录,可以编辑Oracle Universal Installer提供的目录位置。Oracle建议你为用户创建的多个Oracle主目录指定相同的Oracle基目录。    2.选择数据文件和闪回恢复区位置    在Oracle Database 11g中,默认情况下所有数据文件都位于Oracle基目录下的一个目录层上。闪回恢复区也在Oracle基目录下的一个目录层上,Oracle建议在与驻留数据文件的磁盘不同的某个磁盘上创建闪回恢复区。而在Oracle Database 10g中,闪回恢复区和数据文件两者都位于Oracle主目录中。在Oracle Database11g数据库中,假如你选择/uol/app/oracle作为Oracle基目录,则数据文件和闪回恢复区的位置应该如下所示:   ……
pdf
发布资源于 8 年前

Android高级编程--源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Android高级编程》的源代码 对应的书籍资料见: Android高级编程 基本信息 原书名: Professional Android Application Development 原出版社: Wrox 作者: (英)Reto Meier 译者: 王鹏杰 霍建同 出版社:清华大学出版社 ISBN:9787302228448 上架时间:2010-7-1 出版日期:2010 年6月 开本:16开 页码:398 版次:1-1 内容简介   android提供一个开放的开发环境,为针对移动设备编写创新应用程序带来了激动人心的新机遇。作为使用androidsdk构建这些应用程序的实用指南书籍,《android高级编程》从始至终穿插了一系列示例项目,每个项目都引入android的新功能和新技术,以助您达到最圆满的学习效果。书中介绍android的所有基本功能,并通过简明扼要的示例引导您使用高级功能。    《android高级编程》首先简要介绍android软件栈,接着陈述为手机创建稳定可靠、赏心悦目的应用程序的基本原理。通过学习,您可以打下牢固的理论根基,了解使用当前android 1.0 sdk编写定制移动程序所需的知识,还能灵活快捷地运用未来的增强功能构建最前沿的解决方案。    主要内容    ◆android移动开发的最佳实践    ◆简要介绍活动、intent、清单和资源    ◆如何使用布局和定制view创建用户界面    ◆存储和共享应用程序数据的技术    ◆如何创建基于地图的应用程序,如何使用gps和地理编码位置等基于位置的服务    ◆如何创建和使用后台服务及notification    ◆使用加速计、指南针和摄像头硬件    ◆与电话和网络硬件相关的所有内容,如电话api、sms和网络管理等    ◆高级开发主题,包括安全、ipc以及一些高级图形和用户界面技术    读者对象    本书面向希望在android手机平台上创建应用程序的所有人员。不管是经验丰富的移动开发人员,还是初出茅庐的新手,都能从本书提供的宝贵信息中获益。 作译者   Reto Meier出生于澳大利西南的珀斯市,现居伦敦。 Reto是一位经验丰富的软件开发人员,拥有逾10年的GUI程序架构、设计和开发经验。他在涉足IT行业前曾从事过海洋石油和天然气开发以及金融工作。 Reto始终不渝地追求掌握新技术,从2007年Android发布之初Reto就迷恋上了此项技术。他利用业余时间研究包括WPF在内的多种开发平台以及Google的各种开发工具。 详情请访问Reto的个人网站RadioactiveYak,网址是http://blog.radioactiveyak.com。 目录 封面 -14 封底 -13 扉页 -12 版权 -11 作者简介 -10 前言 -9 目录 -4 第1章 Android简介 1 1.1 一些背景信息 2 1.1.1 不远的过去 2 1.1.2 未来的前景 2 1.2 对Android的误解 3 1.3 开放的移动开发平台 3 1.4 自带的Android应用程序 4 1.5 Android SDK功能 5 1.5.1 对包括摄像头、GPS和加速计在内的硬件的访问 5 1.5.2 自带的Google地图、地理编码和基于位置的服务 6 1.5.3 后台服务 6 1.5.4 SQLite 数据存储和检索数据库 6 1.5.5 共享数据和应用程序间通信 7 1.5.6 使用Google Talk的P2P服务 7 1.5.7 扩展的数据支持和2D/3D图形 7 1.5.8 优化的内存和进程管理 8 1.6 开放手机联盟简介 8 1.7 运行Android的环境 8 1.8 从事Android开发的原因 9 1.8.1 推动Android普及的因素 9 1.8.2 Android的独到之处 10 1.8.3 改变移动开发格局 10 1.9 开发框架简介 11 1.9.1 开发包中的资源 11 1.9.2 理解Android软件栈 12 1.9.3 Dalvik虚拟机 13 1.9.4 Android应用程序架构 14 1.9.5 Android库 14 1.9.6 高级Android库 15 1.10 小结 16 第2章 开始入手 17 2.1 Android开发 18 2.1.1 开始前的准备工作 18 2.1.2 创建第一个Android活动 22 2.1.3 Android应用程序的类型 27 2.2 面向移动设备的开发 28 2.2.1 关于硬件设计的考虑事项 28 2.2.2 考虑用户环境 31 2.2.3 Android开发 32 2.3 To-Do List示例 35 2.4 Android开发工具 40 2.4.1 Android模拟器 41 2.4.2 Dalvik调试监控服务(DDMS) 41 2.4.3 Android调试桥(ADB) 41 2.5 小结 42 第3章 创建应用程序和活动 43 3.1 Android应用程序的组成部分 43 3.2 程序清单简介 44 3.3 使用清单编辑器 47 3.4 Android应用程序生命周期 48 3.5 理解应用程序的优先级和进程状态 49 3.6 分离资源 50 3.6.1 创建资源 50 3.6.2 使用资源 57 3.6.3 To-Do List资源示例 60 3.6.4 为不同的语言和硬件创建资源 61 3.6.5 运行时配置更改 62 3.7 深入探讨Android活动 63 3.7.1 创建一个活动 63 3.7.2 活动生命周期 65 3.7.3 Android活动类 70 3.8 小结 70 第4章 创建用户界面 73 4.1 Android UI基本设计 74 4.2 View简介 74 4.2.1 使用View创建Activity(活动)用户界面 75 4.2.2 Android Widget工具箱 76 4.3 布局简介 77 4.4 创建新的View 78 4.4.1 修改现有的View 79 4.4.2 创建复合控件 83 4.4.3 创建定制的Widget和控件 86 4.4.4 使用定制的控件 97 4.5 创建和使用菜单 98 4.5.1 Android菜单系统简介 98 4.5.2 定义活动的菜单 100 4.5.3 动态更新菜单项 102 4.5.4 处理菜单选择 103 4.5.5 子菜单和上下文菜单 103 4.5.6 To-Do List示例续 105 4.6 小结 111 第5章 Intent、广播接收器、Adapter和Internet 113 5.1 Intent简介 113 5.1.1 使用Intent来启动活动 114 5.1.2 使用Intent Filter来为隐式Intent提供服务 121 5.1.3 使用Intent Filter作为插件和扩展 129 5.1.4 使用Intent来广播事件 132 5.2 Adapter简介 135 5.2.1 Android提供的部分Adapter简介 135 5.2.2 使用Adapter绑定数据 136 5.3 使用Internet资源 141 5.3.1 连接到Internet资源 142 5.3.2 利用Internet资源 142 5.4 Dialog简介 143 5.4.1 Dialog类简介 144 5.4.2 使用活动作为对话框 146 5.5 创建一个地震查看器 147 5.6 小结 156 第6章 数据存储、检索和共享 159 6.1 Android中的数据保存技术 160 6.2 保存简单的应用程序数据 160 6.2.1 创建和保存preference 160 6.2.2 检索共享的preference 161 6.2.3 保存活动状态 162 6.2.4 为地震查看器创建一个Preference页 165 6.3 保存和载入文件 174 6.3.1 将静态文件作为资源添加 174 6.3.2 文件管理工具 175 6.4 Android中的数据库 175 6.4.1 SQLite简介 175 6.4.2 Cursor和内容值 176 6.4.3 使用Android数据库 177 6.5 内容提供器简介 189 6.5.1 使用内容提供器 190 6.5.2 本地Android内容提供器 192 6.5.3 创建一个新的内容提供器 194 6.5.4 创建和使用地震内容提供器 197 6.6 小结 206 第7章 地图、地理编码和基于位置的服务 207 7.1 使用基于位置的服务 207 7.2 使用Test Provider构建模拟器 208 7.2.1 更新模拟位置提供器中的位置 208 7.2.2 创建一个应用程序来管理Test Location Provider 209 7.3 选择一个Location Provider 211 7.3.1 查找可用的提供器 212 7.3.2 根据要求标准查找提供器 212 7.4 确定自己所在的位置 213 7.4.1 “Where Am I”示例 213 7.4.2 追踪移动 216 7.4.3 更新“WhereAmI”示例中的位置 217 7.5 使用邻近提醒 219 7.6 使用Geocoder 220 7.6.1 反向地理编码 221 7.6.2 前向地理编码 221 7.6.3 对“Where Am I”示例进行地理编码 222 7.7 创建基于地图的活动 223 7.7.1 MapView和MapActivity简介 224 7.7.2 创建一个基于地图的活动 224 7.7.3 配置和使用Map View 226 7.7.4 使用Map Controller 227 7.7.5 对“Where Am I”示例使用地图 227 7.7.6 创建和使用覆盖(Overlay) 231 7.7.7 MyLocationOverlay简介 238 7.7.8 ItemizedOverlay和OverlayItem简介 239 7.7.9 将View固定到地图和地图的某个位置上 240 7.8 对Earthquake示例添加地图功能 241 7.9 小结 247 第8章 后台工作 249 8.1 服务简介 250 8.1.1 创建和控制服务 250 8.1.2 将活动和服务绑定 259 8.2 使用后台工作线程 260 8.2.1 创建新的线程 260 8.2.2 为GUI操作同步线程 261 8.2.3 将Earthquake Service移动到后台线程 262 8.3 创建一个Toast 263 8.3.1 定制Toast 263 8.3.2 在工作(worker)线程中使用Toast 265 8.4 Notification简介 266 8.4.1 Notification Manager简介 267 8.4.2 创建Notification 267 8.4.3 触发Notification 268 8.4.4 向Earthquake Monitor中添加Notification 268 8.4.5 高级Notification技术 271 8.4.6 持续的和连续的Notification 273 8.5 使用Alarm 274 8.6 使用Alarm更新Earthquake 276 8.7 小结 278 第9章 P2P通信 279 9.1 Android即时消息简介 279 9.1.1 使用GTalk服务 280 9.1.2 和GTalk服务绑定 281 9.1.3 建立GTalk连接,开始一个IM会话 282 9.1.4 在线状态和联系人列表简介 282 9.1.5 管理聊天会话 285 9.1.6 发送和接收数据信息 289 9.2 SMS简介 291 9.2.1 在应用程序中使用SMS 291 9.2.2 发送SMS信息 291 9.2.3 监听SMS消息 294 9.2.4 紧急响应的SMS示例 296 9.2.5 紧急响应自动化 306 9.3 小结 314 第10章 访问Android硬件 317 10.1 使用媒体API 317 10.1.1 播放媒体资源 318 10.1.2 录制多媒体 319 10.2 使用摄像头 321 10.2.1 控制摄像头设置 321 10.2.2 使用摄像头预览 321 10.2.3 照相 322 10.3 Sensor Manager简介 323 10.4 使用加速计和指南针 324 10.4.1 加速计介绍 325 10.4.2 检测加速度的改变 325 10.4.3 创建一个速度计 327 10.4.4 确定方向 330 10.4.5 创建指南针和地平仪 332 10.5 Android电话功能 335 10.5.1 打电话 335 10.5.2 监控电话状态和电话活动 336 10.5.3 监控数据连通性和活动 338 10.5.4 访问手机的属性和状态 339 10.5.5 控制电话 340 10.6 使用蓝牙 341 10.6.1 蓝牙服务介绍 341 10.6.2 控制本地蓝牙设备 341 10.6.3 发现并配对蓝牙设备 342 10.6.4 管理蓝牙连接 343 10.6.5 使用蓝牙进行通信 343 10.6.6 使用蓝牙耳机 345 10.7 管理网络和Wi-Fi连接 346 10.7.1 监控和管理Internet连接 346 10.7.2 管理活动的连接 347 10.7.3 管理你的Wi-Fi 348 10.8 控制设备震动 351 10.9 小结 352 第11章 Android高级开发 353 11.1 Android的安全性 353 11.1.1 Linux内核安全 354 11.1.2 权限简介 354 11.1.3 声明和实施权限 354 11.1.4 为广播Intent实施权限 355 11.2 使用AIDL来支持服务IPC 355 11.3 使用Internet服务 360 11.4 构建内容丰富的用户界面 361 11.4.1 使用动画 361 11.4.2 使用主题来为应用程序添加皮肤 372 11.4.3 高级画布绘图 373 11.4.4 SurfaceView简介 389 11.4.5 创建交互式控件 392 11.5 小结 397 前言   对移动开发人员来说,现在是一个令人心潮澎湃的时代。手机从来没有像今天这样流行,强大的智能手机产品已经为消费者所普遍接受。诸如GPS、加速计和触摸屏等外观时尚且用途广泛的手机功能硬件,正在吸引越来越多的开发者创建各种新颖有趣的移动应用程序。   虽然设计Android硬件的目的是为了吸引消费者,但是真正的赢家却是开发人员。由于现有的手机应用程序的开发是构建在各手机厂家的私有操作系统之上的,所以它限制了第三方应用程序的开发,而Android为我们提供了一个开放和通用的选择。因为没有了人为制造的障碍,所以Android开发人员可以自由地编写能够充分利用日益强大的手机硬件的应用程序。因此,对Android感兴趣的开发人员都把Google在2008年发布Android这一举措作为移动技术发展史上的一个非常令人期待的重大事件。   由于Android构建在开源代码的框架之上,而且提供了强大的SDK库和开放的理念,所以它为广大的没有任何移动应用程序开发经验的新手开辟了一条开发完美的移动应用程序的康庄大道。而富有经验的移动开发人员现在也可以方便地扩展到Android平台上来,利用它独特的功能来改进现有产品或者开发其他新奇产品。   本书将指导你使用Androidl.0软件开发包来构建移动应用程序。在每章的讲解中,它会让你通过一系列示例项目逐步掌握Android中的各种新功能和技术,助你取得最圆满的学习效果。本书所介绍的各个应用实例简明扼要且极具实用价值,它们覆盖了Android 1.0的所有基本功能和高级功能。   由于Android 1.0是一个正在兴起的全新手机操作系统,所以当前支持它的手机还不多。和任何其他产品早期的发行版一样,Android的软件和开发库还会经历很多正常的改进和完善。本书的内容和示例提供了如何使用当前SDK来编写优秀的移动程序所需要的基础知识,同时也保持了快速适应未来版本更强大功能的灵活性。   0.1 读者对象   本书适合所有对在Android移动手机平台上创建应用程序感兴趣的人。不管是对经验丰富的移动开发人员,还是想通过Android开发移动应用程序的新手,本书都会提供富有价值的信息。   如果读者使用过手机(特别是运行Android的手机),那么这些使用经验会对阅读本书有所帮助,但这不是必需的。同样,如果以前有过手机开发经验,那么也有一定的帮助,但这也不是必需的。不过我们希望读者具有一定的软件开发经验,并且熟悉基本的开发流程。虽然了解一些Java知识也有用,但也不是必需的。   本书将在第1章和第2章中介绍移动应用程序开发的概要,并包含了如何在Android上开始开发的说明。除了这两章之外,对其他章节的阅读顺序不做要求。但是对第3~6章中描述的基本组件的理解,有利于你对其他章节的学习。第7~11章覆盖了各种可选和高级功能,你可以按照任意顺序阅读,也可以按需阅读。   0.2 本书内容   第1章简要介绍了Android,包括它是什么,以及它如何适应当前的移动开发。然后详细地讲述了Android作为一个开放平台能够提供什么功能,并解释了它为什么是一个创建移动应用程序的良机。   第2章讲述了移动开发的一些最佳实践,并解释了如何下载AndroidSDK和开始开发应用程序。该章同时也介绍了Android开发工具,并说明了如何从头创建新的应用程序。   第3-6章深入地探讨了基本的Android应用程序组件。首先讲述了组成Android应用程序和它的生命周期的每个部分,在介绍“活动”内容及其生存期与生命周期之前,将简要介绍应用程序清单和外部资源。   之后将学习如何使用布局和View创建用户界面,并且还将了解在应用程序组件之间执行动作和发送信息的Intent机制。接着将介绍Intemet资源,再后详细地讲述了数据存储、检索和共享。读者在此将了解首选保存机制、文件处理和数据库。在这个部分的最后还对如何使用内容提供器来共享应用程序数据进行了讲解。   第7~10章涉及到了较为高级的主题。首先介绍了地图以及基于位置的服务,接着介绍了服务、后台线程和Notification的用法。   接着介绍了Android的通信功能,包括通过即时通信和SMS来发送和接收消息。然后是有关硬件的内容,包括媒体录制及播放、摄像头、加速计和定位传感器。第10章的最后介绍了通话和网络硬件,包括通话API、蓝牙和网络管理(包括WiFi和移动数据连接)。   第11章介绍了几个高级开发主题,其中包括安全、IPC、高级图像技术以及用户与硬件的交互。   0.3 本书结构   本书通过按照一种合理的顺序进行组织,从而帮助具有不同开发背景的读者更好地学习如何编写高级Android应用程序。   尽管对阅读每个章节的顺序不做要求,但是请注意,某些示例项目是跨越多个章节开发的,在其中的每个阶段都会添加一些新的功能并做一些改进。 .  富有移动开发经验且拥有能正常工作的Android开发环境的开发人员可以跳过前两章的内容——这两章简要介绍了移动开发的基本知识以及如何创建开发环境——直接学习第3-6章。因为这几章涵盖了Android开发的基础知识,所以深入地理解这几章所讲述的概念非常重要。在学习了这几章之后,读者就可以继续学习其余的章节了,它们主要介绍了地图、基于位置的服务、后台程序以及诸如硬件交互和联网这样的更加高级的主题。   0.4 使用本书的要求   要使用本书中的示例代码,你需要通过下载Android SDK库和开发工具以及Java开发包,来创建一个Android开发环境。你可能还希望通过下载和安装Eclipse和Android开发人员工具插件来简化开发工作,但是这些都不是必需的。   Windows、Mac OS和Linux系统环境都支持Android开发,可以从Android站点下载相应的SDK。   要使用本书或者开发Android应用程序,你并不需要Android设备。   提示:   第2章更详细地列出了这些要求,并讲述了每一个组件的下载地址和安装方法。   0.5 约定说明   为了帮助你从本书中吸取到尽可能多的知识养分,并理解每部分的含义,本书将使用各种不同的约定。   提示的内容以楷体印出。   文本样式分别有;   ·使用两种不同的形式表示代码:   ·大部分示例代码使用没有背景的等宽字体。   ·使用灰色背景来强调当前上下文中特别重要的代码。   ·在某些示例代码中,你将看到如下的标记:   […previous code goes here…]   或者   […implement something here…]   它们表示的是使用实际的代码来代替这一整行(包括方括号),实际代码既可能来自前面例子的代码段,也可能会在后面由读者自己实现。   0.6 源代码   读者在学习本书中的示例时,既可以手工输入所有的代码,也可以使用本书附带的源代码文件。本书使用的所有源代码都可以从本书合作站点http://www.wrox.com/或www.tupwk.com.cn/downpage上下载。只要登录到站点http://www.wrox.com/,使用Search工具或使用书名列表就可以找到本书。接着单击本书细目页面上的Download Code链接,就可以获得所有源代码。   提示:   由于许多图书的书名都很类似,所以按ISBN进行搜索是最简单的,本书英文版的ISBN是978-0-470-34471—2。   在下载了代码后,只需用自己喜欢的解压缩软件对它进行解压缩即可。另外,也可以进入http://www.wrox.com/dynamic/books/download.aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码。   0.7 勘误表   尽管我们已经尽了最大的努力来保证文章或代码中不出现错误,但是错误总是难免的,如果你在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免走入误区,当然,这还有助于提供更高质量的信息。   要在网站上找到本书英文版的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在这个页面上可以查看到Wrox编辑己提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/booklist.shtml。   如果你在勘误表上没有找到错误,那么可以到www.wrox.com/contact/techsupport.shtml上,完成上面的表格,并把找到的错误发送给我们。我们将会核查这些信息,如果无误的话,会把它放置到本书的勘误表中,并在本书的后续版本中更正这些问题。   0.8 p2p.wrok.com   要与作者和同行讨论,请加入p2p.wrox.com上的P2P论坛。这个论坛是一个基于Web的系统,便于你张贴与Wrox图书相关的消息和相关技术,与其他读者和技术用户交流心得。   该论坛提供了订阅功能,当论坛上有新的消息时,它可以给你传送感兴趣的论题。Wrox作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题。   在http://p2p.wrox.com上,有许多不同的论坛,它们不仅有助于阅读本书,还有助于开发自己的应用程序。要加入论坛,可以遵循下面的步骤:   (1)进入p2p.wrox.com,单击Register链接。   (2)阅读使用协议,并单击Agree按钮。   (3)填写加入该论坛所需要的信息和自己希望提供的其他信息,并单击Submit按钮。   (4)你会收到一封电子邮件,其中的信息描述了如何验证账户和完成加入过程。   提示:   不加入P2P也可以阅读论坛上的消息,但要张贴自己的消息,就必须加入该论坛。加入论坛后,就可以张贴新消息,回复其他用户张贴的消息。可以随时在Web上阅读消息。如果要让该网站给自己发送特定论坛中的消息,可以单击论坛列表中该论坛名旁边的Subscribe to this Forum图标。   关于使用Wrox P2P的更多信息,可阅读P2PFAQ,了解论坛软件的工作情况以及P2P和Wrox图书的许多常见问题。要阅读FAQ,可以在任意P2P页面上单击FAQ链接。
zip
发布资源于 8 年前

Android高级编程--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Android高级编程 基本信息 原书名: Professional Android Application Development 原出版社: Wrox 作者: (英)Reto Meier 译者: 王鹏杰 霍建同 出版社:清华大学出版社 ISBN:9787302228448 上架时间:2010-7-1 出版日期:2010 年6月 开本:16开 页码:398 版次:1-1 内容简介   android提供一个开放的开发环境,为针对移动设备编写创新应用程序带来了激动人心的新机遇。作为使用androidsdk构建这些应用程序的实用指南书籍,《android高级编程》从始至终穿插了一系列示例项目,每个项目都引入android的新功能和新技术,以助您达到最圆满的学习效果。书中介绍android的所有基本功能,并通过简明扼要的示例引导您使用高级功能。    《android高级编程》首先简要介绍android软件栈,接着陈述为手机创建稳定可靠、赏心悦目的应用程序的基本原理。通过学习,您可以打下牢固的理论根基,了解使用当前android 1.0 sdk编写定制移动程序所需的知识,还能灵活快捷地运用未来的增强功能构建最前沿的解决方案。    主要内容    ◆android移动开发的最佳实践    ◆简要介绍活动、intent、清单和资源    ◆如何使用布局和定制view创建用户界面    ◆存储和共享应用程序数据的技术    ◆如何创建基于地图的应用程序,如何使用gps和地理编码位置等基于位置的服务    ◆如何创建和使用后台服务及notification    ◆使用加速计、指南针和摄像头硬件    ◆与电话和网络硬件相关的所有内容,如电话api、sms和网络管理等    ◆高级开发主题,包括安全、ipc以及一些高级图形和用户界面技术    读者对象    本书面向希望在android手机平台上创建应用程序的所有人员。不管是经验丰富的移动开发人员,还是初出茅庐的新手,都能从本书提供的宝贵信息中获益。 作译者   Reto Meier出生于澳大利西南的珀斯市,现居伦敦。 Reto是一位经验丰富的软件开发人员,拥有逾10年的GUI程序架构、设计和开发经验。他在涉足IT行业前曾从事过海洋石油和天然气开发以及金融工作。 Reto始终不渝地追求掌握新技术,从2007年Android发布之初Reto就迷恋上了此项技术。他利用业余时间研究包括WPF在内的多种开发平台以及Google的各种开发工具。 详情请访问Reto的个人网站RadioactiveYak,网址是http://blog.radioactiveyak.com。 目录 封面 -14 封底 -13 扉页 -12 版权 -11 作者简介 -10 前言 -9 目录 -4 第1章 Android简介 1 1.1 一些背景信息 2 1.1.1 不远的过去 2 1.1.2 未来的前景 2 1.2 对Android的误解 3 1.3 开放的移动开发平台 3 1.4 自带的Android应用程序 4 1.5 Android SDK功能 5 1.5.1 对包括摄像头、GPS和加速计在内的硬件的访问 5 1.5.2 自带的Google地图、地理编码和基于位置的服务 6 1.5.3 后台服务 6 1.5.4 SQLite 数据存储和检索数据库 6 1.5.5 共享数据和应用程序间通信 7 1.5.6 使用Google Talk的P2P服务 7 1.5.7 扩展的数据支持和2D/3D图形 7 1.5.8 优化的内存和进程管理 8 1.6 开放手机联盟简介 8 1.7 运行Android的环境 8 1.8 从事Android开发的原因 9 1.8.1 推动Android普及的因素 9 1.8.2 Android的独到之处 10 1.8.3 改变移动开发格局 10 1.9 开发框架简介 11 1.9.1 开发包中的资源 11 1.9.2 理解Android软件栈 12 1.9.3 Dalvik虚拟机 13 1.9.4 Android应用程序架构 14 1.9.5 Android库 14 1.9.6 高级Android库 15 1.10 小结 16 第2章 开始入手 17 2.1 Android开发 18 2.1.1 开始前的准备工作 18 2.1.2 创建第一个Android活动 22 2.1.3 Android应用程序的类型 27 2.2 面向移动设备的开发 28 2.2.1 关于硬件设计的考虑事项 28 2.2.2 考虑用户环境 31 2.2.3 Android开发 32 2.3 To-Do List示例 35 2.4 Android开发工具 40 2.4.1 Android模拟器 41 2.4.2 Dalvik调试监控服务(DDMS) 41 2.4.3 Android调试桥(ADB) 41 2.5 小结 42 第3章 创建应用程序和活动 43 3.1 Android应用程序的组成部分 43 3.2 程序清单简介 44 3.3 使用清单编辑器 47 3.4 Android应用程序生命周期 48 3.5 理解应用程序的优先级和进程状态 49 3.6 分离资源 50 3.6.1 创建资源 50 3.6.2 使用资源 57 3.6.3 To-Do List资源示例 60 3.6.4 为不同的语言和硬件创建资源 61 3.6.5 运行时配置更改 62 3.7 深入探讨Android活动 63 3.7.1 创建一个活动 63 3.7.2 活动生命周期 65 3.7.3 Android活动类 70 3.8 小结 70 第4章 创建用户界面 73 4.1 Android UI基本设计 74 4.2 View简介 74 4.2.1 使用View创建Activity(活动)用户界面 75 4.2.2 Android Widget工具箱 76 4.3 布局简介 77 4.4 创建新的View 78 4.4.1 修改现有的View 79 4.4.2 创建复合控件 83 4.4.3 创建定制的Widget和控件 86 4.4.4 使用定制的控件 97 4.5 创建和使用菜单 98 4.5.1 Android菜单系统简介 98 4.5.2 定义活动的菜单 100 4.5.3 动态更新菜单项 102 4.5.4 处理菜单选择 103 4.5.5 子菜单和上下文菜单 103 4.5.6 To-Do List示例续 105 4.6 小结 111 第5章 Intent、广播接收器、Adapter和Internet 113 5.1 Intent简介 113 5.1.1 使用Intent来启动活动 114 5.1.2 使用Intent Filter来为隐式Intent提供服务 121 5.1.3 使用Intent Filter作为插件和扩展 129 5.1.4 使用Intent来广播事件 132 5.2 Adapter简介 135 5.2.1 Android提供的部分Adapter简介 135 5.2.2 使用Adapter绑定数据 136 5.3 使用Internet资源 141 5.3.1 连接到Internet资源 142 5.3.2 利用Internet资源 142 5.4 Dialog简介 143 5.4.1 Dialog类简介 144 5.4.2 使用活动作为对话框 146 5.5 创建一个地震查看器 147 5.6 小结 156 第6章 数据存储、检索和共享 159 6.1 Android中的数据保存技术 160 6.2 保存简单的应用程序数据 160 6.2.1 创建和保存preference 160 6.2.2 检索共享的preference 161 6.2.3 保存活动状态 162 6.2.4 为地震查看器创建一个Preference页 165 6.3 保存和载入文件 174 6.3.1 将静态文件作为资源添加 174 6.3.2 文件管理工具 175 6.4 Android中的数据库 175 6.4.1 SQLite简介 175 6.4.2 Cursor和内容值 176 6.4.3 使用Android数据库 177 6.5 内容提供器简介 189 6.5.1 使用内容提供器 190 6.5.2 本地Android内容提供器 192 6.5.3 创建一个新的内容提供器 194 6.5.4 创建和使用地震内容提供器 197 6.6 小结 206 第7章 地图、地理编码和基于位置的服务 207 7.1 使用基于位置的服务 207 7.2 使用Test Provider构建模拟器 208 7.2.1 更新模拟位置提供器中的位置 208 7.2.2 创建一个应用程序来管理Test Location Provider 209 7.3 选择一个Location Provider 211 7.3.1 查找可用的提供器 212 7.3.2 根据要求标准查找提供器 212 7.4 确定自己所在的位置 213 7.4.1 “Where Am I”示例 213 7.4.2 追踪移动 216 7.4.3 更新“WhereAmI”示例中的位置 217 7.5 使用邻近提醒 219 7.6 使用Geocoder 220 7.6.1 反向地理编码 221 7.6.2 前向地理编码 221 7.6.3 对“Where Am I”示例进行地理编码 222 7.7 创建基于地图的活动 223 7.7.1 MapView和MapActivity简介 224 7.7.2 创建一个基于地图的活动 224 7.7.3 配置和使用Map View 226 7.7.4 使用Map Controller 227 7.7.5 对“Where Am I”示例使用地图 227 7.7.6 创建和使用覆盖(Overlay) 231 7.7.7 MyLocationOverlay简介 238 7.7.8 ItemizedOverlay和OverlayItem简介 239 7.7.9 将View固定到地图和地图的某个位置上 240 7.8 对Earthquake示例添加地图功能 241 7.9 小结 247 第8章 后台工作 249 8.1 服务简介 250 8.1.1 创建和控制服务 250 8.1.2 将活动和服务绑定 259 8.2 使用后台工作线程 260 8.2.1 创建新的线程 260 8.2.2 为GUI操作同步线程 261 8.2.3 将Earthquake Service移动到后台线程 262 8.3 创建一个Toast 263 8.3.1 定制Toast 263 8.3.2 在工作(worker)线程中使用Toast 265 8.4 Notification简介 266 8.4.1 Notification Manager简介 267 8.4.2 创建Notification 267 8.4.3 触发Notification 268 8.4.4 向Earthquake Monitor中添加Notification 268 8.4.5 高级Notification技术 271 8.4.6 持续的和连续的Notification 273 8.5 使用Alarm 274 8.6 使用Alarm更新Earthquake 276 8.7 小结 278 第9章 P2P通信 279 9.1 Android即时消息简介 279 9.1.1 使用GTalk服务 280 9.1.2 和GTalk服务绑定 281 9.1.3 建立GTalk连接,开始一个IM会话 282 9.1.4 在线状态和联系人列表简介 282 9.1.5 管理聊天会话 285 9.1.6 发送和接收数据信息 289 9.2 SMS简介 291 9.2.1 在应用程序中使用SMS 291 9.2.2 发送SMS信息 291 9.2.3 监听SMS消息 294 9.2.4 紧急响应的SMS示例 296 9.2.5 紧急响应自动化 306 9.3 小结 314 第10章 访问Android硬件 317 10.1 使用媒体API 317 10.1.1 播放媒体资源 318 10.1.2 录制多媒体 319 10.2 使用摄像头 321 10.2.1 控制摄像头设置 321 10.2.2 使用摄像头预览 321 10.2.3 照相 322 10.3 Sensor Manager简介 323 10.4 使用加速计和指南针 324 10.4.1 加速计介绍 325 10.4.2 检测加速度的改变 325 10.4.3 创建一个速度计 327 10.4.4 确定方向 330 10.4.5 创建指南针和地平仪 332 10.5 Android电话功能 335 10.5.1 打电话 335 10.5.2 监控电话状态和电话活动 336 10.5.3 监控数据连通性和活动 338 10.5.4 访问手机的属性和状态 339 10.5.5 控制电话 340 10.6 使用蓝牙 341 10.6.1 蓝牙服务介绍 341 10.6.2 控制本地蓝牙设备 341 10.6.3 发现并配对蓝牙设备 342 10.6.4 管理蓝牙连接 343 10.6.5 使用蓝牙进行通信 343 10.6.6 使用蓝牙耳机 345 10.7 管理网络和Wi-Fi连接 346 10.7.1 监控和管理Internet连接 346 10.7.2 管理活动的连接 347 10.7.3 管理你的Wi-Fi 348 10.8 控制设备震动 351 10.9 小结 352 第11章 Android高级开发 353 11.1 Android的安全性 353 11.1.1 Linux内核安全 354 11.1.2 权限简介 354 11.1.3 声明和实施权限 354 11.1.4 为广播Intent实施权限 355 11.2 使用AIDL来支持服务IPC 355 11.3 使用Internet服务 360 11.4 构建内容丰富的用户界面 361 11.4.1 使用动画 361 11.4.2 使用主题来为应用程序添加皮肤 372 11.4.3 高级画布绘图 373 11.4.4 SurfaceView简介 389 11.4.5 创建交互式控件 392 11.5 小结 397 前言   对移动开发人员来说,现在是一个令人心潮澎湃的时代。手机从来没有像今天这样流行,强大的智能手机产品已经为消费者所普遍接受。诸如GPS、加速计和触摸屏等外观时尚且用途广泛的手机功能硬件,正在吸引越来越多的开发者创建各种新颖有趣的移动应用程序。   虽然设计Android硬件的目的是为了吸引消费者,但是真正的赢家却是开发人员。由于现有的手机应用程序的开发是构建在各手机厂家的私有操作系统之上的,所以它限制了第三方应用程序的开发,而Android为我们提供了一个开放和通用的选择。因为没有了人为制造的障碍,所以Android开发人员可以自由地编写能够充分利用日益强大的手机硬件的应用程序。因此,对Android感兴趣的开发人员都把Google在2008年发布Android这一举措作为移动技术发展史上的一个非常令人期待的重大事件。   由于Android构建在开源代码的框架之上,而且提供了强大的SDK库和开放的理念,所以它为广大的没有任何移动应用程序开发经验的新手开辟了一条开发完美的移动应用程序的康庄大道。而富有经验的移动开发人员现在也可以方便地扩展到Android平台上来,利用它独特的功能来改进现有产品或者开发其他新奇产品。   本书将指导你使用Androidl.0软件开发包来构建移动应用程序。在每章的讲解中,它会让你通过一系列示例项目逐步掌握Android中的各种新功能和技术,助你取得最圆满的学习效果。本书所介绍的各个应用实例简明扼要且极具实用价值,它们覆盖了Android 1.0的所有基本功能和高级功能。   由于Android 1.0是一个正在兴起的全新手机操作系统,所以当前支持它的手机还不多。和任何其他产品早期的发行版一样,Android的软件和开发库还会经历很多正常的改进和完善。本书的内容和示例提供了如何使用当前SDK来编写优秀的移动程序所需要的基础知识,同时也保持了快速适应未来版本更强大功能的灵活性。   0.1 读者对象   本书适合所有对在Android移动手机平台上创建应用程序感兴趣的人。不管是对经验丰富的移动开发人员,还是想通过Android开发移动应用程序的新手,本书都会提供富有价值的信息。   如果读者使用过手机(特别是运行Android的手机),那么这些使用经验会对阅读本书有所帮助,但这不是必需的。同样,如果以前有过手机开发经验,那么也有一定的帮助,但这也不是必需的。不过我们希望读者具有一定的软件开发经验,并且熟悉基本的开发流程。虽然了解一些Java知识也有用,但也不是必需的。   本书将在第1章和第2章中介绍移动应用程序开发的概要,并包含了如何在Android上开始开发的说明。除了这两章之外,对其他章节的阅读顺序不做要求。但是对第3~6章中描述的基本组件的理解,有利于你对其他章节的学习。第7~11章覆盖了各种可选和高级功能,你可以按照任意顺序阅读,也可以按需阅读。   0.2 本书内容   第1章简要介绍了Android,包括它是什么,以及它如何适应当前的移动开发。然后详细地讲述了Android作为一个开放平台能够提供什么功能,并解释了它为什么是一个创建移动应用程序的良机。   第2章讲述了移动开发的一些最佳实践,并解释了如何下载AndroidSDK和开始开发应用程序。该章同时也介绍了Android开发工具,并说明了如何从头创建新的应用程序。   第3-6章深入地探讨了基本的Android应用程序组件。首先讲述了组成Android应用程序和它的生命周期的每个部分,在介绍“活动”内容及其生存期与生命周期之前,将简要介绍应用程序清单和外部资源。   之后将学习如何使用布局和View创建用户界面,并且还将了解在应用程序组件之间执行动作和发送信息的Intent机制。接着将介绍Intemet资源,再后详细地讲述了数据存储、检索和共享。读者在此将了解首选保存机制、文件处理和数据库。在这个部分的最后还对如何使用内容提供器来共享应用程序数据进行了讲解。   第7~10章涉及到了较为高级的主题。首先介绍了地图以及基于位置的服务,接着介绍了服务、后台线程和Notification的用法。   接着介绍了Android的通信功能,包括通过即时通信和SMS来发送和接收消息。然后是有关硬件的内容,包括媒体录制及播放、摄像头、加速计和定位传感器。第10章的最后介绍了通话和网络硬件,包括通话API、蓝牙和网络管理(包括WiFi和移动数据连接)。   第11章介绍了几个高级开发主题,其中包括安全、IPC、高级图像技术以及用户与硬件的交互。   0.3 本书结构   本书通过按照一种合理的顺序进行组织,从而帮助具有不同开发背景的读者更好地学习如何编写高级Android应用程序。   尽管对阅读每个章节的顺序不做要求,但是请注意,某些示例项目是跨越多个章节开发的,在其中的每个阶段都会添加一些新的功能并做一些改进。 .  富有移动开发经验且拥有能正常工作的Android开发环境的开发人员可以跳过前两章的内容——这两章简要介绍了移动开发的基本知识以及如何创建开发环境——直接学习第3-6章。因为这几章涵盖了Android开发的基础知识,所以深入地理解这几章所讲述的概念非常重要。在学习了这几章之后,读者就可以继续学习其余的章节了,它们主要介绍了地图、基于位置的服务、后台程序以及诸如硬件交互和联网这样的更加高级的主题。   0.4 使用本书的要求   要使用本书中的示例代码,你需要通过下载Android SDK库和开发工具以及Java开发包,来创建一个Android开发环境。你可能还希望通过下载和安装Eclipse和Android开发人员工具插件来简化开发工作,但是这些都不是必需的。   Windows、Mac OS和Linux系统环境都支持Android开发,可以从Android站点下载相应的SDK。   要使用本书或者开发Android应用程序,你并不需要Android设备。   提示:   第2章更详细地列出了这些要求,并讲述了每一个组件的下载地址和安装方法。   0.5 约定说明   为了帮助你从本书中吸取到尽可能多的知识养分,并理解每部分的含义,本书将使用各种不同的约定。   提示的内容以楷体印出。   文本样式分别有;   ·使用两种不同的形式表示代码:   ·大部分示例代码使用没有背景的等宽字体。   ·使用灰色背景来强调当前上下文中特别重要的代码。   ·在某些示例代码中,你将看到如下的标记:   […previous code goes here…]   或者   […implement something here…]   它们表示的是使用实际的代码来代替这一整行(包括方括号),实际代码既可能来自前面例子的代码段,也可能会在后面由读者自己实现。   0.6 源代码   读者在学习本书中的示例时,既可以手工输入所有的代码,也可以使用本书附带的源代码文件。本书使用的所有源代码都可以从本书合作站点http://www.wrox.com/或www.tupwk.com.cn/downpage上下载。只要登录到站点http://www.wrox.com/,使用Search工具或使用书名列表就可以找到本书。接着单击本书细目页面上的Download Code链接,就可以获得所有源代码。   提示:   由于许多图书的书名都很类似,所以按ISBN进行搜索是最简单的,本书英文版的ISBN是978-0-470-34471—2。   在下载了代码后,只需用自己喜欢的解压缩软件对它进行解压缩即可。另外,也可以进入http://www.wrox.com/dynamic/books/download.aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码。   0.7 勘误表   尽管我们已经尽了最大的努力来保证文章或代码中不出现错误,但是错误总是难免的,如果你在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免走入误区,当然,这还有助于提供更高质量的信息。   要在网站上找到本书英文版的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在这个页面上可以查看到Wrox编辑己提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/booklist.shtml。   如果你在勘误表上没有找到错误,那么可以到www.wrox.com/contact/techsupport.shtml上,完成上面的表格,并把找到的错误发送给我们。我们将会核查这些信息,如果无误的话,会把它放置到本书的勘误表中,并在本书的后续版本中更正这些问题。   0.8 p2p.wrok.com   要与作者和同行讨论,请加入p2p.wrox.com上的P2P论坛。这个论坛是一个基于Web的系统,便于你张贴与Wrox图书相关的消息和相关技术,与其他读者和技术用户交流心得。   该论坛提供了订阅功能,当论坛上有新的消息时,它可以给你传送感兴趣的论题。Wrox作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题。   在http://p2p.wrox.com上,有许多不同的论坛,它们不仅有助于阅读本书,还有助于开发自己的应用程序。要加入论坛,可以遵循下面的步骤:   (1)进入p2p.wrox.com,单击Register链接。   (2)阅读使用协议,并单击Agree按钮。   (3)填写加入该论坛所需要的信息和自己希望提供的其他信息,并单击Submit按钮。   (4)你会收到一封电子邮件,其中的信息描述了如何验证账户和完成加入过程。   提示:   不加入P2P也可以阅读论坛上的消息,但要张贴自己的消息,就必须加入该论坛。加入论坛后,就可以张贴新消息,回复其他用户张贴的消息。可以随时在Web上阅读消息。如果要让该网站给自己发送特定论坛中的消息,可以单击论坛列表中该论坛名旁边的Subscribe to this Forum图标。   关于使用Wrox P2P的更多信息,可阅读P2PFAQ,了解论坛软件的工作情况以及P2P和Wrox图书的许多常见问题。要阅读FAQ,可以在任意P2P页面上单击FAQ链接。
pdf
发布资源于 8 年前

精通Oracle 10g PL/SQL编程--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 精通Oracle 10g PL/SQL编程 基本信息 作者: 王海亮 林立新 于三禄 郑建茹    丛书名: 万水Oracle技术丛书 出版社:中国水利水电出版社 ISBN:7508423348 上架时间:2004-10-27 出版日期:2004 年9月 开本:16开 页码:436 版次:1-1 内容简介    《精通Oracle10g PL\SQL编程》阐述了PL/SQL的基础编程知识(嵌入SQL语句和编写子程序),PL/SQL的所有高级开发特征(使用记录类型、集合类型、对象类型和大对象类型)等内容。 目录 封面 -10 封底 -9 扉页 -8 版权 -7 前言 -6 目录 -3 第1章 PL/SQL综述 1 1.1 SQL简介 1 1.2 PL/SQL简介 3 1.3 Oracle 10g PL/SQL新特性 5 第2章 PL/SQL开发工具 8 2.1 SQL*Plus 8 1.在命令行运行SQL*Plus 8 2.在Windows环境中运行SQL*Plus 9 3.iSQL*Plus 10 4.在SQL*Plus中检测PL/SQL错误 11 2.2 PL/SQL Developer 12 1.Command Window 12 2.Program Window 13 3.Test Window 13 2.3 Procedure Builder 14 1.连接到数据库 14 2.对象导航器 15 3.PL/SQL解析器 15 4.程序单元编辑器 16 5.存储程序单元编辑器 16 6.数据库触发器编辑器 17 2.4 习题 17 第3章 PL/SQL基础 20 3.1 PL/SQL块简介 20 3.1.1 PL/SQL块结构 20 3.1.2 PL/SQL块分类 22 1.匿名块 22 2.命名块 22 3.子程序 23 4.触发器 25 3.2 定义并使用变量 25 3.2.1 标量变量 26 1.常用标量类型 26 (1)ARCHAR2(n) 26 (2)CHAR(n) 26 (3)NUMBER(p,s) 26 (4)DATE 26 (5)TIMESTAMP 26 (6)LONG和LONG RAW 26 (7)BOOLEAN 26 (8)BINARY_INTEGER 26 (9)BINARY_FLOAT和BINARY_DOUBLE 27 2.定义标量变量 27 3.使用标量变量 27 4.使用%TYPE属性 28 3.2.2复合变量 29 1.PL/SQL记录 29 2.PL/SQL表 29 3.嵌套表 30 4.VARRAY 30 3.2.3参照变量 31 1.REF CURSOR 31 2.REF obj_type 31 3.2.4LOB变量 32 3.2.5非PL/SQL变量 33 1.使用SQL*Plus变量 33 2.使用Procedure Builder变量 33 3.使用Pro*C/C++变量 33 3.3 编写PL/SQL代码 34 3.3.1 PL/SQL词汇单元 34 1.分隔符 34 (1)单符号分隔符 34 (2)组合分隔符 35 2.标识符 35 3.文本 36 (1)数字文本 36 (2)字符文本 36 (3)字符串文本 36 (4)布尔文本 36 (5)日期时间文本 37 4.注释 37 (1)单行注释 37 (2)多行注释 37 3.3.2 PL/SQL代码编写规则 37 1.标识符命名规则 37 2.大小写规则 38 3.代码缩进 38 4.嵌套块和变量范围 38 5.在PL/SQL块中可以使用的SQL函数 39 3.4 习题 39 第4章 使用SQL语句 41 4.1 使用基本查询 41 4.1.1 简单查询语句 41 4.1.2 使用WHERE子句 48 4.1.3 使用ORDER BY子句 52 4.2 使用DML语句 55 4.2.1 插入数据 55 4.2.2 更新数据 58 4.2.3 删除数据 60 4.3 使用事务控制语句 61 4.3.1 事务和锁 61 4.3
pdf
发布资源于 8 年前

数据库系统基础教程(原书第3版)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 数据库系统基础教程(原书第3版) 基本信息 原书名: First Course in Database Systems, A (3rd Edition) 原出版社: Prentice Hall 作者: (美)Jeffrey D. Ullman    Jennifer Widom    译者: 岳丽华 金培权 万寿红 丛书名: 计算机科学丛书 出版社:机械工业出版社 ISBN:9787111268284 上架时间:2009-8-11 出版日期:2009 年8月 开本:16开 页码:332 版次:3-1 内容简介    本书由斯坦福大学知名计算机科学家jeffrey ullman和jennifer widom合作编写。本书首先介绍流行的关系数据库和对象关系数据库内容,涉及关系数据模型、e/r模型、uml模型以及对象模型等高级数据模型。然后介绍了有关半结构化数据组织管理中比较流行的xml等内容,既包括了数据组织模型的内容,也给出了相关编程语言,如xpath、xquery、xslt等。.    本书举例丰富翔实,既可用作大学本科、研究生计算机及相关专业数据库课程的教科书,也可用作数据库领域技术人员的参考书。    本书特点    全面改版的组织结构。    uml数据库模型的新内容。    包括3nf综合算法在内的操作依赖新算法的引入。..    更多的3nf,包括3nf综合算法。    扩展的sql触发讨论。    新增的索引选择和物化视图。    新增的三层体系结构。    新增的php。    新增的olap和sql立方体算子介绍。    扩展的xml内容,包括xml模式、xpath、xquery和xslt。... 作译者   Jennifer Widom 美国康奈尔大学计算机科学博士,现为斯坦福大学计算机科学与电子工程系教授,研究非传统的数据管理。她是ACM会士、Guggenheim会士.Guggenheim会士和美国国家工程院成员,并且是多个编辑委员会.程序委员会和顾问委员会成员.她在2007年获得了ACM SIGMOD Edgar F. Codd 发明奖.   Jeffrey D. Ullman 斯坦福大学计算机科学系Stanford W. Ascherman教授,数据库技术专家。他独立或与人合作出版了15本著作,发表了170多篇技术论文。他的研究兴趣包括数据库理论、数据库集成、数据挖掘和利用信息基础设施进行教育。他是美国国家工程院成员,曾获得Knuth奖、SIGMOD贡献奖、Karlstrom杰出教育家奖和Edgar F. Codd发明奖。 目录 封面 -13 封底 -12 扉页 -11 版权 -10 前言 -9 目录 -7 第1章 数据库系统世界 1 1.1 数据库系统的发展 1 1.1.1 早期的数据库管理系统 1 1.1.2 关系数据库系统 2 1.1.3 越来越小的系统 2 1.1.4 越来越大的系统 2 1.1.5 信息集成 3 1.2 数据库管理系统概述 3 1.2.1 数据定义语言命令 3 1.2.2 查询处理概述 4 1.2.3 存储器和缓冲区管理器 5 1.2.4 事务处理 5 1.2.5 查询处理器 6 1.3 本书概述 6 1.4 参考文献 7 第一部分 关系数据库模型 9 第2章 关系数据模型 9 2.1 数据模型概述 9 2.1.1 什么是数据模型 9 2.1.2 一些重要的数据模型 9 2.1.3 关系模型简介 10 2.1.4 半结构化模型简介 10 2.1.5 其他数据模型 11 2.1.6 几种建模方法的比较 11 2.2 关系模型基础 12 2.2.1 属性 12 2.2.2 模式 12 2.2.3 元组 12 2.2.4 域 12 2.2.5 关系的等价描述 13 2.2.6 关系实例 13 2.2.7 关系上的键 13 2.2.8 数据库模式示例 14 2.2.9 习题 15 2.3 在SQL中定义关系模式 16 2.3.1 SQL中的关系 16 2.3.2 数据类型 16 2.3.3 简单的表定义 17 2.3.4 修改关系模式 18 2.3.5 默认值 18 2.3.6 键的声明 19 2.3.7 习题 20 2.4 代数查询语言 21 2.4.1 为什么需要一种专门的查询语言 21 2.4.2 什么是代数 21 2.4.3 关系代数概述 21 2.4.4 关系上的集合操作 21 2.4.5 投影 23 2.4.6 选择 23 2.4.7 笛卡儿积 24 2.4.8 自然连接 24 2.4.9 q连接 25 2.4.10 组合操作构成查询 26 2.4.11 命名和重命名 27 2.4.12 操作之间的联系 27 2.4.13 代数表达式的线性符号 28 2.4.14 习题 29 2.5 关系上的约束 32 2.5.1 作为约束语言的关系代数 32 2.5.2 引用完整性约束 33 2.5.3 键约束 33 2.5.4 其他约束举例 34 2.5.5 习题 35 2.6 小结 35 2.7 参考文献 36 第3章 关系数据库设计理论 37 3.1 函数依赖 37 3.1.1 函数依赖的定义 37 3.1.2 关系的键 38 3.1.3 超键 39 3.1.4 习题 40 3.2 函数依赖的规则 40 3.2.1 函数依赖的推导 40 3.2.2 分解/结合规则 40 3.2.3 平凡函数依赖 41 3.2.4 计算属性的闭包 42 3.2.5 闭包算法为何有效 43 3.2.6 传递规则 44 3.2.7 函数依赖的闭包集合 45 3.2.8 投影函数依赖 45 3.2.9 习题 47 3.3 关系数据库模式设计 48 3.3.1 异常 48 3.3.2 分解关系 49 3.3.3 Boyce-Codd范式 50 3.3.4 分解为BCNF 50 3.3.5 习题 52 3.4 分解的优劣 53 3.4.1 从分解中恢复信息 53 3.4.2 无损连接的chase检验 55 3.4.3 为什么chase检验有效 56 3.4.4 依赖的保持 57 3.4.5 习题 58 3.5 第三范式 58 3.5.1 第三范式的定义 59 3.5.2 3NF模式综合算法 59 3.5.3 为什么3NF综合算法有效 60 3.5.4 习题 60 3.6 多值依赖 61 3.6.1 属性独立及随之产生的冗余 61 3.6.2 多值依赖的定义 61 3.6.3 多值依赖的推导 62 3.6.4 第四范式 64 3.6.5 分解为第四范式 64 3.6.6 范式间的联系 65 3.6.7 习题 65 3.7 MVD的发现算法 66 3.7.1 闭包和chase 66 3.7.2 将chase扩展到MVD 67 3.7.3 chase为何对MVD有效 69 3.7.4 投影MVD 69 3.7.5 习题 70 3.8 小结 70 3.9 参考文献 71 第4章 高级数据库模型 73 4.1 E/R模型 73 4.1.1 实体集 73 4.1.2 属性 74 4.1.3 联系 74 4.1.4 实体-联系图 74 4.1.5 E/R图实例 75 4.1.6 二元E/R联系的多样性 75 4.1.7 多路联系 76 4.1.8 联系中的角色 77 4.1.9 联系的属性 78 4.1.10 多路联系到二元联系的转换 79 4.1.11 E/R模型中的子类 80 4.1.12 习题 81 4.2 设计原则 82 4.2.1 忠实性 82 4.2.2 避免冗余 83 4.2.3 简单性 83 4.2.4 选择正确的联系 83 4.2.5 选择正确的元素种类 84 4.2.6 习题 86 4.3 E/R模型中的约束 87 4.3.1 E/R模型中的键 87 4.3.2 E/R模型中键的表示 87 4.3.3 引用完整性 88 4.3.4 度约束 89 4.3.5 习题 89 4.4 弱实体集 89 4.4.1 弱实体集的来源 89 4.4.2 弱实体集的要求 90 4.4.3 弱实体集的符号 91 4.4.4 习题 91 4.5 从E/R图到关系设计 92 4.5.1 实体集到关系的转化 92 4.5.2 E/R联系到关系的转化 92 4.5.3 关系组合 94 4.5.4 处理弱实体集 95 4.5.5 习题 96 4.6 子类结构到关系的转化 97 4.6.1 E/R方式转化 97 4.6.2 面向对象方法 98 4.6.3 使用空值组合关系 99 4.6.4 各种方法的比较 99 4.6.5 习题 100 4.7 统一建模语言 101 4.7.1 UML类 101 4.7.2 UML类的键 101 4.7.3 关联 101 4.7.4 自关联 102 4.7.5 关联类 103 4.7.6 UML中的子类 103 4.7.7 聚集与组合 104 4.7.8 习题 105 4.8 UML图到关系的转化 105 4.8.1 UML到关系的基础知识 105 4.8.2 从UML子类到关系 106 4.8.3 从聚集与组合到关系 106 4.8.4 UML与弱实体集的类比 107 4.8.5 习题 108 4.9 对象定义语言 108 4.9.1 类声明 108 4.9.2 ODL中的属性 108 4.9.3 ODL中的联系 109 4.9.4 反向联系 109 4.9.5 联系的多重性 110 4.9.6 ODL中的类型 110 4.9.7 ODL中的子类 112 4.9.8 在ODL中声明键 113 4.9.9 习题 113 4.10 从ODL设计到关系设计 114 4.10.1 从ODL类到关系 114 4.10.2 类中的复杂属性 114 4.10.3 值集合类型属性的表示 115 4.10.4 其他类型构建器的表示 116 4.10.5 ODL中联系的表示 117 4.10.6 习题 117 4.11 小结 118 4.12 参考文献 119 第二部分 关系数据库程序设计 121 第5章 代数和逻辑查询语言 121 5.1 包上的关系操作 121 5.1.1 为什么采用包 121 5.1.2 包的并、交、差 122 5.1.3 包上的投影操作 123 5.1.4 包上的选择操作 123 5.1.5 包的笛卡儿积 124 5.1.6 包的连接 124 5.1.7 习题 125 5.2 关系代数的扩展操作符 125 5.2.1 消除重复 126 5.2.2 聚集操作符 126 5.2.3 分组 127 5.2.4 分组操作符 127 5.2.5 扩展的投影操作符 128 5.2.6 排序操作符 129 5.2.7 外连接 129 5.2.8 习题 130 5.3 关系逻辑 131 5.3.1 谓词和原子 131 5.3.2 算术原子 131 5.3.3 Datalog规则和查询 132 5.3.4 Datalog规则的意义 133 5.3.5 扩展谓词和内涵谓词 134 5.3.6 Datalog规则应用于包 135 5.3.7 习题 136 5.4 关系代数与Datalog 136 5.4.1 布尔操作 136 5.4.2 投影 137 5.4.3 选择 137 5.4.4 积 138 5.4.5 连接 139 5.4.6 用Datalog模拟多重操作 139 5.4.7 Datalog与关系代数的比较 140 5.4.8 习题 141 5.5 小结 141 5.6 参考文献 142 第6章 数据库语言SQL 143 6.1 SQL中的简单查询 143 6.1.1 SQL中的投影 145 6.1.2 SQL中的选择 146 6.1.3 字符串比较 147 6.1.4 SQL中的模式匹配 147 6.1.5 日期和时间 148 6.1.6 空值和涉及空值的比较 149 6.1.7 布尔值UNKNOWN 149 6.1.8 输出排序 151 6.1.9 习题 151 6.2 多关系查询 152 6.2.1 SQL中的积和连接 153 6.2.2 消除属性歧义 153 6.2.3 元组变量 154 6.2.4 多关系查询的解释 155 6.2.5 查询的并、交、差 156 6.2.6 习题 157 6.3 子查询 158 6.3.1 产生标量值的子查询 159 6.3.2 关系的条件表达式 160 6.3.3 元组的条件表达式 160 6.3.4 关联子查询 161 6.3.5 FROM子句中的子查询 162 6.3.6 SQL的连接表达式 163 6.3.7 自然连接 164 6.3.8 外连接 164 6.3.9 习题 165 6.4 全关系操作 167 6.4.1 消除重复 167 6.4.2 并、交、差中的重复 168 6.4.3 SQL中的分组和聚集 168 6.4.4 聚集操作符 168 6.4.5 分组 169 6.4.6 分组、聚集和空值 170 6.4.7 HAVING子句 171 6.4.8 习题 171 6.5 数据库更新 172 6.5.1 插入 172 6.5.2 删除 174 6.5.3 修改 174 6.5.4 习题 175 6.6 SQL中的事务 175 6.6.1 可串行化 175 6.6.2 原子性 177 6.6.3 事务 177 6.6.4 只读事务 178 6.6.5 读脏数据 179 6.6.6 其他隔离层次 180 6.6.7 习题 181 6.7 小结 182 6.8 参考文献 183 第7章 约束与触发器 184 7.1 键和外键 184 7.1.1 外键约束声明 184 7.1.2 维护引用完整性 185 7.1.3 延迟约束检查 186 7.1.4 习题 188 7.2 属性和元组上的约束 188 7.2.1 非空值约束 189 7.2.2 基于属性的CHECK约束 189 7.2.3 基于元组的CHECK约束 190 7.2.4 基于元组和基于属性的约束的比较 191 7.2.5 习题 191 7.3 修改约束 192 7.3.1 给约束命名 192 7.3.2 修改表上的约束 193 7.3.3 习题 193 7.4 断言 194 7.4.1 创建断言 194 7.4.2 使用断言 194 7.4.3 习题 195 7.5 触发器 196 7.5.1 SQL中的触发器 196 7.5.2 触发器设计的选项 197 7.5.3 习题 199 7.6 小结 200 7.7 参考文献 201 第8章 视图与索引 202 8.1 虚拟视图 202 8.1.1 视图定义 202 8.1.2 视图查询 203 8.1.3 属性重命名 203 8.1.4 习题 204 8.2 视图更新 204 8.2.1 视图删除 204 8.2.2 可更新视图 204 8.2.3 视图中的替换触发器 206 8.2.4 习题 207 8.3 SQL中的索引 207 8.3.1 建立索引的动机 208 8.3.2 索引的声明 208 8.3.3 习题 209 8.4 索引的选择 209 8.4.1 简单代价模型 209 8.4.2 一些有用的索引 209 8.4.3 计算最佳索引 211 8.4.4 索引的自动选择 213 8.4.5 习题 213 8.5 物化视图 214 8.5.1 物化视图的维护 214 8.5.2 物化视图的定期维护 215 8.5.3 利用物化视图重写查询 216 8.5.4 物化视图的自动创建 217 8.5.5 习题 218 8.6 小结 218 8.7 参考文献 219 第9章 服务器环境下的SQL 220 9.1 三层体系结构 220 9.1.1 Web服务器层 220 9.1.2 应用层 221 9.1.3 数据库层 222 9.2 SQL环境 222 9.2.1 环境 222 9.2.2 模式 223 9.2.3 目录 223 9.2.4 SQL环境中的客户和服务器 224 9.2.5 连接 224 9.2.6 会话 225 9.2.7 模块 225 9.3 SQL/宿主语言接口 225 9.3.1 阻抗不匹配问题 226 9.3.2 SQL与宿主语言连接 227 9.3.3 DECLARE节 227 9.3.4 使用共享变量 227 9.3.5 单元组选择语句 228 9.3.6 游标 229 9.3.7 游标更新 231 9.3.8 避免并发修改 231 9.3.9 动态SQL 232 9.3.10 习题 233 9.4 存储过程 234 9.4.1 创建PSM函数和过程 234 9.4.2 PSM中的简单语句格式 234 9.4.3 分支语句 235 9.4.4 PSM中的查询 236 9.4.5 PSM中的循环 237 9.4.6 for循环 238 9.4.7 PSM中的异常处理 239 9.4.8 使用PSM函数和过程 241 9.4.9 习题 241 9.5 使用调用层接口 242 9.5.1 SQL/CLI简介 242 9.5.2 进程语句 244 9.5.3 从查询结果中取数据 244 9.5.4 向查询传递参数 246 9.5.5 习题 247 9.6 JDBC 247 9.6.1 JDBC简介 247 9.6.2 JDBC中的创建语句 248 9.6.3 JDBC中的游标操作 249 9.6.4 参数传递 249 9.6.5 习题 250 9.7 PHP 250 9.7.1 PHP基础 250 9.7.2 数组 251 9.7.3 PEAR DB库 251 9.7.4 使用DB创建数据库连接 251 9.7.5 执行SQL语句 251 9.7.6 PHP中的游标操作 252 9.7.7 PHP中的动态SQL 252 9.7.8 习题 253 9.8 小结 253 9.9 参考文献 254 第10章 关系数据库的新课题 255 10.1 SQL中的安全机制和用户认证 255 10.1.1 权限 255 10.1.2 创建权限 256 10.1.3 检查权限的过程 257 10.1.4 授权 257 10.1.5 授权图 258 10.1.6 收权 259 10.1.7 习题 262 10.2 SQL中的递归 262 10.2.1 在SQL中定义递归关系 262 10.2.2 有问题的递归SQL表达式 264 10.2.3 习题 266 10.3 对象关系模型 267 10.3.1 从关系到对象关系 267 10.3.2 嵌套关系 267 10.3.3 引用 268 10.3.4 面向对象与对象关系的比较 269 10.3.5 习题 270 10.4 SQL中的用户定义类型 270 10.4.1 在SQL中定义类型 270 10.4.2 用户定义类型中的方法声明 271 10.4.3 方法定义 272 10.4.4 用UDT声明关系 272 10.4.5 引用 272 10.4.6 为表生成对象标识符 273 10.4.7 习题 274 10.5 对象关系数据上的操作 274 10.5.1 引用的跟随 274 10.5.2 访问UDT类型的元组分量 275 10.5.3 生成器和转换器函数 276 10.5.4 UDT上联系的排序 277 10.5.5 习题 278 10.6 联机分析处理 279 10.6.1 OLAP和数据仓库 279 10.6.2 OLAP应用 279 10.6.3 OLAP数据的多维视图 280 10.6.4 星型模式 280 10.6.5 切片和切块 281 10.6.6 习题 283 10.7 数据立方体 283 10.7.1 立方体算子 284 10.7.2 SQL中的立方体算子 285 10.7.3 习题 286 10.8 小结 286 10.9 参考文献 287 第三部分 半结构化数据的建模和程序设计 289 第11章 半结构化数据模型 289 11.1 半结构化数据 289 11.1.1 为何需要半结构化数据模型 289 11.1.2 半结构化数据表示 290 11.1.3 信息集成与半结构化数据 291 11.1.4 习题 292 11.2 XML 292 11.2.1 语义标签 292 11.2.2 有模式和无模式的XML 292 11.2.3 格式规范的XML 292 11.2.4 属性 294 11.2.5 连接元素的属性 294 11.2.6 命名空间 295 11.2.7 XML和数据库 295 11.2.8 习题 296 11.3 文档类型定义 296 11.3.1 DTD的格式 296 11.3.2 使用DTD 299 11.3.3 属性列表 299 11.3.4 标识符和引用 299 11.3.5 习题 300 11.4 XML模式 301 11.4.1 XML模式的格式 301 11.4.2 元素 301 11.4.3 复杂类型 302 11.4.4 属性 303 11.4.5 受限的简单类型 304 11.4.6 XML模式中的键 305 11.4.7 XML模式中的外键 306 11.4.8 习题 308 11.5 小结 308 11.6 参考文献 309 第12章 XML程序设计语言 310 12.1 XPath 310 12.1.1 XPath数据模型 310 12.1.2 文档节点 311 12.1.3 路径表达式 311 12.1.4 相对路径表达式 312 12.1.5 路径表达式中的属性 312 12.1.6 轴 312 12.1.7 表达式的上下文 313 12.1.8 通配符 313 12.1.9 路径表达式中的条件 314 12.1.10 习题 315 12.2 XQuery 316 12.2.1 XQuery基础 317 12.2.2 FLWR表达式 318 12.2.3 通过变量的值置换变量 320 12.2.4 XQuery中的连接 321 12.2.5 XQuery比较操作符 322 12.2.6 消除重复 323 12.2.7 XQuery中的量词 323 12.2.8 聚集 324 12.2.9 XQuery表达式中的分支 324 12.2.10 查询结果排序 324 12.2.11 习题 325 12.3 扩展样式表语言 326 12.3.1 XSLT基础 326 12.3.2 模板 326 12.3.3 从XML数据中获取值 327 12.3.4 模板的递归应用 328 12.3.5 XSLT中的迭代 329 12.3.6 XSLT中的条件 330 12.3.7 习题 331 12.4 小结 332 12.5 参考文献 332 译者序   数据库已是当今信息社会须臾不可脱离的重要工具,数据库的教学也就成为计算机科学与技术专业的一门必修课程。.   Jeffrey D.Ullman教授是斯坦福大学计算机系的资深教授,自1980年编写了其第一本数据库教材《数据库系统原理》以来,已出版过多本数据库系统方面的教材。该书是他在斯坦福大学计算机系对大学生教授的第一门数据库课程(CS145)中使用的教材,Ullman教授在第2版出版4年后,对其作了更新又出版了第3版。与第2版相比,第3版不仅重新组织了章节从而使这本书的系统性更强,而且内容作了大幅度增加,包括了有关索引的介绍和目前XML数据库技术发展的新内容。   数据库技术发展到现在,其一个很大的变化是,数据库不仅要管理结构化的数据,而且要管理更多的半结构化的数据。本书正是从这个观点出发,将内容分成两大部分:首先仍然是流行的关系数据库和对象关系数据库内容,介绍了关系数据模型、E/R模型、UML模型以及对象模型等高级数据模型。然后介绍了有关半结构化数据组织管理中比较流行的XML等内容,既包括了数据组织模型的内容,也给出了相关编程语言,如XPath、XQuery、XSLT等。..   该版本仍然保留了本教材的主要特点,举例丰富翔实,便于教师教学和自学者学习。书中在每一节后都给出了大量的练习题,并且标注了习题的难易程度,既便于教学安排,又便于学生循序渐进地掌握教学内容。另外,在Jeffrey D.Ullman教授的主页(http://infolab.stanford.edu/~ullman/fcdb.html)上还有关于该课程实验的内容,这对于本课程的实验教学有很大帮助。   本书由岳丽华负责翻译审校了第1~7章,金培权负责翻译审校了第8~10章,万寿红负责翻译审校了第11~12章。另外,参加翻译工作的还有刘沾沾、向小岩、田明辉、赵旭剑、秦富童、卢科、孙逸雪、陈艳等。   限于水平,译文中难免有错误与不足之处,欢迎读者批评指正。...   译者   2009年5月    前言   在斯坦福大学,因为实行的是一年四学期制,所以数据库引论课被分为两门课程。第一门课程是CS145,该课程只要求学生学会使用数据库系统,而不要求知道DBMS实现的内容。CS145是CS245的预修课,CS245介绍DBMS实现。学生若想进一步学习数据库方面的课程,可以学习CS345(此课是理论课)、CS346(此课是DBMS实现实验课)以及CS347(此课介绍事务处理及分布式数据库)课程。.   从1997年开始,我们已经出版了两本配套教材。《数据库系统基础教程》是为CS145课程编写的。《数据库系统实现》是为CS245课程以及部分CS346课程编写的。由于很多学校实行学期制,或者是将这两门数据库引论课组合成一门引论课,因此,我们感到有必要将上述两本书合成一本《数据库系统全书》。   然而,更多的学生是要学会如何使用数据库系统,而不是如何实现数据库系统,所以我们继续将《数据库系统全书》的前半部分作为《数据库系统基础教程》出版。在第3版中,介绍了很多新内容,并且对编写思路有所调整。当前,数据库系统有两个重要模型:关系模型和半结构模型(XML)。因此,我们决定将面向对象数据库从原来的单独一章改为设计和对象关系系统章节中的内容。   第3版结构   在简短的第1章介绍之后,第2~4章中讨论关系模型。第4章讨论高级模型,除了E/R模型之外,还讨论UML(统一建模语言)。第4章中还包括ODL的简单介绍,主要是将它用作关系数据库模式的设计语言。在本书的Web站点上有更多有关ODL和OQL的介绍。   本版更新了函数依赖和多值依赖的内容,并作为第3章的主题。这里,假定函数依赖在其右部有一组属性集。另外还给出了一些算法,包括“chase”,该算法允许对依赖进行操作。第3章对3NF作了进一步讨论,包括3NF综合算法,以明确3NF和BCNF之间的区别是什么。   第5章除了讨论上一版的关系代数内容外,还增加了上一版第10章中的Datalog部分内容。有关Datalog中的递归内容,或者放入网站,或者放入了本版第10章中有关SQL的递归中讨论。   第6~10章讨论SQL程序设计的有关内容,是由上一版第6、7、8章及部分第10章内容重新组织而成的。有关索引和视图的内容单独组织为第8章,并且讨论了一些重要的新课题,包括物化视图和索引的自动选择等。   第9章基于上一版的第8章(嵌入式SQL),并新增加了有关三层体系结构一节。另外,还扩展了对JDBC的讨论,并加入了新的PHP内容。   第10章收集了一些有关SQL的高级课题。除涵盖上一版第8章中有关授权的内容和第10章中有关SQL的递归的内容外,大部分内容是有关嵌套关系模型(上一版的第4章)和SQL的对象关系特征(上一版的第9章)的。   第11章和第12章讨论XML以及基于XML的系统。除了包括上一版第4章最后的部分内容外,其他内容都是新的。第11章讨论建模,包括DTD以及XML模式。第12章讨论程序设计,包括XPath、XQuery和XSLT等。   如何使用本书   本书的内容很适合一学期(半学年)有关数据库建模和程序设计的课程。如果只有四分之一学年的时间,那么需要省略某些内容。我们认为第2~7章是核心内容。虽然我们认为每一个学生都应该从第9章的一节中学会如何在宿主语言中嵌入SQL语句,但是剩余的5章可以按照意愿进行选择。   若如同我们在CS145课程中所做的那样,你想给学生一个真实的数据库应用设计和实现课程作业,则应该对本书的讲解顺序做某些调整,较早开始对SQL的介绍。虽然学生在做数据库设计时需要规范化知识,但可以推迟有关函数依赖的介绍。   预备知识   我们曾经将此书作为本科生和一年级研究生所修课程的教材。正常情况下,该课程是二年级课程,在此之前已学习过:(1)数据结构、算法、离散数学,(2)软件系统、软件工程和程序设计语言等。最重要的是学生至少要对如下内容有基本的理解:代数表达式和代数定律,逻辑,基本的数据结构,面向对象程序设计概念和程序设计环境。可是,我们认为最好修完标准的计算机科学专业三年级课程后再使用本书作教材。   习题   本书几乎在每一节都包括大量的习题,我们用感叹号对难题做了标记,对最难的习题用双感叹号做了标记。   网上支持   本书的网址是:.. .  http://infolab.stanford.edu/~ullman/fcdb.html   该网站包括勘误表及支持材料。这里还有我们每次教授CS145课程的笔记,包括相关的作业、课程实验及考卷等。另外,我们还把第3版中没有出现的第2版的材料放在网站上。   致谢   我们感谢与Donald Kossmann的讨论,特别是有关XML及其相关的程序设计系统内容的讨论。我们还要感谢Bobbie Cochrane帮助我们理解上一版中有关触发器的语义。   有很多人曾帮助过我们,他们或是提供了本书及早期版本内容的最初材料,或是提供了本书或其他网上材料的勘误表等。对所有帮助过我们的人表示感谢,他们是:   Marc Abromowitz, Joseph H. Adamski, Brad Adelberg, Gleb Ashimov, Donald Aingworth, Teresa Almeida, Brian Babcock, Bruce Backer, Yunfan Bao, Jonathan Becker, Margaret Bentiez, Eberhard Bertsch, Larry Bonham, Phillip Bonnet, David Brokaw, Ed Burns, Alex Butler, Karen Butler, Mike Carey, Christopher Chan, Sudarshan Chawathe。   Per Christensen, Ed Chang, Surajit Chaudhuri, Ken Chen, Rada Chirkova, Nitin Chopra, Lewis Church, Jr., Bobbie Cochrane, Michael Cole, Alissa Cooper, Arturo Crespo, Linda DeMichiel, Matthew F. Dennis, Tom Dienstbier, Pearl D'Souza, Oliver Duschka, Xavier Faz, Greg Fichtenholtz, Bart Fisher, Simon Frettloeh, Jarl Friis。   John Fry, Chiping Fu, Tracy Fujieda, Prasanna Ganesan, Suzanne Garcia, Mark Gjol, Manish Godara, Seth Goldberg, Jeff Goldblat, Meredith Goldsmith, Luis Gravano, Gerard Guillemette, Himanshu Gupta, Petri Gynther, Jon Heggland, Rafael Hernandez, Masanori Higashihara, Antti Hjelt, Ben Holtzman, Steve Huntsberry。   Sajid Hussain, Leonard Jacobson, Thulasiraman Jeyaraman, Dwight Joe, Brian Jorgensen, Mathew P. Johnson, Sameh Kamel, Seth Katz, Pedram Keyani, Victor Kimeli, Ed Knorr, Yeong-Ping Koh, David Koller, Gyorgy Kovacs, Phillip Koza, Brian Kulman, Bill Labiosa, Sang Ho Lee, Younghan Lee, Miguel Licona。   Olivier Lobry, Chao-Jun Lu, Waynn Lue, John Manz, Arun Marathe, Philip Minami, Le-Wei Mo, Fabian Modoux, Peter Mork, Mark Mortensen, Ramprakash Narayanaswami, Hankyung Na, Mor Naaman, Mayur Naik, Marie Nilsson, Torbjorn Norbye, Chang-Min Oh, Mehul Patel, Soren Peen, Jian Pei。   Xiaobo Peng, Bert Porter, Limbek Reka, Prahash Ramanan, Nisheeth Ranjian, Suzanne Rivoire, Ken Ross, Tim Roughgarten, Mema Roussopoulos, Richard Scherl, Loren Shevitz, June Yoshiko Sison, Man Cho A. So, Elizabeth Stinson, Qi Su, Ed Swierk, Catherine Tornabene, Anders Uhl, Jonathan Ullman, Mayank Upadhyay。   Anatoly Varakin, Vassilis Vassalos, Krishna Venuturimilli, Vikram Vijayaraghavan, Terje Viken, Qiang Wang, Mike Wiacek, Kristian Widjaja, Janet Wu, Sundar Yamunachari, Takeshi Yokukawa, Bing Yu, Min-Sig Yun, Torben Zahle, Sandy Zhang。...   J.D.U.   J.W.   2007年7月于斯坦福
pdf
发布资源于 8 年前

让Oracle跑得更快:Oracle10g性能分析与优化思路--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 让Oracle跑得更快:Oracle10g性能分析与优化思路 本信息 作者: 谭怀远 丛书名: ITPUB技术丛书 出版社:电子工业出版社 ISBN:9787121113253 上架时间:2010-8-6 出版日期:2010 年8月 开本:16开 页码:438 版次:1-1 编辑推荐    国内第一本真正意义上从工作经验出发,以作者的心得体会全面论述Oracle数据库性能优化的书籍。    作者内心经历的表白,站在全局角度对性能做
pdf
发布资源于 8 年前

大话Oracle RAC:集群、高可用性、备份与恢复--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 大话Oracle RAC:集群、高可用性、备份与恢复 基本信息 作者: 张晓明 丛书名: IT名人堂 出版社:人民邮电出版社 ISBN:9787115204158 上架时间:2009-3-26 出版日期:2009 年4月 开本:16开 页码:473 版次:1-1 编辑推荐    以Oracle 10g为基础,对Oracle RAC进行了全面的介绍和分析。    按照“发现问题→解决问题→实践与理论相结合”的方式进行介绍    首先对现实问题进行分析,然后提供合适的解决方案,最后自然地引出Oracle中的理论知识点. 内容简介    本书以oracle 10g为基础,对oracle rac进行了全面的介绍和分析。全书分为两个部分,共14章,第一部分是集群理论篇,这部分从集群基础知识入手,通过分析集群环境和单机环境的不同,介绍了集群环境的各个组件及其作用,以及集群环境的一些专有技术,包括oracle clusterware、oracle database、asm、cache fusion等。第二部分是实践篇,每一章都针对rac的一个知识点展开讲解,包括oracle clusterware的维护、ha与lb、备份、恢复、flashback家族、rac和data guard的结合使用、rac和stream的结合使用,最后对asm进行深入介绍,并给出性能调整的指导思想。.    本书按照“发现问题→解决问题→实践与理论相结合”的方式进行介绍,首先对现实问题进行分析,然后提供合适的解决方案,最后自然地引出oracle中的理论知识点,这种讲解方法能够有效地降低阅读难度,帮助读者更好地掌握相关技能。..    本书可以作为数据库开发人员、数据库管理员、数据库初学者及其他数据库从业人员的工作参考手册,也可以作为大中专院校相关专业师生的参考用书和相关培训机构的培训教材。 作译者   张晓明,Oracle OCP,现用网名“石头狗”,名称来自于《和佛陀赏花去》中的故事;狗会因为人随手丢出的一个东西而追逐,可能是一个骨头、一块肉、一个眼神,甚至是一个石头,警示一定要看清自己在追逐的东西。 目录 封面 -14 封底 474 扉页 -13 版权 -12 序 -11 前言 -9 目录 -4 第1部分 集群理论篇 1 第1章 RAC初体验 2 1.1 本书使用环境 3 1.1.1 硬件环境 3 1.1.2 软件环境 4 1.1.3 本书使用的环境 6 1.2 如何在PC机上搭建RAC环境 8 1.2.1 需要下载的软件 8 1.2.2 安装过程 9 1.3 任务列表 28 1.4 规划阶段 28 1.4.1 确认主机名和3个IP地址 29 1.4.2 存储方案选型 29 1.5 实施阶段 30 1.5.1 主机配置 31 1.5.2 安装Oracle Clusterware 40 1.5.3 安装Oracle Database 51 1.5.4 配置Listener 55 1.5.5 创建ASM 59 1.5.6 创建数据库 63 1.6 客户端测试 71 1.6.1 客户端配置 71 1.6.2 体验Failover 72 1.6.3 体验LoadBalance 73 1.6.4 修改归档模式 74 第2章 什么是RAC集群 76 2.1 集群分类 76 2.2 集群环境的特殊问题 76 2.2.1 并发控制 77 2.2.2 健忘症(Amnesia) 77 2.2.3 脑裂(Split Brain) 77 2.2.4 IO隔离(IO Fencing) 78 2.3 RAC集群 78 2.3.1 存储层 79 2.3.2 网络层 79 2.3.3 集群件层 80 2.3.4 应用层 81 2.4 小结 81 第3章 Oracle Clusterware 82 3.1 Clusterware和RAC的关系 82 3.2 Oracle Clusterware组成 83 3.2.1 磁盘文件 83 3.2.2 Clusterware后台进程 89 3.2.3 网络组件 91 3.3 Clusterware的日志体系 95 3.4 小结 95 第4章 RAC原理 96 4.1 数据库基本原理 96 4.1.1 并发访问和数据一致性 97 4.1.2 事务和隔离级别 98 4.1.3 Oracle支持的隔离级别 99 4.2 Oracle单实例的并发控制机制 100 4.2.1 Lock 100 4.2.2 数据记录的行级锁 101 4.2.3 Latch 105 4.2.4 Latch和Lock对比 106 4.2.5 进一步理解 106 4.3 RAC下的并发控制 109 4.3.1 DLM中资源和锁 110 4.3.2 Non-Cache Fusion资源 111 4.3.3 Cache Fusion资源 112 4.3.4 GRD(Global Resource Directory) 114 4.3.5 PCM Lock 114 4.3.6 Cache Fusion 116 4.3.7 RAC并发控制总结 121 4.4 RAC架构 121 4.4.1 SGA的变化 122 4.4.2 后台进程的变化 122 4.4.3 文件 124 4.4.4 SCN 126 4.4.5 Cache Fusion、GCS、GES 127 4.5 RAC和Clusterware的交互 127 4.5.1 Clusterware层 128 4.5.2 RAC层 129 4.6 小结 132 第5章 存储方案——ASM初步 133 5.1 Shared-Disk和Shared-Nothing架构 133 5.2 Oracle 10g RAC的存储方案介绍 134 5.3 ASM架构 134 5.3.1 ASM实例 135 5.3.2 文件 136 5.4 配置ASM 136 5.4.1 安装位置 136 5.4.2 创建ASM磁盘 136 5.4.3 配置ASM实例 144 5.4.4 创建磁盘组 146 5.4.5 在数据库中使用ASM的磁盘组 147 5.5 ASM实例:将数据库迁移到ASM 147 5.5.1 试验说明 147 5.5.2 操作步骤 148 5.5.3 最后验证 155 5.6 小结 156 第2部分 实战篇 157 第6章 RAC维护工具集 158 6.1 Oracle Clusterware工具集 158 6.2 节点层 158 6.3 网络层 159 6.4 集群层 161 6.4.1 crsctl 162 6.4.2 OCR命令系列 167 6.5 应用层 176 6.5.1 crs_stat 176 6.5.2 onsctl 180 6.5.3 srvctl 186 6.5.4 恢复 192 6.6 小结 196 第7章 HA和LB 197 7.1 什么是高可用性 197 7.2 Failover 198 7.2.1 Client-Side Connect Time Failover 198 7.2.2 TAF(Transparent Application Failover) 198 7.2.3 Client-Side Failover和TAF的对照试验 199 7.2.4 Server-Side TAF 202 7.3 Oracle Clusterware HA框架 210 7.3.1 术语介绍 210 7.3.2 配置命令 213 7.3.3 完整实例 219 7.4 LoadBalance 223 7.4.1 Connection Balancing 223 7.4.2 利用Service分散负载 227 7.5 测试LoadBalance 228 7.5.1 通过Listener日志区分路由来源 228 7.5.2 测试方法 229 7.5.3 测试过程 230 7.6 小结 234 第8章 备份 235 8.1 概述 235 8.1.1 备份 235 8.1.2 恢复 236 8.1.3 RMAN工具 238 8.2 使用Flash Recovery Area 238 8.2.1 配置Flash Recovery Area 239 8.2.2 Flash Recovery Area的空间监控 239 8.3 使用RMAN 240 8.3.1 RMAN工具的使用方法 240 8.3.2 RMAN配置 242 8.4 完全备份和增量备份 248 8.4.1 完全备份 249 8.4.2 增量备份 251 8.4.3 其他RMAN命令 254 8.5 RAC的备份实例 261 8.6 小结 264 第9章 恢复 265 9.1 为什么Oracle数据库能够恢复 265 9.2 日志 267 9.2.1 日志线程(Redo Thread) 268 9.2.2 RAC的联机日志 268 9.3 恢复种类 269 9.3.1 Instance Recovery 269 9.3.2 Media Recovery 269 9.3.3 Crash Recovery 269 9.3.4 Online Block Recovery 274 9.4 介质恢复 274 9.4.1 完全恢复 275 9.4.2 不完全恢复 280 9.4.3 恢复到单实例 294 9.5 小结 302 第10章 其他恢复技术 303 10.1 数据块恢复 303 10.2 如何检查数据块一致性 304 10.2.1 使用初始化参数 304 10.2.2 DBV工具 305 10.2.3 Analyze命令 307 10.2.4 RMAN工具 307 10.2.5 dbms_repair包 308 10.3 模拟数据块不一致 309 10.4 数据块不一致处理办法 313 10.4.1 收集信息 313 10.4.2 设计恢复方法 314 10.4.3 恢复操作 316 10.5 数据块恢复实例 317 10.6 Flashback家族介绍 326 10.7 Flashback Database 326 10.7.1 Flashback Database架构 326 10.7.2 启用Flashback Database 327 10.7.3 Flashback Database 329 10.7.4 命令和视图 332 10.8 Flashback Drop 333 10.8.1 Tablespace Recycle Bin 333 10.8.2 Flashback Drop操作 335 10.8.3 Recycly Bin的维护 336 10.9 Flashback Query 和Flashback Table 337 10.9.1 Oracle 9i的Flashback Query 337 10.9.2 Flashback Version Query 339 10.9.3 Flashback Transaction Query 354 10.9.4 Flashback Table 356 10.9.5 UNDO Retntion 359 10.10 小结 360 第11章 RAC和Data Guard 361 11.1 Data Guard介绍 361 11.1.1 Data Guard架构 362 11.1.2 日志发送(Redo Send) 362 11.1.3 日志接收(Redo Receive) 365 11.1.4 日志应用(Redo Apply) 367 11.1.5 数据保护模式 367 11.1.6 自动裂隙检测和解决 368 11.2 RAC和Standby配置实例 369 11.2.1 RAC Primary和Single Standby 370 11.2.2 RAC Primary和RAC Standby 381 11.3 小结 394 第12章 RAC和Stream Replication 395 12.1 Stream的工作原理 395 12.2 Data Guard和Stream对比 396 12.3 RAC Stream配置实例 397 12.3.1 Single(Source)和RAC(Target) 398 12.3.2 RAC对RAC的复制 404 12.3.3 STRMMON工具 425 12.4 小结 427 第13章 深入ASM 428 13.1 非ASM的存储结构 428 13.2 ASM存储结构 429 13.3 ASM文件系统 430 13.3.1 ASM Metadata 431 13.3.2 Physical Metadata 431 13.3.3 Virtual Metadata 433 13.3.4 Disk Recovery 434 13.4 条带化(ASM Striping) 435 13.4.1 ASM文件模板(ASM File Template) 435 13.4.2 ASM别名(ASM File Alias) 436 13.5 RDBMS和ASM之间的交互 445 13.6 ASM的实例恢复 446 13.7 ASM和OS Filesystem之间交互 447 13.7.1 dbms_file_transfer包 447 13.7.2 RMAN的CONVERT方法 453 13.7.3 ASM和TTS 453 13.8 ASM的限制 456 13.9 小结 457 第14章 性能与RAC 458 14.1 RAC的若干特点 459 14.2 AWR 461 14.2.1 启用AWR 462 14.2.2 修改AWR配置 462 14.2.3 产生AWR报告 462 14.3 ASH 464 14.4 SQL调整策略 466 14.4.1 SQL语句的执行过程 466 14.4.2 SQL性能调整的基本方法 467 14.4.3 PL/SQL和SQL 471 14.5 小结 473 前言   从2008年2月开始动笔到定稿出版,这本书的编写几乎花费了我10个月的时间,大大超出了最初3个月的计划。这个过程虽然不能说寝食难安,但其中的酸甜苦辣也是如人饮水,冷暖自知,如果一开始就知道要投入这么大精力,我真怀疑自己是否有勇气开始动笔。.   回顾自己学习RAC的经历,我对它又爱又恨。因为对技术本身的痴迷加上高“薪”技术的诱惑,所以爱;因为没有能力掌控,所以恨。时至今日,我仍然不敢说自己已完全掌握了RAC,RAC的学习过程是对我所有学习过的IT技术的大复习,包括OS、Network、Storage、Database等,甚至可能还有很多领域我从未涉足。   相信很多对Oracle有一定经验的DBA和我有同样的感觉,RAC比普通的Oracle更难入门。不仅因为比比皆是的晦涩艰深的术语,也不仅因为它覆盖的技术领域太广,更主要的是可用的参考资料太少。我翻遍了所有能够获得的书籍资料,但是这些资料都是从很基本、很琐碎的细节开始,从下到上(Bottom-Up)的学习方式是虽然看到了“树”,但是看不到“林”。虽然无树不成林,技术细节总是必要的,但过于琐碎的分解给我造成更大的迷惑,到底RAC的总线是什么?GCS、GES、GRD、PCM这些东西是如何堆砌在一起的?   这段痛苦经历促使我决定以自己的方式讲述RAC的故事,如果大家能在这个旅程中豁然开朗,对我而言将是一件很有趣又备感欣慰的事。   本书特点   本书最大的特点是侧重于理论讲述和实战演练,尤其是对理论的剖析有一定的深度,并通过大量完整的案例来论证这些理论。DBA和开发人员特点不同,对于开发人员来说,从某种角度上,强调创造力决定高度。但是DBA要求的是稳定压倒一切,DBA必须去适应自己所使用的产品,而不能期待产品去适应自己,更没有机会去改变产品,因此了解这个产品的工作原理是非常必要的。   现在网络发达,遇到问题时,有论坛、BBS各种渠道可以利用。相信大家都有类似这样的体会:“哇,这家伙怎么能想到这样做?怎么敢这样做?”。其实这些高手的所谓“特技”都不是偶然,也不是贸然下手,只是他对产品有比你更深刻的认识,知道问题的前因,知道行动的后果,所以看起来他可以“天马行空、为所欲为”,而你只能“亦步亦趋、如履薄冰”。因此,我个人更强调对基础的掌握,而不要迷信有什么技巧或捷径。请相信只要能在一个领域持续上数年,你就在这个领域里能成为专家。   采用这种方式还有一个原因,RAC覆盖知识面广、资料难觅也是众所周知的。时至今日,我不敢妄谈精通,只是尽可能地把所知中规中矩地记录下来,不敢随意发挥,希望能够抛砖引玉,并对大家有所启发和帮助。   本书适用读者   大话Oracle RAC,书如其名,本书不是一本Oracle数据库的基础入门书籍,而是关于Orace RAC的入门指导。   这本书适合于初、中级数据库管理员和数据库开发人员,但是本书不会特别讲述什么是SGA,什么是数据文件,什么是字典视图,什么是日志,也不会专门介绍如何创建表空间、用户等。如果你对上面这些名词、操作都非常陌生,那么这本书不适合你,请先夯实单实例的基础(可以参考下面的“学习资源推荐”)再来看这本书。   本书假定读者已经脱离了入门阶段。如果你对Oracle单实例数据库有一定基础,并做过类似DBA工作,但是由于条件所限,一直对RAC敬仰如滔滔江水,渴望拥有却不知如何下手,那么这本书就非常适合你。如果你需要在最短时间内充电RAC相关知识,并且敢在简历上写下“有一定RAC经验”,那么这本书就是为你而准备的。   可能你已经有了一定的Oracle使用经验,比如做过些安装、管理、备份操作,对Oracle数据库有了一定感性认识,但是并没有完整的理论框架,那是最好的,你可以通过这本书学习到Oracle最核心的理论基础,并看到这些理论在单实例和RAC环境下的各种应用,不过还是建议你找一本基础入门的书籍放在手边,方便速查。   学习资源推荐   http://www.oracle.com/pls/db102/portal.all books,Orace 10.2官方文档,最权威的文档,适合系统学习。   http://www.oracle.com/technology/index.html,OTN,资料新、覆盖面广,尤其适合快速入门、图文并茂;缺点是分类方式不太适合中国用户的习惯。   https://metalink.oracle.com,Metalink,各种深度的文档一应俱全,也是所有补丁的发源地,不过用户需要申请账号。   http://www.itpub.net,这是很多Oracle DBA开始成长的地方。   http://www.eygle.com,这是Eygle的个人网站,Eygle(Oracle ACE Director)是国内Oracle数据库领域中的知名资深人士。   http://asktom.oracle.com,大名鼎鼎的AskTom。 .  http://www.databasejournal.com和http://www.oracle-base.com这两个站点程度类似,经常会有针对某专题的系列文章,适合初学者。   本书结构与内容   本书共14章,分为集群理论篇、实战篇两大部分。   工欲善其事,必先利其器,学习RAC,环境是最重要的。所以第1章“RAC初体验”将引导读者在一台PC机上搭建出一个2节点的RAC环境,并在建好之后快速感受RAC两大亮点——负载均衡、高可用性。这一章内容虽然是介绍安装,但并不是简单的单击“上一步”、“下一步”按钮,其间渗透了许多作者的体会和心得,所以即使有安装经验的读者,也无妨做一次快速翻阅,相信也会有所收获。   从第2章至第5章主要是基础理论介绍,第2章首先概述了集群的概念、分类,并在其基础上对RAC架构做一个快速浏览。接下来的3章,每一章都讨论了RAC的一个组件。   如果对RAC环境做一个解剖,可以发现集群软件架构可以分为3个组件:Clusterware Manager(集群件)、Distribute Lock Management(DLM,分布式锁管理器)、Oracle实例。这3个组件在Oracle的发展历史各不相同。Oracle在版本9之前一直是依赖厂商的集群件产品,比如Sun的Clusterware。直到Oracle 9才开始提供自己的集群件产品Cluster Manager,但是只支持部分平台。到了版本10,这个产品已经演变成一个功能完整、支持所有平台的独立产品Oracle Clusterware,这个产品不仅支持RAC,而且还能为其他非Oracle软件提供高可用支持。第3章专门介绍Oracle Clusterware。而第7章会演示如何利用这个产品搭建一个Web集群。   无论Oracle还是IBM、微软的数据库产品,无论单实例数据库还是集群数据库,它们核心功能都是一样的——事务处理,并在保证数据完整的前提下提供最大的并发支持。大家都知道,数据库系统是通过“锁机制”来实现的,而在集群环境下,使用的是“分布式锁机制”。其实不仅仅是数据库,所有支持多用户并发的系统都需要某种“锁机制”,因此无论“锁”还是“分布式锁”都不是Oracle所特有的,它是所有这些系统的共性。..   Oracle单实例的锁机制包括两种:Lock和Latch,Oracle RAC同样也离不开这两种锁机制,但是Oracle RAC又多了一种新的锁——分布式锁,这种锁的管理机制叫作分布式锁管理器(DistributedLockManager,DLM)。Oracle集群最初使用的是操作系统的DLM,但是操作系统的DLM仅适用于数量很少的资源的分布式管理,比如对文件,对于Oracle数据库动辄G级的数据量,这种DLM就非常不适合。所以Oracle开发了自己的DLM机制,在RAC之前的OPS中,这种技术叫作PCM(Parellel Cache Management),到了RAC,这个技术改名为Cache Fusion。可以说,RAC的学习、管理、优化都是围绕着Cache Fusion进行的。不过与Clusterware不同,Oracle并没有把DLM独立为一个产品,而是把DLM功能集成到数据库内核中,如果安装过程中检测到Clusterware的存在,就会激活内核的DLM功能。   第4章围绕着“锁”在单实例和RAC的使用,详细讲述了RAC原理。这一章是全书最重要的部分,也是作者花费心血最多的章节,希望读者详细研读。   以“锁”为总线来学习RAC,这个灵感来自于我在雅虎工作期间主持的一次内部培训,也正是这个灵感造就了本书。   当时雅虎的一个系统要从SQL Server转移到Oracle,大家希望能对SQL Server和Oracle的区别有所了解,于是我就主持了一次内部培训。当时对培训主题的选择是煞费苦心,如果从两个产品的媒体发布数据、销售数量做比较,对于技术人员显然没有任何意义;如果单从产品功能、用户友好性来比较,也没有任何说服力。在否定了若干方案后,我开始思考“数据库最本质的功能是什么?”,思索的结果就是最终选定“并发和锁”作为比较的主题。通过介绍两种产品的“锁机制”是如何实现的,以及各自的实现方法对并发能力的影响,从而达到比较的目的。这个讲义(PPT格式)可以在我的Blog(http://space.itpub.net/75321)找到。需要说明的是,这个讲义是以Oracle 9i和SQL Server 2000为基础,其中关于Oracle 9i的部分对Oracle 10g仍然有效,但是SQL Server 2000部分对其他版本是否适用,就需要根据具体情况来定。   这次内部培训之后,借助这个灵感,我对RAC知识重新梳理,终于找到了学习RAC最有效的方法(至少我个人这样认为),也最终产生这本书。   第5章带领读者认识ASM,这是Oracle 10推出的自动存储管理系统,这个系统同时综合了集群文件系统和卷管理器两方面功能,也是Oracle 10 RAC的首选存储方案。   本书的第6章到第12章是实战部分,每一章都是一个独立的讨论主题。   Oracle 10g中的管理工具被大大加强,提供了基于Web界面的管理方式。这些工具虽然简单好用,但对于初学者来说恰恰也是缺点,首先这些工具隐藏了背后的运作机制,其次对于这些工具本身的学习也会分散读者的精力,何况在某些现场根本没有图形界面可以使用。所以,我更推荐读者在学习阶段还是使用“笨”方法:手工输入命令+观察输出结果。在有一定的经验以后,再去使用各种图形工具,更何况Oracle中需要记忆的命令数量也是非常有限的,差不多一章的内容就可以全部覆盖。   因此,第6章把RAC环境中可能用到的命令进行整理,并按照一种便于记忆的方式进行归类。但这一章并不是命令手册,很多命令会有些较深入的分析。当然在以后的章节学习中,读者可能还会需要反复查阅这一章。   第7章介绍RAC最主要的亮点“HA和LB”,第8章介绍RAC的备份,第9章介绍恢复技术中的完全恢复、不完全恢复,第10章介绍其他恢复技术,包括数据块恢复、Flashback功能家族介绍。   Oracle的高可用家族除了RAC还有两个兄弟:Data Guard和Stream Replication,相对于RAC,这两种方案都比较容易上手,也是目前企业常用的HA方案。但是简单好学并不是代表功能会打折扣。这三兄弟每个既能独当一面,也可以互相配合使用,提供更强大的功能。但是,这三个兄弟针对的问题并不一样,适用场合也不尽相同。因此学习Oracle的高可用方案时,必须搞清楚这些方案的区别,最贵的并不一定是最适合的。因此,第11章比较了RAC和Data Guard的区别,以及二者如何搭配使用。第12章解释了RAC和Stream Replication的区别和合作。   第13章是对ASM的深度介绍,其中ASM Alias部分很重要,对于用户可能遇到的问题给出了具体的解决办法。   第14章主要介绍了调优方面的内容,但只介绍了SQL调整策略以及RAC环境下要考虑的特殊内容。之所以只选择这些内容,是因为Oracle性能调整是一个非常大的主题,经典话题包括主机、内存、网络调整,SQL语句调整、等待事件调整等,新话题可以讨论Oracle 10g新添的若干工具AWR、ASH、ADDM等。如果在一章中把这些内容都一网打尽,只能是蜻蜓点水、点到为止,与其这样不痛不痒地堆砌,还不如有针对性地深入讨论几个重点。需要更多了解性能优化内容的读者,可以参考其他资料和文档。   本书声明   (1)除了特别声明外,本书实例中使用的操作系统是Red Hat AS 4.0 Update 4,使用的数据库是Oracle 10 R2版。   (2)部分工具软件的下载地址。   Oracle Database、Oracle Clusterware、ASM Lib驱动   http://www.oracle.com/technology/global/cn/software/index.html   Red Hat Advanced Server   https://www.redhat.com/apps/download   (3)作者在编写本书过程中,以“够用就好”为原则,尽量覆盖到RAC所有知识点。但所有观点都出自作者的个人见解,疏漏、错误之处在所难免,欢迎大家指正。读者如果有好的建议或者学习本书过程中遇到问题,欢迎到作者的博客(http://space.itpub.net/75321)留言进行探讨,或者发送邮件到mingyan926@hotmail.com,希望能够与大家一起交流和进步。   感谢   在此,感谢芮玉奎先生,他在内容结构的编排方面给我很多帮助,感谢eygle,正是他的推荐,才促成我与人民邮电出版社的这次合作。在本书编写过程中,还得到了很多朋友的支持和帮助,包括清华大学的焦丽静、IT168的贝贝、阿里巴巴的李红星、邹大鹏,Oracle公司的rebeca、bryanxu,爱康网的cindy,还有公司领导林镇武,同事史季强、邝俊彪等,在此一并感谢。   在看得见的地方学习知识,在看不到的地方学习智慧。同时也祝愿大家在Oracle RAC的学习道路上顺风顺水。...   张晓明   2009年2月    序言   16年前,当我第一次接触Oracle数据库时,Oracle数据库对我来说就像一位带着面纱的美女,神秘而又憧憬。看着我们的DBA花了两三天的时间,在键盘上输入几百条甚至上千条命令,经过几次失败,才成功地在一台HP G30小型机上安装成功时,我就想也许还是做一个数据库开发员更适合我。那时的Oracle还没有图形化安装界面,所有操作都是通过命令行完成的。作为开发人员的我们不敢也不允许对数据库做数据增、删、改、查之外的其他操作。数据库的安装、配置、建表、建索引、增加用户等也只有DBA才能完成。.   但在今天,情况已经完全不一样了,以前只有DBA能完成的工作现在大部分都可以由开发人员或其他非DBA人员来完成。大部分的开发人员都有在自己的PC机上安装Oracle数据库的经历,运行Oracle Universal Installer和运行其他普通的图形界面应用程序已经没什么区别,用户甚至可以不用提供任何参数,只是点击几下鼠标即可完成,整个过程可以不超过30分钟。但这并不意味着我们不需要DBA,就像波音747飞机上的驾驶员,虽然747的自动导航系统可以控制飞机从起飞、巡航到降落,但我相信没有一个乘客会说不需要飞行驾驶员了,相反我们会提出更高的要求,因为我们需要更安全、更舒适的飞行。同样,DBA也是如此。   我从事IT工作已近20年,还从来没像今天这样关心数据库的安全和可靠性,因为数据库已经成为我们一切业务的核心。我们公司为电信企业提供业务服务,这就要求我们的数据库一年365天不间断地可靠运行,任何一种中断都是不能接受的。每天数据库要处理上亿次的交易,每天数据量接近8GB,并还在不断增长中。为提高数据库的可用性、扩展性和可靠性,我们的DBA团队尝试了不同的技术,最后采用了Oracle RAC。经过整个团队的努力,现在我们已经成功地在我们的生产环境部署了Oracle RAC。张晓明先生,既是本书的作者,也是带领我们DBA团队成功实施Oracle RAC的技术领头人。我相信不久,随着RAC技术越来越成熟,会有越来越多的公司选择RAC。作为DBA,就像作者在书中写的那样:“对于还从没接触过RAC的DBA来说,现在该是未雨绸缪的时候了。”..   在书中,作者也遵循了著名的Oracle大师,Oracle公司副总裁Thomas Kyte提倡的“Test thing yourself and base decision on proven examples”。他从一个简单的实施实例出发,循序渐进、由浅入深地讲解了Oracle RAC的实施细节、RAC的工作原理和实施、维护过程中可能碰到的问题和解决技巧。我相信所有的DBA都可受益匪浅。   IBM创始人Thomas J.Watson曾说过:“Though have been father of every advance since time began,‘I didn't think’has cost the world millions of dollars”,我想这本书能带给你的不仅是知识和技术,更是一种不同的思维和观点。我希望每位读者能从书中得到更多的思考,并为这个世界节省更多的“millions of dollars”。...   林镇武 副总裁   北京无限新锐网络科技有限公司   
pdf
发布资源于 8 年前

Oracle DBA突击:帮你赢得一份DBA职位--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle DBA突击:帮你赢得一份DBA职位 基本信息 作者: 张晓明 丛书名: IT名人堂 出版社:人民邮电出版社 ISBN:9787115215253 上架时间:2009-11-19 出版日期:2009 年11月 开本:16开 页码:504 版次:1-1 编辑推荐    10年从业生涯中无数次被面试和面试他人的经验总结    告诉你哪些技术是重要的,是面试官最看重的    获取稳定的DBA职位的必读宝典 内容简介    本书以oracle 10g为基础,由浅入深、从易到难,详细介绍了dba职位所要求的知识结构和实战技能。第1章至第4章是基础篇,包括数据库建模、oracle体系结构、网络结构、备份恢复和使用oem,这些对于刚刚从事dba或者试图转做dba的朋友都是必备知识。第5章至第9章是中级篇,专门讨论性能调整,包括性能优化原理、oracle性能调整发展历程、awr、ash、addm、auto sql tunning等最新的助手工具,并通过大量实例展示技术的综合应用。第10章至第13章是高级篇,主要面向高级读者,高级dba通常要解决架构层面的问题,因此对于这部分读者来说,最重要的是要扩展眼界,能够掌握如何选择最合适的工具而不是最贵的工具。为了跳出单一产品的限制,本书选择了异构互联和安全这两个主题来帮助读者扩展思路。.    本书作者是oracle资深dba,本书不仅融入了作者十年的实战心得和工作经验,还提供了来自于工作现场的大量实例,具有很强的可操作性。..    本书可以作为数据库开发人员、数据库管理员、数据库初学者及其他数据库从业人员的工作参考手册,也可以作为各大中专院校相关专业师生的参考用书和相关培训机构的培训教材。 作译者   张晓明,Oracle OCP,现用网名“石头狗”,名称来自于《和佛陀赏花去》中的故事;狗会因为人随手丢出的一个东西而追逐,可能是一个骨头、一块肉、一个眼神,甚至是一个石头,警示一定要看清自己在追逐的东西。 目录 封面 -17 扉页 -16 版权 -15 序 -14 前言 -12 自我测试 -7 目录 -4 第一部分 基础篇 1 第1章 数据建模 2 1.1 数据建模 3 1.1.1 创建逻辑模型 3 1.1.2 创建物理模型 7 1.2 规范化 12 1.2.1 1NF 13 1.2.2 2NF 14 1.2.3 3NF 15 1.3 如何表示树形结构 16 1.3.1 什么是树形结构 16 1.3.2 邻接模型 19 1.3.3 物化路径模型 26 1.3.4 嵌套集合模型 28 1.4 小结 34 第2章 Oracle体系架构 35 2.1 Oracle的网络配置 35 2.1.1 Oracle的网络架构 36 2.1.2 客户端安装 38 2.1.3 服务器端监听器配置 39 2.1.4 客户端配置 44 2.2 Oracle 10g架构 47 2.3 数据库 49 2.3.1 物理结构 49 2.3.2 OMF 55 2.3.3 逻辑结构 59 2.4 空间管理 70 2.4.1 段空间管理 71 2.4.2 Extent空间管理 74 2.5 实例 74 2.5.1 进程 75 2.5.2 后台进程 77 2.5.3 内存结构 83 2.5.4 PGA 87 2.6 未尽话题 88 第3章 备份恢复 89 3.1 归档模式和非归档模式 90 3.1.1 归档模式的优缺点 90 3.1.2 非归档模式的优缺点 91 3.1.3 非归档模式转换成归档模式 91 3.2 备份概述 92 3.3 物理备份 92 3.3.1 冷备份 92 3.3.2 热备份 93 3.3.3 RMAN备份 95 3.4 备份前的环境配置 98 3.4.1 连接到数据库 98 3.4.2 查看现有配置 99 3.4.3 配置控制文件自动备份 101 3.4.4 配置备份文件格式 101 3.4.5 配置备份保留策略 102 3.4.6 与保留策略相关的其他操作 104 3.4.7 删除配置 106 3.5 完全备份和增量备份 106 3.5.1 完全备份 106 3.5.2 增量备份 108 3.6 恢复 111 3.7 日志 112 3.7.1 改动向量(Change Vector) 112 3.7.2 Redo记录 112 3.7.3 检查点 115 3.7.4 SCN号 116 3.7.5 数据库恢复 118 3.7.6 恢复过程 120 3.8 Oracle MAA介绍 123 3.9 小结 125 第4章 OEM 126 4.1 Database Control 127 4.1.1 配置Database Control 127 4.1.2 Database Control的目录结构 129 4.1.3 手工配置Database Control 130 4.1.4 用Database Controle管理多个数据库 133 4.2 Grid Control架构 134 4.2.1 Grid Control Console 135 4.2.2 Oracle Management Agent 136 4.2.3 Oracle Management Service 136 4.2.4 Management Repository 137 4.2.5 OEM的原理和工作方式 137 4.2.6 Agent的工作方式 137 4.3 部署OEM Grid Control 138 4.3.1 部署OEM 139 4.3.2 OracleAS、OMS、OC4J的关系 145 4.3.3 OEM的目录结构 147 4.4 部署Agent 148 4.4.1 全新安装(Fresh安装) 148 4.4.2 使用命令行克隆方法部署Agent 152 4.4.3 部署Agent后DBCA的变化 157 4.4.4 emwd脚本 159 4.4.5 磁盘空间限制 159 4.5 OEM的维护工具 159 4.5.1 维护OMS 160 4.5.2 维护Agent 165 4.6 修改配置 166 4.6.1 修改Agent的监听端口 166 4.6.2 配置Agent使用新的OMS 166 4.6.3 修改OMS的监听端口 167 4.6.4 一次Trouble Shooting 167 4.7 小结 173 第二部分 中级篇 175 第5章 SQL优化原理 176 5.1 PGA 176 5.1.1 Session Area 177 5.1.2 Private SQL Area 177 5.2 SQL语句的执行过程 179 5.2.1 Parent Cursor和Child Cursor 180 5.2.2 V$SQL和V$SQLAREA的区别 182 5.2.3 与Cursor有关的参数 182 5.3 执行计划 185 5.3.1 Explain Plan For ... 185 5.3.2 SQL Trace和10046事件 186 5.3.3 从Library Cache中获取 190 5.4 如何阅读执行计划 198 5.4.1 SQL概要信息 199 5.4.2 执行计划 199 5.4.3 Query Block 200 5.4.4 数据过滤 208 5.4.5 列投影 209 5.5 小结 209 第6章 访问路径和连接 210 6.1 QUBE模型 210 6.2 单表访问——全表扫描还是索引 212 6.2.1 谓词(Predicate) 212 6.2.2 Selectivity和Cardinality 213 6.2.3 全表扫描 213 6.2.4 两种方式访问的成本比较 214 6.2.5 聚簇因子 215 6.3 连接 216 6.3.1 NEST LOOP 216 6.3.2 SORT MERGE 217 6.3.3 HASH JOIN 219 6.3.4 几种算法的比较 220 6.4 半连接 221 6.4.1 测试环境 221 6.4.2 合并与展开 222 6.4.3 (NOT)IN和(NOT)EXISTS的哲学思想 224 6.4.4 Exists和In 224 6.4.5 Not Exists 228 6.4.6 Not In 229 6.5 小结 234 第7章 并行操作 235 7.1 并行架构 235 7.1.1 进程 236 7.1.2 相关参数 239 7.2 启用并行处理 244 7.2.1 对象级 244 7.2.2 语句级 245 7.2.3 会话级 246 7.3 解读执行计划 246 7.4 等待事件 250 7.5 小结 250 第8章 自动管理和性能指标 252 8.1 Oracle系统调整技术发展史 252 8.1.1 为什么要系统调整 253 8.1.2 方法论——从命中率到等待事件 253 8.1.3 工具:从STATSPACK到AWR 255 8.2 Oracle 10g的自动管理框架 257 8.2.1 AWR概述 258 8.2.2 ADDM概述 258 8.3 负载数据自动收集(AWR) 260 8.3.1 STATISTICS_LEVEL参数 261 8.3.2 AWR的收集机制 262 8.3.3 配置AWR 262 8.3.4 生成AWR报告 264 8.3.5 AWR的补充——ASH 267 8.4 对象信息的自动收集 272 8.4.1 对象信息的收集机制 275 8.4.2 Table Monitoring机制 278 8.4.3 动态收集对象信息 280 8.4.4 统计信息历史 281 8.4.5 导入导出统计信息 283 8.4.6 锁定统计信息 285 8.5 操作系统统计数据收集 287 8.5.1 无负载模式 289 8.5.2 负载模式数据 289 8.6 学会阅读原始数据 291 8.7 性能统计数据(Performance Statistics) 292 8.8 Oracle等待事件接口(OWI) 296 8.8.1 什么是等待事件 296 8.8.2 常见事件 297 8.8.3 OWI视图 298 8.9 Metric 305 8.10 Time Model 311 8.11 小结 318 第9章 自动诊断和顾问 319 9.1 ADDM 319 9.2 Auto SQL Tunning 323 9.2.1 ATO 323 9.2.2 Auto SQL Tunning架构 324 9.2.3 如何使用Automatic SQL Tunning 327 9.2.4 解读Auto SQL Tunning报告内容 330 9.3 其他自动管理特性 333 9.3.1 ASSM 333 9.3.2 顾问功能 337 9.3.3 Resumable Space Allocation 352 9.4 小结 354 第三部分 高级篇 355 第10章 Oracle的异构服务 356 10.1 异构服务的架构 356 10.2 Agent的分类 357 10.2.1 什么是ODBC 358 10.2.2 ODBC的组件 358 10.3 配置到MySQL的普通连接 359 10.3.1 环境介绍 360 10.3.2 MySQL服务器的配置 360 10.3.3 Oracle服务器的配置 371 10.4 配置到SQL Server 2000的普通连接 373 10.4.1 Windows服务器的配置 373 10.4.2 Linux服务器上的配置 374 10.5 配置到SQL Server 2000的透明网管连接 375 10.5.1 SQL Server服务器的配置 375 10.5.2 Linux服务器的配置 377 10.6 透明网关和普通连接的对比 377 10.6.1 普通连接不支持分布式事务 378 10.6.2 透明网关支持分布式事务 378 10.7 小结 379 第11章 数据安全 380 11.1 安全问题概述 382 11.2 Oracle的网络加密:SSL和PKI 383 11.2.1 加密算法:保证数据机密性 384 11.2.2 数字签名:保证数据完整性 385 11.2.3 证书保证数据不可抵赖性 386 11.2.4 可信CA和证书注销表 388 11.2.5 SSL 388 11.2.6 配置SSL 389 11.2.7 Secure External Password Store 405 11.3 透明数据加密 407 11.3.1 配置TDE 408 11.3.2 验证TDE 412 11.3.3 TDE的性能 417 11.4 小结 421 第12章 限制用户行为 423 12.1 IP地址限制 423 12.2 用户验证 424 12.3 利用登录触发器 425 12.4 数据访问控制 426 12.5 粗粒度数据访问控制:权限和角色 426 12.5.1 对象权限 427 12.5.2 系统权限 427 12.5.3 WITH ADMIN和WITH GRANT的比较 428 12.5.4 角色 430 12.5.5 判断权限来源 431 12.5.6 PRODUCT_USER_PROFILE 435 12.6 细粒度访问控制(FGAC) 436 12.6.1 背景知识 436 12.6.2 自主访问控制 437 12.6.3 强制访问控制 437 12.6.4 现实问题 438 12.7 视图 439 12.8 VPD 439 12.8.1 快速体验 440 12.8.2 深入RLS 442 12.8.3 敏感列的VPD 456 12.9 Oracle标签安全(OLS) 462 12.9.1 安装OLS 464 12.9.2 OLS的标签 466 12.9.3 实施OLS 467 12.10 小结 480 第13章 审计 483 13.1 审计的作用 483 13.2 Oracle的审计功能 484 13.2.1 标准审计 484 13.2.2 细粒度审计 495 13.2.3 FGA与标准审计 504 13.3 小结 504 前言   Oracle DBA炙手可热.   近年来,Oracle DBA职位在IT行业越来越炙手可热,造成这种状况的原因有多方面。在这里仅列举两个最主要的原因,一方面,随着近年来企业信息化进程的深入,企业里各种系统的数据量持续上升,这一切给数据的管理、维护和安全带来了机会和挑战,另一方面,企业间同质化竞争的加剧,也迫使企业加强对于数据的深加工,带动了数据挖掘和商业智能应用的蓬勃发展。数据已经成为企业仅次于人员的最重要资产。下图是2007年、2008年对企业数据量的调查结果(数据来源ITPUB)。这个调查结果显示,2008年年底,超过百万级数据量的企业已经占到65.4%,超过千万级的超过37.1%,而仅仅一年中,超过亿级数据量的企业比2007年增长了5个百分点。   从另一项“每个DBA管理的数据库数量”调查结果(如下图)也可以看到DBA对于企业的重要性(数据来源于ITPUB),约有75%的DBA需要管理5个以上的数据库,其中28.7%的DBA需要管理超过30个数据库。读者可能对这个数字表示惊讶,但事实确实如此。以我本人所在公司为例,我公司从事全国的短信业务,以每省至少两个数据库计算,仅处于生产线的数据库数量就已将近70个,再加上开发数据库、测试数据库,我所领导的DBA团队总共管理的数据库将近80个。这个数量还仅仅是Oracle数据库的数量,还需要加上等量的MySQL数据库,而团队平均DBA数量只有两三个人。   企业数据量的激增有两个结果出现,首先是数据库管理员作为一个专业职位开始受到重视,而在早年间,企业通常不会设置专门的数据库管理员职位,即使有也多是由开发人员或者网管人员兼职管理。   其次,DBA引起人们注意的原因也和目前就业难有关。时至今日,I丁行业仍然是最为吸引毕业生的一个重要行业。虽然IT行业本身也在迅速扩张,对人才需求很旺盛,但是,IT也是中国市场化最充分的行业之一,绝大部分IT企业都要在残酷市场竞争中生存,市场逼着企业将养“闲人”的可能性降至最低。由于每年有大量的毕业生涌入职场,粥少僧多,加上从2008年开始席卷全球的经济危机对就业形势更是雪上加霜。   一方面人才越来越多,另一方面企业对于人才的需求也变得越来越“务实”。企业希望同时拥有扎实的专业理论知识、较强的动手能力、行业经验以及对新知识、新技术新产品的开发能力的综合人才。所以,许多用人单位更喜欢“用熟不用生”,宁可花较多的薪水招一个熟练工,也不愿给初出茅庐的新手机会,双方的博弈就这么持续着……   而在众多IT职位中,OracleDBA以其相对稳定、高薪的职业特点越来越受到IT技术人员的青睐,吸引了越来越多的人员开始进入或者正尝试进入这个领域。按照目前的市场行情(根据2009年北京、上海、杭州等大城市的大致数据),在Oracle数据库从业领域中,初级者的薪水可能在3000元/月左右,中级的DBA薪水可能在5000~7000元/月,而高级DBA的薪水范围可能在8000—20000元/月,至为出色的或者占有重要位置的薪水可能在30000—50000元/月左右(当然很多优秀的公司还会有可观的期权收益和其他奖励),以上数据仅供参考。   DBA市场的繁荣虽然带来了大量的就业机会,但挑战也如影随形。直接结果就是技术门槛越来越高,再加上DBA职位本身对经验要求很高,很多有志青年在初试就被斩落马下,虽然不至于抱憾终身,但也让人感到惋惜。本书试图从面试的角度,对Oracle最重要的内容加以提炼,并综合数年来在这个领域的经验,帮助读者在最短的时间内跨越面试门槛,早日进入DBA行业。   现在市场上、网上随处可见各种各样的Oracle学习资源,从菜鸟级的入门读物到骨灰级I的专题研究应有尽有,和作者当年学习Oracle时的“艰苦贫瘠”环境有天壤之别。从技术来,看,这些书籍内容不可谓不翔实,而且还融合了很多真知灼见和宝贵经验,实属不易。但是Oracle数据库并不能简单地当作一门学科来对待,它包涵了很多人的因素。   读者到底需要什么?当然从书籍中获取知识,能够解决工作中的实际问题是一方面,但这种需要的前提是读者已经有一份稳定的DBA工作,不再为温饱问题揪心。而更多读者是希望通过阅读能够进入这个领域,获得一个职位或者实现职位的升迁。对于这部分读者,更关注的是如何通过学习实现这个目标,或者缩短实现目标的时间。所谓学无止境,一个Oracle数据库已足够研究一生了。但是机会有限,面对心仪的职位,如果确实能力达不到还则罢了,如果有实力却在短短十几分钟的面试中折戟,就实在让人蹉叹了。   学习无捷径,面试有技巧。这是作者在10年的从业生涯中无数次被面试和面试别人经历总结。本书试图以这些经验为基础,告诉读者哪些技术是最重要的,是面试官最看重的。如果套用2/8原则,本书的内容基本覆盖了OracleDBA工作的80%内容,而剩下的20%就要靠读者在工作中的经验积累和技巧提炼。   本书内容与结构   本书的内容分为3个部分:基础篇、中级篇和高级篇。   基础篇。   首先介绍了范式设计和SQL,作为有志于从事Oracle DBA的读者来说,关系数据库理论是必备知识,本书也假设读者具备了这个基础。和其他编程语言(比如C、Java)比起来,SQL语言是非常简单的,因为简单所以最容易被忽视。这一章并不会详细介绍关系数据库的基础理论:相反,这一章会重点介绍几个最经典的SQL问题,也是面试时最容易栽跟头的问题。   接下来介绍了Oracle体系结构、备份恢复、OEM的配置和使用。   Oracle体系结构是Oracle最基础的知识,也是面试时考官最关注的问题。如果不了解Oracle体系结构就说管理数据库纯属妄谈,尤其对于初次接触Oracle的读者,建议反复阅读这部分内容。   备份恢复是OracleDBA工作的重中之重,就像血压计、听诊器对于医生,属于最基本的技能。OracleDBA需要两大技能,备份恢复和性能优化,但二者的重要程度不可同日而语。比较起来,一个性能再差的数据库毕竟也还是可以使用和提供服务的,从某种程度来说,企业还是能够忍受的。解决性能问题的时间相对来说也是比较充裕的,如果实在不会解决,最起码还可以申请硬件升级。但一旦数据库因为故障宕掉,无法提供服务,这是企业不能承受之重。   OEM是Oracle提供的一个管理平台,其好处是通过鼠标点击就可以完成所有的管理工作,不再需要记忆大量的命令。并且Oracle 10g的OEM确实是一个“脱胎换骨”的产品,这一点从Oracle书籍中可见一斑,Oracle 10g以前OEM是一个基于Java的工具,丑陋的界面和缓慢的性能使其饱受责备,也很少会有文档、资料会介绍Oracle 9 OEM。但是Oraclelog重新开发了OEM,放弃了Java界面,转而使用Web界面,其用户亲和力大大增强,因此在Oraclelog的文档和资料中会经常提及。但是OEM的部署伸缩性很强,本书把OEM单独作为一章,详细介绍了各种部署方式。对于初学者来说,这是一个很好的辅助工具,可以大大降低日常工作难度。..   中级篇。 .  中级篇主要针对性能调整。这是一个“望而生畏”的主题,我本人在从事DBA之初也是“高山仰止,心向往之”。细心的读者可以发现,本书甚至没有讲解如何安装Oracle软件和创建数据库,因为就个人感觉,安装部署是最没有技术含量的工作(包括RAC环境部署),虽然在Linux、UNIX上部署Oracle貌似“很强很神秘”,只要做过一次就会发现其实很简单。因为在什么时候该做什么事,Oracle已经规定了详尽的流程,DBA只需也只能照着文档按部就班地操作,即便发挥也无非是安装个RPM包之类补缺拾漏的工作。   性能调整需要的知识面很广,从操作系统到应用程序再到数据库,从网络到存储到主机。从广度到深度可说是随意搭配、丰俭由人。而且性能问题通常在大数据量、高并发环境下才会偶尔出现,仅靠单机很难模拟出来,即便读者无法获得实战环境,基础知识还是要知道的。其实在面试的时候,考官并不看重聘者有什么技巧,反而更看重的是方法,是否有一个清晰的思路每步该干什么,而不是碰运气似的乱撞。方法无所谓好坏,只要能够解决问题就好,最怕的是没有方法。因此对于初学者来说,重要的任务是形成自己的方法论,不要过度关注技巧。   这一部分按照“性能理论十收集数据今定位问题十解决问题”的思路组织了内容, 自动管理着重介绍了Oracle 10g在智能管理方面的增强。Oracle内核从8就基本稳定下来了,比如事务管理、并发控制机制这些最核心的机制在9、10版本中就没有变化,变化的只是外围部分,比如维护工具的丰富、自我管理的增强。其实这也是很好理解的,Oracle数据库只是基于关系数据库理论的一个商业产品,并没有超越关系理论之外。   自从1969年IBM的E.F.Codd博士首次提出关系数据库理论至今,40年间,关系理论发展并没有出现质的变化,我们又期待Oracle做些什么呢?其实不仅Oracle,包括DB2、SQLServer都开始在产品智能管理、降低企业成本等方面动脑筋。Oracle 10g的智能管理基础设施包括四大套件:自动工作负载信息库(AWR)、自动诊断任务基础框架、服务器告警机制、顾问框架。Oracle的智能管理大大降低了管理成本,作为DBA,只有了解其运行机制,才有可能比Oracle自己做得更好。   Oracle 10g的自动管理功能相当强大,基本上能实现全部自动化了,比如SGA、PGA,DBA手动调整各种参数的时代已经过去,剩下能让DBA发挥的,通常也是最容易见效的就剩SQL调整了。Oracle的自动管理基础设施收集了足够多的数据,“矿山已经炸开,就看你能不能发现金子”,善用这些工具和指标就可以快速追踪到问题SQL语句。这——篇就专门介绍了SQL执行的各种细节以及调整之道。   高级篇。   这里的所谓高级并不是指技术上如何艰深,而是指一个高级DBA或者架构师要能够从更高的视角来认识企业环境,要能跳出产品本身的束缚,不被厂商牵着鼻子走,要知道在不同需求下的取舍。因此高级篇选择了最具有代表性的两个问题——安全和审计、异构互联服务,这几章虽然着眼于Oracle的某个功能选项,但却试图能够跳出Oracle产品的局限,帮助读者扩展视野,能够从架构层面来对待技术。   比如对于安全,所有的系统都会有安全需求,并且这些需求也完全相同,无非就是用户验证、权限控制,再加上数据三性:机密性、完整性和不可抵赖性。早在Oracle出现之前,这些问题就已经存在了,并且早有“业内标准”的解决方案。因此在遇到Oracle的安全选项时,千万不要把它当“私房菜”看待,要认识到这不过是Oracle把“业界标准”方案包装在自己的产品中而已。如果能够认识到这个层次,你就会发现许多技术都是相通的,学习起来也会非常轻松,否则书越读越厚,知识永远都是新的,学习就是痛苦的过程。比如针对安全的PKI技术在Windows中有、在Linux中有、在Java中有,在Oracle中同样也有。你只要学过一次,就可以在所有产品中重复应用。   再比如,很多大型的电子商务网站架构中会有多种数据库同时存在,典型的就是Oracle+MySQL,Oracle用来支持电子交易的事务需要,而MySQL用来支持Web页面的展示。这种框架综合考虑了成本和收益,综合了两种产品的优点、规避了缺点。如果没有足够的认识,是没有办法理解这种框架的。   本书声明   (1)除了特别声明外,本书实例中使用的操作系统是RedHatAS4.0Update4,使用的数据库是Oracle 10 R2版。   (2)部分工具软件的下载地址。   Oracle Database   http://www.oracle.com/technology/global/cn/software/index.html   Red Hat Advanced Server   https://www.redhat.com/apps/download   (3)作者在编写本书过程中,以“够用就好”为原则,尽量覆盖到所有最重要的知识点。但所有观点都出自作者的个人见解,疏漏、错误之处在所难免,欢迎大家指正。读者如果有好的建议或者学习本书过程中遇到问题,欢迎到作者的博客(http://space.itpub.net/75321)留言进行探讨,或者发送邮件到mingyan926@hotmail.com,希望能够与大家一起交流和进步。   感谢   本书在出版的过程中得到了人民邮电出版社的大力支持,在此致以深深的谢意!感谢刘斌先生多年宋的扶携,感谢芮玉奎先生的帮助,感谢挚友焦亚明、北京大学刘铠维、Oracle公司的rebeca和bryanxu的支持,感谢爱康网的cindy和清华大学的焦丽静给了我许多内容上的建议,还要感谢许多朋友对我的帮助和鼓励,比如sunadmin、oolalal985、xiong_qiang、zgywyq、zigmer、sjq88881,你们是我进步的源泉。最后,把这本书献给我挚爱的家人。   在看得见的地方学习知识,在看不到的地方学习智慧。同时也祝愿大家在Oracle DBA的道路上顺风顺水。...   编者   2009年10月    序言   本书的作者晓明,是一位年轻人。我见过不少年轻人,有亲戚朋友家的孩子,有公司单位里的下属,更多的还是萍水相逢的点头之交。他们中,有许多都具备我们一般人眼里定义的“优秀”:凭借过硬的专业素质干着一个不错的工作,拿着一份不低的收入,是白领,是主管,是项目经理……跟这些年轻人打交道,看着他们衣着光鲜,说话左右逢源,有着我们这一代年轻时不多的“老练”。事儿来了,他们叔叔伯伯的叫着怪亲热,事儿走了,他们也跟着走了。所以对于很多年轻人,我印象不深,然而本书的作者晓明,却是一位我能记得住的年轻人。说来寻常,与他见面,本是碍着朋友的情面,帮他觅一份工作,朋友说他勤奋、踏实、能干。印象中晓明话不多,但喝酒很实在。只可惜由于机缘巧合,晓明的工作我虽然上心,到底也没帮上忙,还是凭他自己的本事挣下了一份工作。直到现在,我看见晓明仍觉的欠他点什么。.   后来几年,每逢节假日,晓明总来看看我,来了兴致,我就把他留下陪我喝几盅。照例是我说的多,他喝的多。喝的到位了,他也接过话茬儿。寥寥的几句,却能品出他的性情,觉出他的踏实。现在有太多年轻人,想去折射一个既有的耀眼光环,而非花一点点时间研磨自己淡淡的韵彩了。   最近一次见面,晓明已成了部门的主管,带领着一个团队,开始独当一面,开始从Interviewee变成Interviewer。我问起他今年就业的形势,他说竞争很激烈。有一些简历很漂亮,笔试很优秀的应试者往往在面试中难以脱颖而出,遗憾离去。他说,能看得出来,这些,年轻人肚里有货,有真本事,可就是缺乏些面试技巧经验,到头来,也成了茶壶里煮饺子。他说,有个想法,把他这个领域的专业知识从面试应用的角度加以梳理,出本书,告诉年轻人应该怎么做,看着年轻人走弯路,他心里着急。..   我知道,这是晓明的善良在作祟,他大概有了不能已于言的冲动。当时他偶然的一句,我还并未在意,只是表示支持,鼓励他做下去。不想今年九月,初稿已成。他高高兴兴地拿来请我指教。我是个地地道道的计算机门外汉,专业术语一概不知,却也从中读出了晓明的真诚。他是在把自己几年摸爬滚打里跌出来的经验拿来与人分享。我知道这对一个技术人员来说意味着什么。我想告诉读到这本书的年轻人,这本书其实更像一张地图,拿着它,我不敢保证你就找到了捷径,但最起码,你少走了很多弯路。   书稿最终付梓之前,晓明央我给他写序。我建议他找个本专业领域里的专家,这样有分量,书的销路也会好些。他说:“卖的是自己的书,不是专家的签名。”听他这样讲,我也就不再推辞。晓明用心,写了本书,我就用笔,写写他这个人吧。算是还当年欠他的那一顿饭。   是为序。...   2009年9月26日灯下   
pdf
发布资源于 8 年前

循序渐进Oracle:数据库管理、优化与备份恢复(第二版)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 循序渐进Oracle:数据库管理、优化与备份恢复(第二版) 基本信息 作者: 盖国强    出版社:人民邮电出版社 ISBN:9787115253170 上架时间:2011-7-13 出版日期:2011 年8月 开本:16开 页码:633 版次:1-1 编辑推荐   在数据库技术日益普及的今天,浅尝辄止的学习显然已经站不住脚,当今企业对于DBA的要求也越来越高,而本书由浅入深循序渐进的讲解正是希望引导读者学习并深入探索Oracle技术。 内容简介    《循序渐进oracle:数据库管理、优化与备份恢复》从基础知识入手,详细讨论了oracle数据库的创建、从oem到grid control、oracle的字符集、用户的创建与管理、表空间和数据文件、自动存储管理(asm)、临时表空间和临时文件、备份与恢复、备份方案与特例恢复、oracle的闪回特性、oracle的数据加载与卸载、从statspack到addm、故障诊断及分析方法等热点问题,并通过大量取自实际工作现场的实例,力图将oracle知识全面、系统、深入地展现给读者。    《循序渐进oracle:数据库管理、优化与备份恢复》在分析实例的过程中,兼顾深度与广度,不仅对实际问题的现象、产生原因和相关的原理进行了深入浅出的讲解,更主要的是,结合实际应用环境,提供了一系列解决问题的思路和方法,包括详细的操作步骤,具有很强的实战性和可操作性。    《循序渐进oracle:数据库管理、优化与备份恢复》适用于数据库管理人员、数据库开发人员、系统维护人员、数据库初学者及其他数据库从业人员,也可以作为各大中专院校相关专业的参考用书和相关培训机构的培训教材。 作译者   盖国强 网名Eygle Oracle ACE总监,恩墨科技创始人,ITPUB论坛超级版主,远程DBA服务的倡导者和实践者,致力于以技术服务客户。著有《深入解析Oracle》、《循序渐进Oracle》、《深入浅出Oracle》等书;从2010年开始,致力于《Oracle DBA手记》的撰写与编辑工作,并与张乐奕共同创立了ACOUG用户组,在国内推进公益自由的Oracle技术交流活动。 目录 封面 -15 封底 -14 扉页 -13 版权 -12 新版序 -10 前言 -8 目录 -5 第1章 Oracle数据库的创建 1 1.1 Oracle软件的获取与安装 1 1.1.1 Oracle软件的获取 1 1.1.2 Oracle的补丁集 3 1.2 使用DBCA创建数据库 5 1.2.1 DBCA的启动 5 1.2.2 模板选择及EM选项 6 1.2.3 数据库安全与口令 8 1.2.4 存储管理及选件 8 1.2.5 初始化参数选择设定 10 1.2.6 文件存储及创建选项 11 1.2.7 告警日志及跟踪文件 12 1.3 数据库创建的脚本 13 1.3.1 数据库创建脚本 13 1.3.2 创建的起点 14 1.3.3 ORADIM工具的使用 14 1.3.4 ORACLE_SID的含义 15 1.3.5 INSTANCE_NAME的含义及作用 19 1.3.6 Oracle的口令文件 20 1.3.7 脚本的执行 24 1.3.8 db_name参数和instance_name参数 24 1.3.9 sql.bsq文件与数据库创建 28 1.3.10 数据文件及字典的创建 29 1.4 使用模板创建数据库 30 1.4.1 启动创建 31 1.4.2 数据库创建模板 31 1.4.3 rman的引入 32 1.4.4 克隆数据库 35 1.4.5 传输表空间技术 37 1.4.6 跨平台表空间传输 41 1.4.7 文件系统与ASM的切换 60 1.4.8 DBMS_FILE_TRANSFER的可选性 63 1.4.9 用户的锁定 66 1.4.10 最后的脚本 67 1.4.11 使用模板建库注意事项 68 1.5 案例与实践分析 70 1.5.1 auto_space_advisor_job_proc案例一则 70 1.5.2 systemstate转储案例分析一则 72 第2章 从OEM到Grid Control 79 2.1 Oracle的OEM工具 79 2.1.1 传统的OEM工具 80 2.1.2 安装Database Control选件 82 2.1.3 手工配置DBControl
pdf
发布资源于 8 年前

深入解析Oracle:DBA入门、进阶与诊断案例(ITPUB四大技术版主之一盖国强最新力作)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 深入解析Oracle:DBA入门、进阶与诊断案例(ITPUB四大技术版主之一盖国强最新力作) 基本信息 作者: 盖国强 出版社:人民邮电出版社 ISBN:9787115190772 上架时间:2008-12-24 出版日期:2009 年1月 开本:16开 页码:527 版次:1-1 编辑推荐    本书给出了大量取自实际工作现场的实例,在分析实例的过程中,兼顾深度与广度,不仅对实际问题的现象、产生原因和相关的原理进行了深入浅出的讲解,更主要的是,结合实际应用环境,提供了一系列解决问题的思路和方法.    "深入解析Oracle ——数据库的初始化、Grid及云计算" 作者盖国强作客IT168 视频下载http://wmv.it168.com/zhibo/08.12.30/oracle.wmv 内容简介   针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、buffer cache与shared pool原理、重做、回滚与撤销、等待事件、性能诊断与sql优化等几大oracle热点主题,本书从基础知识入手,深入研究相关技术,并结合性能调整及丰富的诊断案例,力图将oracle知识全面、系统、深入地展现给读者。   本书给出了大量取自实际工作现场的实例,在分析实例的过程中,兼顾深度与广度,不仅对实际问题的现象、产生原因和相关的原理进行了深入浅出的讲解,更主要的是,结合实际应用环境,提供了一系列解决问题的思路和方法,包括详细的操作步骤,具有很强的实战性和可操作性,适用于具备一定数据库基础、打算深入学习oracle技术的数据库从业人员,尤其适用于入门、进阶以及希望深入研究oracle技术的数据库管理人员。 作译者   盖国强,网名eygle,Oracle ACE总监,ITPUB Oracle管理版版主,ITPUB论坛超级版主,《程序员》杂志特邀专家顾问,目前从事独立的咨询顾问服务。   曾任职于某国家大型企业,服务于烟草行业,开发过基于Oracle数据库的大型ERP系统;后任职于北京某电信增值服务商企业,提供电信级数据库的规划与运维支持。   实践经验丰富,长于数据库诊断、性能调整与SQL优化等。对于Oracle内部技术等具有深入研究。高级培训讲师,培训经验丰富,曾主讲Itpub dba培训及Itpub高级性能调整等主要课程。   2008年2月,被Oracle公司授予Oracle ACE Director(ACE 总监)称号.2007年7月,出版个人专著《循序渐进Oracle--数据库管理、优化与备份恢复》一书.2007年3月,被Oracle公司授予Oracle ACE称号.2006年8月,4在“中国首届杰出数据库工程师评选”活动中,获评为“十大杰出数据库工程师”之一.2006年7月,出版个人专著《深入浅出Oracle-DBA入门、进阶与诊断案例》一书.2005年6月,担任《Oracle数据库性能优化》一书的主编及主要作者.2004年2月,担任《Oracle数据库DBA专题技术精粹》一书的主编及主要作者. 目录 封面 -23 扉页 -22 版权 -21 名家推荐 -20 序 -18 新版序 -16 第一版序 -12 前言 -9 目录 -7 第1章 数据库的启动和关闭 1 1.1 数据库的启动 1 1.1.1 启动数据库到NOMOUNT状态的过程 2 1.1.2 启动数据库到MOUNT状态 18 1.1.3 启动数据库OPEN阶段 26 1.2 数据库的访问 37 1.2.1 客户端的TNSNAMES.ORA文件配置 37 1.2.2 服务器端的监听器文件listener.ora配置 39 1.2.3 通过不同服务器名对数据库的访问 41 1.2.4 动态监听器注册服务 42 1.3 数据库的关闭 46 1.3.1 数据库关闭的步骤 46 1.3.2 几种关闭方式的对比 48 第2章 控制文件与数据库初始化 51 2.1 控制文件的内容 51 2.2 SCN 53 2.2.1 SCN的定义 53 2.2.2 SCN的获取方式 53 2.2.3 SCN的进一步说明 54 2.3 检查点(Checkpoint) 57 2.3.1 检查点(Checkpoint)的工作原理 57 2.3.2 常规检查点与增量检查点 59 2.3.3 LOG_CHECKPOINT_TO_ALERT参数 63 2.3.4 控制文件与数据文件头信息 64 2.3.5 数据库的启动验证 66 2.3.6 使用备份的控制文件 70 2.3.7 FAST_START_MTTR_TARGET 71 2.3.8 关于检查点执行的案例 74 2.3.9 Oracle 10g自动检查点调整 75 2.3.10 检查点信息及恢复起点 78 2.3.11 正常关闭数据库的状况 78 2.3.12 数据库异常关闭的情况 80 2.3.13 数据库并行恢复案例一则 82 2.3.14 判断一个死事务的恢复进度 85 2.4 数据库的初始化 86 2.4.1 bootstrap$及数据库初始化过程 86 2.4.2 bootstrap$的定位 88 2.4.3 Oracle中独一无二的Cache对象 89 2.4.4 Oracle数据库的引导 91 2.4.5 系统对象与bootstrap$ 92 2.4.6 bootstrap$的重要性 94 2.4.7 BBED工具的简要介绍 95 2.4.8 坏块的处理与恢复 97 第3章 参数及参数文件 103 3.1 初始化参数的分类 103 3.1.1 推导参数(Derived Parameters) 103 3.1.2 操作系统依赖参数 104 3.1.3 可变参数 104 3.1.4 初始化参数的获取 105 3.2 参数文件 107 3.2.1 PFILE和SPFILE 108 3.2.2 获取参数的视图 110 3.2.3 SPFILE的创建 111 3.2.4 SPFILE的搜索顺序 112 3.2.5 使用PFILE/SPFILE启动数据库 112 3.2.6 修改参数 113 3.2.7 解决SPFILE参数修改错误 118 3.2.8 重置SPFILE中设置的参数 120 3.2.9 判断是否使用了SPFILE 120 3.2.10 SPFILE的备份与恢复 121 3.2.11 Oracle 11g参数文件恢复 127 3.2.12 如何设置Events事件 128 3.2.13 导出SPFILE文件 129 3.3 诊断案例之一:参数文件 131 3.3.1 登录系统检查告警日志文件 131 3.3.2 尝试重新启动数据库 132 3.3.3 检查数据文件 132 3.3.4 MOUNT数据库,检查系统参数 133 3.3.5 检查参数文件 133 3.3.6 再次检查alert文件 134 3.3.7 修正PFILE 135 3.3.8 启动数据库 135 3.4 诊断案例之二:RAC环境参数文件 135 3.4.1 数据库资源异常 135 3.4.2 问题的发现 136 3.4.3 参数文件问题的解决 137 第4章 数据字典 138 4.1 数据字典概述 138 4.2 内部RDBMS(X$)表 138 4.3 数据字典表 141 4.4 静态数据字典视图 145 4.4.1 静态数据字典视图的分类 145 4.4.2 静态数据字典视图的内部实现 146 4.4.3 常用数据字典视图举例 148 4.5 动态性能视图 151 4.5.1 GV$和V$视图 151 4.5.2 GV_$、V_$视图和V$、GV$同义词 152 4.5.3 进一步的说明 156 4.5.4 动态性能视图与数据库启动 157 4.6 最后的验证 157 4.6.1 V$PARAMETER的结构 157 4.6.2 视图还是同义词 158 4.6.3 Oracle如何通过同义词定位对象 159 第5章 内存管理 162 5.1 PGA管理 162 5.1.1 什么是PGA 162 5.1.2 UGA与CGA 163 5.1.3 PGA管理技术的变迁 165 5.1.4 参数的设置与内存分配 166 5.1.5 自动PGA管理实现原理 169 5.1.6 PGA的调整建议 173 5.1.7 PGA的转储 176 5.2 SGA管理 178 5.2.1 SGA的组成 179 5.2.2 SGA与共享内存 186 5.2.3 SGA管理的变迁 191 5.3 Oracle的内存分配和使用 204 5.3.1 诊断案例一:SGA与SWAP 205 5.3.2 诊断案例二:SGA设置过高导致的系统故障 208 5.3.3 诊断案例三:如何诊断和解决CPU高度消耗(100%)问题 212 第6章 Buffer Cache与Shared Pool原理 215 6.1 Buffer Cache原理 215 6.1.1 LRU与Dirty List 215 6.1.2 Cache Buffers LRU Chain闩锁竞争与解决 220 6.1.3 Cache Buffer Chain闩锁竞争与解决 221 6.2 Shared Pool的基本原理 233 6.2.1 Oracle 11g新特性:Result Cache 234 6.2.2 Shared Pool的设置说明 238 6.2.3 Oracle 9i子缓冲池的增强 243 6.2.4 Oracle 10g共享池管理的增强 245 6.2.5 了解X$KSMSP视图 247 6.2.6 Shared Pool的转储与分析 250 6.2.7 诊断和解决ORA-04031错误 262 6.2.8 Library Cache Pin及Library Cache Lock分析 273 6.2.9 诊断案例一:version_count过高造成的Latch竞争解决 281 6.2.10 V$SQL与V$SQLAREA视图 287 6.2.11 Oracle 10g中version_count过高的诊断 292 6.2.12 诊断案例二:临时表引发的竞争 297 6.2.13 小结 299 第7章 重做(Redo) 300 7.1 Redo的作用 300 7.2 Redo的原理 301 7.3 Redo与Latch 302 7.4 Oracle 9i Redo的增强 303 7.5 Oracle 10g Redo的增强 304 7.6 Redo的内容 307 7.7 产生多少Redo 310 7.8 Redo写的触发条件 314 7.8.1 每3秒超时(Timeout) 314 7.8.2 阈值达到 314 7.8.3 用户提交 315 7.8.4 在DBWn写之前 315 7.9 Redo Log Buffer的大小设置 316 7.10 commit做了什么? 317 7.11 日志的状态 318 7.12 日志的块大小 321 7.13 日志文件的大小 322 7.14 如何调整日志文件大小 324 7.15 为什么热备份期间产生的Redo要比正常的多 326 7.16 能否不生成Redo 329 7.17 Redo故障的恢复 333 7.17.1 丢失非活动日志组的故障恢复 333 7.17.2 丢失活动或当前日志文件的恢复 335 7.18 诊断案例一:通过Clear日志恢复数据库 339 7.19 诊断案例二:日志组过度激活的诊断 342 附录 数值在Oracle的内部存储 344 第8章 回滚与撤销 347 8.1 什么是回滚和撤销 347 8.2 回滚段存储的内容 348 8.3 并发控制和一致性读 349 8.4 回滚段的前世今生 350 8.5 Oracle 10g的UNDO_RETENTION管理增强 355 8.6 UNDO_RETENTION的内部实现 357 8.7 Oracle 10g In Memory Undo新特性 358 8.8 Oracle 11g UNDO表空间备份增强 360 8.9 回滚机制的深入研究 361 8.9.1 从DML更新事务开始 361 8.9.2 获得事务信息 362 8.9.3 获得回滚段名称并转储段头信息 362 8.9.4 获得跟踪文件信息 363 8.9.5 转储前镜像信息 364 8.9.6 转储数据块信息 367 8.9.7 块清除(Block Cleanouts) 369 8.9.8 提交之后的UNDO信息 373 8.10 Oracle 9i闪回查询的新特性 375 8.11 使用ERRORSTACK进行错误跟踪 377 8.12 Oracle 10g闪回查询特性的增强 378 8.13 ORA-01555成因与解决 382 8.14 Oracle 11g闪回数据归档 389 8.15 AUM下如何重建UNDO表空间 393 8.16 使用Flashback Query恢复误删除数据 394 8.17 诊断案例之一:释放过度扩展的UNDO空间 396 8.18 特殊情况的恢复 399 8.19 诊断案例之二:回滚段损坏的恢复 402 第9章 等待事件 406 9.1 等待事件的源起 406 9.2 从等待发现瓶颈 408 9.2.1 V$SESSION 和V$SESSION_WAIT 409 9.2.2 V$SESSION_EVENT和V$SYSTEM_EVENT 410 9.2.3 Oracle 11g实时SQL监控 411 9.2.4 从V$SQLTEXT中追踪 414 9.2.5 捕获相关SQL 415 9.3 Oracle 10g的增强 417 9.3.1 新增v$session_wait_history视图 418 9.3.2 ASH新特性 419 9.3.3 自动负载信息库:AWR的引入 425 9.3.4 自动数据库诊断监控:ADDM的引入 436 9.4 顶级等待事件 436 9.5 重要等待事件 439 9.5.1 db file sequential read(数据文件顺序读取) 439 9.5.2 db file scattered read等待事件 440 9.5.3 direct path read/write(直接路径读/写) 444 9.5.4 日志文件相关等待 453 9.5.5 Enqueue(队列等待) 458 9.5.6 Latch Free(闩锁释放) 462 9.5.7 Oracle 10g/11g Latch机制的变化 467 第10章 性能诊断与SQL优化 471 10.1 使用AUTOTRACE功能辅助SQL优化 471 10.1.1 AUTOTRACE功能的启用 471 10.1.2 Oracle 10g AUTOTRACE功能的增强 473 10.1.3 AUTOTRACE功能的内部操作 475 10.1.4 使用AUTOTRACE功能辅助SQL优化 477 10.2 获取SQL执行计划的方法 479 10.2.1 通过V$SQL_PLAN获得执行计划 479 10.2.2 EXPLAIN PLAN FOR与DBMS_XPLAN 483 10.2.3 通过AWR获取SQL执行计划 487 10.3 捕获问题SQL解决过度CPU消耗问题 488 10.3.1 使用vmstat检查系统当前情况 488 10.3.2 使用TOP工具辅助诊断 489 10.3.3 检查进程数量 490 10.3.4 登录数据库 490 10.3.5 捕获相关SQL 491 10.3.6 创建新的索引以消除全表扫描 494 10.3.7 观察系统状况 494 10.3.8 性能何以提高 495 10.3.9 小结 497 10.4 使用SQL_TRACE/10046事件进行数据库诊断 497 10.4.1 SQL_TRACE及10046事件的基础介绍 497 10.4.2 诊断案例之一:隐式转换与索引失效 502 10.4.3 诊断案例之二:跟踪后台错误 506 10.4.4 10046与等待事件 509 10.5 使用物化视图进行翻页性能调整 514 10.5.1 系统环境 514 10.5.2 问题描述 514 10.5.3 捕获排序SQL语句 515 10.5.4 确定典型问题SQL 515 10.5.5 选择解决办法 517 10.5.6 进一步的调整优化 518 10.5.7 小结 520 10.6 一次横跨两岸的问题诊断 520 10.6.1 第一封求助邮件 520 10.6.2 第一次回复 523 10.6.3 进一步信息提供 523 10.6.4 进一步的诊断 524 10.6.5 最后的问题定位 525 10.6.6 小结 525 10.7 总结 525 后记 526 前言   关于本书   根据Gartner公司最近发布的关系数据库2007年市场份额报告,Oracle以48.6%的高份额再占首位。而2006年Gartner的统计数据显示Oracle的市场份额为47.9%,也就是说在2007年度,Oracle获得了0.7%的份额增长。.   不管这些市场份额数据怎样在发生微小的变化,有一点是肯定的,Oracle数据库持续的占有了市场第一的位置,在本书第一版出版的两年多时间,国内的Oracle从业市场和学习环境都有了进一步的发展和进步,甚至有些大学已经开设了专门的Oracle系列课程或专业方向,从事数据库管理工作的朋友们也越来越多。   为了让更多进入Oracle领域的朋友能够快速了解和掌握Oracle技术,让具备一定经验和积累的Oracle从业人员继续深入学习,作者倾力修订了本书。   本书作者活跃于国内著名Oracle技术论坛ITPUB(www.itpub.net),并全力打造国内最具影响力的个人Oracle技术站点Eygle.com(www.eygle.com),本书从基础出发,逐层深入,并结合实际工作中的诊断案例进行全面讲解,力图从点到面,让读者对每个主题都有深入的了解和认识。   本书特点   目前市场上的Oracle书籍普遍存在的问题是模式单一,要么只讲基础知识,要么侧重代码编程实例,要么针对具体的版本特性(Oracle 9i/10g/11g等),要么缺少实践应用检验,很少能对Oracle相关知识进行全面深入讲解。   本书针对这些问题,从基础知识入手,再进行深入研究,结合性能调整、诊断案例实践,将Oracle知识全面、系统、深入地展现给读者;本书内容更涉及Oracle数据库的多个版本8i/9i/10g/11g,将Oracle的版本变化和功能改进,一以贯之地展现出来,让大家看到这些变革的真正原因以及Oracle的不断技术创新,通过真实案例的学习,更可以加深大家对现实环境的了解,从而提高实践能力。   本书是作者多年实践工作的积累和总结,各章更从DBA的成长历程入手,引导大家快速进入并深入Oracle知识的国度。   本书继续贯彻了作者“由点到线再及面”的学习方法,既可以让初学者参考学习,又可以帮助具备一定基础的中级DBA进行进阶学习,不同层次的学习者都能从本书的不同内容中受益。   本书结构   本书分为10章,具体结构划分如下。   第1章:数据库的启动和关闭,从基础入手,讲解Oracle数据库的启动和关闭,并深入探讨数据库启动关闭的核心本质及内部处理。..   第2章:控制文件与数据库初始化,从控制文件与数据库的关系入手,进一步解析数据库的初始化过程。   第3章:参数及参数文件,这一部分从Oracle启动必需的参数文件入手,讲解重要参数和参数文件对于Oracle的作用,并结合RAC环境和Oracle 10g、Oracle 11g介绍参数文件等内容的不断改进和变迁。   第4章:数据字典,深入到数据库的核心,全面了解数据字典的机制和重要性。   第5章:内存管理,Oracle的内存管理非常重要,本章就SGA、PGA的管理进行探讨,并深入介绍Oracle内存管理技术在Oracle8i/9i/10g/11g不同版本中的变迁。   第6章:Buffer Cache与Shared Pool原理,本章深入介绍了Buffer Cache和Shared Pool的原理,并涉及闩锁和热点块等深入话题。   第7章:重做(Redo),重做机制是Oracle恢复的保障,本章针对Oracle的重做机制进行探讨,并涉及重做的内部原理及工作机制。   第8章:回滚与撤销,回滚和事务密切相关,本章从基础出发,介绍Oracle的回滚机制,进而深入研究和探讨回滚机制的内部操作及ORA-01555错误等相关知识。 .  第9章:等待事件,等待事件在数据库性能诊断中起着极为重要的作用,在不同版本中,Oracle一直在不断加强等待事件的功能,本章从等待事件入手,进一步讲解数据库性能诊断和优化知识。   第10章:性能诊断与SQL优化,这一章是实践的总结,通过一些实践的案例,介绍一种思路和方法给读者,解决问题是学习的最终目的。   本书的读者对象   本书适用于具备一定数据库基础、打算深入学习Oracle技术的数据库从业人员,尤其适用于入门、进阶以及希望深入研究Oracle技术的数据库管理人员。   本书也可以作为各大中专院校相关专业的教学辅导和参考用书,或作为相关培训机构的培训教材。   本书约定   (1)为了给读者提供更多的学习资源,同时弥补本书篇幅有限的遗憾,本书提供了部分的参考链接,许多本书无法详细介绍的问题都可以通过这些链接找到答案。相关文档可以从作者的网站(www.eygle.com)上找到。   (2)本书所列出的插图、运行结果可能会与读者实际环境中的操作界面有所差别,这可能是由于操作系统平台、Oracle版本的不同而引起的,在此特别说明,一切以实际情况为准。   (3)广大读者如有好的建议或在学习本书中遇到疑难问题,欢迎到作者个人网站(http://www.eygle.com)上进行探讨,也可发电子邮件到eygle@eygle.com。...    序言   Eygle某天打来电话,说《深入浅出Oracle——DBA入门、进阶与诊断案例》(下简称为《深入浅出Oracle》)将再版,嘱咐我帮忙写一个序。想了良久,一直没有动笔,因为觉得不知道该在这个序里面展现哪些内容。期间也问过eygle,想让我帮着赞美些什么,结果人家也是一派听之任之的劲头,毫无具有建树性的意见。于是,有了这篇信笔为之,写到哪儿算哪儿的序。.   关于这本书的三言两语   从Eygle开始萌发动笔的念头,到该书成稿,其实时间并不长,甚至于后来又几乎用闪电的速度出了第二本《循序渐进Oracle——数据库管理、优化与备份恢复》。   翻看这本新版的《深入浅出Oracle》(最终更名为《深入解析Oracle》),第一个扑面而来的感觉是厚积薄发。在积蓄、沉淀了大量心得之后,不吐不快,这才造就了这本国内原创Oracle数据库技术图书精品。   对于这本书的溢美之辞无需我在这里重复,在网络上已经可以看到很多因为这本书而受益的例子。希望更多的Oracle技术爱好者可以从这本书中获得自己想要的知识。   这本书适合什么样的读者?该怎么阅读这本书?   从整体上来说,这本书更加适合于对于Oracle数据库有一些了解,希望更加深入学习的朋友。而对于Oracle初学者或者说仅仅是听说过Oracle数据库想了解一下的朋友们来说,这本书的部分内容稍显艰深,需要花费更多的时间来理解其中的内容,也许在这本书的阅读过程中你会感受到挫折——“这是在说什么啊?怎么会有这么多概念?我怎么完全看不明白?”但是,请相信,如果你对Oracle数据库持续关注,持续投入精力和时间的话,总有一天你会发现曾经让你感到迷惑的很多问题都可以在这本书中找到答案。这本技术书不像其他的操作文档那样读一遍就可以扔到一边去,它适合在你成长过程的不同阶段中屡次翻阅。   那么初学者在第一次翻阅这本书的时候,能够学到些什么呢?..   去注意解决问题和研究问题的方法吧,看看如何从一个问题引发开去,由点及面,逐渐形成自己的知识网络。   关于Eygle的三言两语   Eygle在2000年的时候开始接触Oracle,那时候他大学毕业刚开始工作,从事PowerBuilder+Oracle的应用程序开发,用的是Oracle 8。从那时候算起到现在也不过8年的时间,而距离Eygle在业界变得颇有名气,也不过才三四年的时间。   一个人的成长,除了天赋之外,还有其他两个至关重要的因素,期待看这本书的朋友们都能找到自己的这些因素。   首先是兴趣,拥有强烈的兴趣就意味着拥有了对某件事情的狂热、毅力、执著、探索,就意味着乐意对这件事情付出无限的时间和精力。相信大家明白在追一个自己感兴趣的女孩儿时候的狂热,那么学习技术也应该保持这样的感觉和劲头。   其次是环境,一个人如果长时间找不到志同道合的朋友,那么个人的狂热持续时间会很快过去,Eygle最快的成长期是他跟biti_rainy(冯春培)和coolyl(叶梁)住在同一个屋檐下的时候,那段时间,他们在“斗地主”之余,长时间一同关注感兴趣的Oracle技术问题,一起在ITPUB论坛上回答别人的问题,一起经历时间的磨难成长了起来。在那段时间里我也是那里的常客,我想很多人都和我一样,会非常怀念那段无忧无虑的Party一样的时光。   培养自己的兴趣,找到跟自己志同道合的朋友,如果现实生活中没有,那么就去多多地参与技术社区的讨论。   总有那么一条通向远方的路在脚下等待着我们去丈量。GO!...   张乐奕   北京甲骨文软件系统有限公司 高级顾问   Oracle ACE    媒体评论   转眼间《深入浅出Oracle——DBA入门、进阶与诊断案例》一书已经出版两年有余。作为ITPUB技术丛书系列中面向入门与进阶者的一本数据库专著,本书给ITPUB上的读者带来了巨大的知识价值,帮助很多读者进入数据库管理这个行业,找到了很多个人发展机会。在此,作为ITPUB的主持人和联系人,感谢作者对本书所做出的辛勤工作和知识分享,也期待再版的新书,能够为读者带来更多的新知识。   ——黄志洪(tigerfish)ITPUB论坛创始人   Eygle一向是能长期坚持的人,这么多年不断地学习、不断地分享。独乐乐不如众乐乐,开放、分享是互联网的精神,可以说我们这一代人成长于互联网又回馈于互联网,本书则是Eygle回馈内容的升华。希望本书能帮助到正在这个方向上努力着的数据库从业人员,同时也希望大家能将这种分享的精神,传递给正要从事这个行业的人。   ——冯春培(biti_rainy)阿里巴巴首席DBA Oracle ACE Director   近五载来,数据库江湖王国人才辈出,但环顾置内,在技术上能让我服膺者少之又少,国强便是其中之一,窃以为,堪称国内数据库界之牛耳者,国强或可魑力为之,国强对数据库的精通应已达举重若轻、大巧不工之境。古人有“术”、“道”之论,以数据库技术而论,国强应近乎道矣!   ——牛新庄 中国建设银行特聘资深数据库专家 IBM官方认证资深软件专家   作者盖国强(Eygle)是我认识的DBA中,较旱开始做Oracle,而且又能持之以恒、坚持不懈做研究的人,非常值得敬佩。我曾经看过作者很多实际中的诊断案例,可以看到其思维非常严谨。在本书中,收录了大量作者作为资深DBA所遇到的实际案例,我相信,这种实际的经验总结能给大家非常大的帮助。   ——陈吉平 淘宝网首席DBA,Oracle ACE《构建Oracle高可用环境》作者
pdf
发布资源于 8 年前

深入浅出Oracle:DBA入门、进阶与诊断案例--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 深入浅出Oracle:DBA入门、进阶与诊断案例 基本信息 作者: 盖国强 出版社:人民邮电出版社 ISBN:7115149895 上架时间:2006-7-26 出版日期:2006 年7月 开本:16开 页码:484 版次:1-1 编辑推荐   本书是ITPUB技术丛书的第三本,是作者多年实践工作的积累和总结,各章节更从DBA的成长历程入手,引导大家快速进入并深入Oracle知识的国度。 内容简介   针对数据库的启动和关闭、参数及参数文件、数据字典、内存管理、buffer cache与shared pool原理、重做、回滚与撤销、等待事件、性能诊断与sql优化等几大oracle热点主题,本书从基础知识入手,深入研究相关技术,并结合性能调整及丰富的诊断案例,力图将oracle知识全面、系统、深入地展现给读者。   本书给出了大量取自实际工作现场的实例。在分析实例的过程中,兼顾深度与广度,不仅对实际问题的现象、产生原因和相关的原理进行了深入浅出的讲解,更主要的是,结合实际应用环境,提供了一系列解决问题的思路和方法,包括详细的操作步骤,具有很强的实战性和可操作性,满足面向实际应用的读者需求。... 作译者   盖国强,网名eygle,ITPUB Oracle管理版版主,ITPUB论坛超级版主。曾任职于某大型国有企业,开发过基于Oracle数据库的大型ERP系统,属国家信息产业部重点工程。同时负责Oracle数据库管理及优化,并为多家烟草企业提供Oracle数据库管理、优化及技术支持。目前任职于北京某电信增值服务系统提供商企业(Nasdaq上市公司),技术支持部总监兼首席DBA。管理全国30多个数据库系统,项目经验丰富,曾设计规划及支持中国联通增值业务等大型数据库系统。实践经验丰富,长于数据库诊、性能调整与SQL优化等.对于Oracle内部技术具有深入研究.高级培训讲师,培训经验丰富,曾主讲ITPUB DBA培训及ITPUB高级性能调整等主要课程.《Oracle数据库DBA专题技术精粹》、《Oracle数据库性能优化》二书的主编及主要作者.关于作者和本书的更多信息,可以访问http://www.eygle.com.    目录 封面 -14 扉页 -13 前言 -12 写在前面 -10 版权 -7 目录 -6 第1章 数据库的启动和关闭 1 1.1 数据库的启动 1 1.1.1 启动数据库到nomount状态 1 1.1.2 启动数据库到mount状态 8 1.1.3 启动数据库open阶段 12 1.2 进阶内容 18 1.2.1 SCN 18 1.2.2 检查点 24 1.2.3 正常关闭数据库的状况 34 1.2.4 数据库异常关闭的情况 37 1.3 深入分析 41 1.3.1 获得数据库Open的跟踪文件 41 1.3.2 bootstrap$及数据库初始化过程 42 1.3.3 BOOTSTRAP$的重要性 44 1.3.4 BBED工具的简要介绍 45 第2章 参数及参数文件 49 2.1 初始化参数的分类 49 2.1.1 推导参数(Derived Parameters) 49 2.1.2 操作系统依赖参数 49 2.1.3 可变参数 49 2.1.4 初始化参数的获取 50 2.2 参数文件 52 2.2.1 PFILE和SPFILE 53 2.2.2 SPFILE的创建 55 2.2.3 SPFILE的搜索顺序 56 2.2.4 使用PFILE/SPFILE启动数据库 57 2.2.5 修改参数 59 2.2.6 重置SPFILE中设置的参数 66 2.2.7 是否使用了SPFILE 67 2.2.8 SPFILE的备份与恢复 68 2.2.9 如何设置Events事件 75 2.2.10 导出SPFILE文件 77 2.3 诊断案例 81 2.3.1 登录系统检查alert.log文件 82 2.3.2 尝试重新启动数据库 84 2.3.3 检查数据文件 84 2.3.4 mount数据库,检查系统参数 85 2.3.5 检查参数文件 86 2.3.6 再次检查alert文件 86 2.3.7 修正PFILE 88 2.3.8 启动数据库 89 第3章 数据字典 91 3.1 数据字典概述 91 3.2 内部RDBMS(X$)表 91 3.3 数据字典表 94 3.4 动态性能视图 95 3.4.1 GV$和V$视图 95 3.4.2 GV_$,V_$视图和V$,GV$同义词 97 3.4.3 数据字典视图 99 3.4.4 进一步的说明 101 3.5 最后的验证 102 3.5.1 V$PARAMETER的结构 102 3.5.2 视图还是同义词 103 3.5.3 Oracle如何通过同义词定位对象 104 第4章 内存管理 109 4.1 SGA管理 109 4.1.1 什么是SGA 109 4.1.2 SGA与共享内存 118 4.1.3 SGA管理的变迁 124 4.2 PGA管理 138 4.2.1 什么是PGA 138 4.2.2 PGA的调整建议 147 4.3 Oracle的内存分配和使用 151 4.3.1 诊断案例一:SGA与Swap 152 4.3.2 诊断案例二:SGA设置过高导致的系统故障 156 4.3.3 诊断案例三:如何诊断和解决CPU高度消耗(100%)问题 161 第5章 Buffer Cache与Shared Pool原理 165 5.1 Buffer Cache原理 165 5.1.1 LRU与Dirty List 165 5.1.2 Cache Buffers Lru Chain闩锁竞争与解决 169 5.1.3 Cache Buffer Chain闩锁竞争与解决 171 5.2 Shared Pool的基本原理 186 5.2.1 Shared Pool的设置说明 187 5.2.2 了解X$KSMSP视图 195 5.2.3 诊断和解决ORA-04031错误 199 5.2.4 Library Cache Pin及Library Cache Lock分析 209 5.2.5 诊断案例一:version_count过高造成的Latch竞争解决 216 5.2.6 诊断案例二:临时表引发的竞争 224 5.2.7 小结 228 第6章 重做(Redo) 229 6.1 Redo的作用 229 6.2 Redo的内容 230 6.3 产生多少Redo 235 6.4 Redo写的触发条件 239 6.4.1 每3秒钟超时(Timeout) 239 6.4.2 阈值达到 240 6.4.3 用户提交 241 6.4.4 在DBWn写之前 242 6.5 Redo Log Buffer的大小设置 242 6.6 Commit做了什么 243 6.7 日志的状态 243 6.8 日志的块大小 247 6.9 日志文件的大小 249 6.10 为什么热备份期间产生的Redo要比正常的多 251 6.11 能否不生成Redo 256 6.11.1 NOLOGGING对于数据库的影响 256 6.11.2 disable_logging对于数据库的影响 263 6.11.3 FORCE LOGGING(强制日志)模式 272 6.12 Redo故障的恢复 272 6.12.1 丢失非活动日志组的故障恢复 273 6.12.2 丢失活动或当前日志文件的恢复 275 6.13 诊断案例一:通过Clear日志恢复数据库 281 6.14 诊断案例二:日志组过度激活的诊断 285 第7章 回滚与撤销 290 7.1 什么是回滚和撤消 290 7.2 回滚段存储的内容 291 7.3 并发控制和一致性读 292 7.4 回滚段的前世今生 293 7.5 回滚机制的深入研究 298 7.6 Oracle 9i闪回查询的新特性 317 7.7 使用ERRORSTACK进行错误跟踪 320 7.8 Oracle 10g闪回查询特性的增强 322 7.9 ORA-01555错误 327 7.10 AUM下如何重建Undo表空间 339 7.11 诊断案例一:使用Flashback Query恢复误删除数据 340 7.12 诊断案例二:释放过度扩展的Undo空间 343 7.13 特殊情况的恢复 347 7.14 数值在Oracle的内部存储 351 第8章 等待事件 354 8.1 等待事件的源起 354 8.2 从等待发现瓶颈 358 8.2.1 V$SESSION和V$SESSION_WAIT 359 8.2.2 从V$SQLTEXT中追踪 360 8.2.3 捕获相关SQL 361 8.3 Oracle 10g的增强 365 8.3.1 新增V$SESSION_WAIT_HISTORY视图 365 8.3.2 ASH新特性 366 8.3.3 自动负载信息库AWR的引入 373 8.3.4 自动数据库诊断监控ADDM的引入 375 8.4 顶级等待事件 376 8.5 重要等待事件 380 8.5.1 db file sequential read(数据文件顺序读取) 380 8.5.2 db file scattered read(数据文件离散读取) 382 8.5.3 direct path read/write(直接路径读/写) 386 8.5.4 日志文件相关等待 395 8.5.5 Enqueue(队列等待) 401 8.5.6 Latch Free(闩锁释放) 404 第9章 性能诊断与SQL优化 415 9.1 使用AUTOTRACE功能辅助SQL优化 415 9.1.1 AUTOTRACE功能的启用 415 9.1.2 Oracle 10g AUTOTRACE功能的增强 418 9.1.3 AUTOTRACE功能的内部操作 421 9.1.4 使用AUTOTRACE功能辅助SQL优化 424 9.2 捕获问题SQL解决过度CPU消耗问题 427 9.2.1 使用vmstat检查系统当前情况 427 9.2.2 使用Top工具辅助诊断 428 9.2.3 检查进程数量 429 9.2.4 登录数据库 430 9.2.5 捕获相关SQL 430 9.2.6 创建新的索引以消除全表扫描 435 9.2.7 观察系统状况 436 9.2.8 性能何以提高 437 9.2.9 小结 439 9.3 使用SQL_TRACE/10046事件进行数据库诊断 439 9.3.1 SQL_TRACE及10046事件的基础介绍 439 9.3.2 诊断案例一:隐式转换与索引失效 446 9.3.3 诊断案例二:跟踪后台错误 451 9.3.4 10046与等待事件 456 9.4 使用物化视图进行翻页性能调整 465 9.4.1 系统环境 466 9.4.2 问题描述 466 9.4.3 捕获排序SQL语句 466 9.4.4 确定典型问题SQL 467 9.4.5 选择解决办法 471 9.4.6 进一步的调整优化 473 9.4.7 小结 475 9.5 一次横跨两岸的问题诊断 475 9.5.1 第一封求助邮件 475 9.5.2 第一次回复 479 9.5.3 进一步信息提供 479 9.5.4 进一步的诊断 481 9.5.5 最后的问题定位 482 9.5.6 小结 482 9.6 总结 482 后记 483 前言   关于本书   根据Gartner公司的统计数据,在2005年,Oracle数据库以48.6%的市场占有率继续稳居关系数据库市场的首位。在过去这一年中,国内的Oracle从业市场和学习环境都有了很大的发展和进步,市场进一步规范和成熟,从事数据库管理工作的朋友们也越来越多。   为了让更多进入Oracle领域的朋友能够快速了解和掌握Oracle技术,让具备一定经验和积累的Oracle从业人员继续深入学习,作者倾力撰写了本书。   本书作者活跃于国内著名Oracle技术论坛ITPUB(www.itpub.net),并全力打造国内极具影响力的个人Oracle技术站点Eygle.com(www.eygle.com)。本书从基础出发,逐层深入,并结合实际工作中的诊断案例进行全面讲解,力图从点到面,让读者对每个主题都有深入的了解和认识。   本书是ITPUB技术丛书的第三本,在《Oracle数据库DBA专题技术精粹》和《Oracle数据库性能优化》两书出版的两年多以来,ITPUB和Oracle市场都有了长足的发展,希望本书的出现能为读者带来更深入的技术知识和更多的实践经验。   本书特点   本书每章的布局基本上分为3个部分,基础知识、进阶知识、结合实际的案例分析。基础知识部分可以作为初学者的入门参考,进阶部分则可以给广大Oracle技术爱好者作为深入学习的材料,案例分析作为实践部分希望对大家都能有所借鉴。   在数据库版本方面,本书内容更涉及Oracle 8i/Oracle 9i/Oracle 10g,将Oracle的版本变化、功能改进,一以贯之地展现出来,让大家看到这些变革的真正原因以及Oracle的不断技术创新。关于Oracle技术的很多问题是因跨越版本而存在的,所以我们必须了解一项技术的来龙去脉,才能知道一个革新、一个新特性的真正意义所在。   本书是作者多年实践工作的积累和总结,各章节更从DBA的成长历程入手,引导大家快速进入并深入Oracle知识的国度。   本书继续贯彻了作者“由点到线再及面”的学习方法,既可以让初学者参考学习,又可以帮助具备一定基础的中级DBA进行进阶学习,不同层次的学习者都能从本书的不同内容中受益。   本书结构   本书分为9章,具体结构划分如下。   ·第1章:数据库的启动和关闭,从基础入手,讲解Oracle数据库的启动和关闭,并深入探讨数据库启动关闭的核心本质及内部处理。   ·第2章:参数及参数文件,这一部分从Oracle启动必需的参数文件入手,讲解重要参数、参数文件对于Oracle的作用,并结合RAC环境,Oracle10g环境介绍参数文件等的不断改进和变迁。   ·第3章:数据字典,深入到数据库的核心,全面了解数据字典的机制和重要性。   ·第4章:内存管理,Oracle的内存管理非常重要,本章就SGA、PGA的管理进行探讨,并深入介绍Oracle内存管理技术在Oracle 8i/9i/10g不同版本中的变迁。   ·第5章:Buffer Cache与Shared Pool原理,本章深入介绍了Buffer Cache和Shared Pool的原理,并涉及闩锁和热点块等深入话题。   ·第6章:重做,重做机制是Oracle恢复的保障,本章针对Oracle的重做机制进行探讨,并涉及重做的内部原理及工作机制。   ·第7章:回滚与撤销,回滚和事务密切相关,本章从基础出发,介绍Oracle的回滚机制,进而深入研究和探讨回滚机制的内部操作及ORA-01555错误等相关知识。   ·第8章:等待事件,等待事件在数据库性能诊断中起着极为重要的作用,在不同版本中,Oracle一直在不断加强等待事件的功能,本章从等待事件入手,进一步讲解数据库性能诊断和优化知识。 .  ·第9章:性能诊断与SQL优化,这一章是实践的总结,通过一些实践的案例,介绍一种思路和方法给大家,解决问题是学习的最终目的。   本书的读者对象   本书适用于打算进入Oracle领域的初学者,也适用于具备一定数据库基础、打算深入学习Oracle技术的数据库从业人员,尤其适用于入门、进阶以及希望深入研究Oracle技术的数据库管理人员。   本书也可以作为各大中专院校相关专业的教学辅导和参考用书,或作为相关培训机构的培训教材。   本书约定   (1)为了给读者提供更多的学习资源,同时弥补本书篇幅有限的遗憾,本书提供了部分的参考链接,许多本书无法详细介绍的问题都可以通过这些链接找到答案。相关文档可以从作者的网站(www.eygle.com)上找到。   (2)本书所列出的插图、运行结果可能会与读者实际环境中的操作界面有所差别,这可能是由于操作系统平台、Oracle版本的不同而引起的,在此特别说明,一切以实际情况为准。   (3)广大读者如有好的建议,或在学习本书中遇到疑难问题,欢迎到作者网站(www.eygle.com)进行探讨,也可发电子邮件联系作者(eygle@eygle.com)或本书责任编辑(dujie@ptpress.com)。
pdf
发布资源于 8 年前

Oracle DBA手记3:数据库性能优化与内部原理解析--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle DBA手记3:数据库性能优化与内部原理解析 基本信息 作者: 盖国强    杨廷琨    冯春培    黄玮    姜龙    熊军    崔华    叶正盛    出版社:电子工业出版社 ISBN:9787121144790 上架时间:2011-9-29 出版日期:2011 年9月 开本:16开 页码:289 版次:1-1 编辑推荐    电信运营商DBA工作手记    DBA小故事之SQL诊断    Ora—60
pdf
发布资源于 8 年前

Oracle DBA手记2:数据库诊断案例与内部恢复实践--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle DBA手记2:数据库诊断案例与内部恢复实践 基本信息 作者: 盖国强    崔华    郭岳    晶晶小妹    怀晓明    梁敬彬    颜志芳    出版社:电子工业出版社 ISBN:9787121119460 上架时间:2010-11-12 出版日期:2010 年11月 开本:16开 页码:281 版次:1-1 编辑推荐    电信运营商DBA工作手记    DBA小故事之SQL诊断    Ora—600错
pdf
发布资源于 8 年前

Oracle DBA手记:数据库诊断案例与性能优化实践(一线Oracle DBA工作思考的心得,盖国强亲自策划)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle DBA手记:数据库诊断案例与性能优化实践(一线Oracle DBA工作思考的心得,盖国强亲自策划) 基本信息 作者: 《Oracle DBA手记》编委会    出版社:电子工业出版社 ISBN:9787121101397 上架时间:2010-1-19 出版日期:2010 年1月 开本:16开 页码:407 版次:1-1 编辑推荐    Oracle ACE总监、Oracle畅销书作者盖国强亲自策划    汇集五位一线
pdf
发布资源于 8 年前

Oracle优化日记:一个金牌DBA的故事(金牌DBA精彩纷呈的经历,86个优化技巧活学活用)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle优化日记:一个金牌DBA的故事(金牌DBA精彩纷呈的经历,86个优化技巧活学活用) 基本信息 作者: 白鳝 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115230713 上架时间:2010-7-1 出版日期:2010 年7月 开本:16开 页码:338 版次:1-1 编辑推荐   金牌DBA精彩纷呈的经历    86个优化技巧活学活用    培养多种能力,保障职场成功    恩墨科技创始人、Oracle ACE Director盖国强倾力推荐 内容简介    本书是一本介绍oracle数据库优化方法的书,以一个实际的大型优化项目为原型,用日记的形式记录了一个优化小组的dba 如何从纷繁的头绪中找到突破口,进而完成了一个看似不可能完成的任务的历程。在日记之间,作者还穿插了优化小技巧、每日点评等,总结了数据库优化常用的方法、工具和技巧。另外本书第一次详尽地披露了oracle数据库内部存储结构,并公布了部分代码,对于有兴趣研究数据库内部存储结构或者编写dul工具的读者有一定的参考价值。    本书适合oracle数据库管理开发人员阅读。 作译者   白鳝,本名徐戟,国内资深Oracle数据库优化专家,从事Oracle数据库应用开发、性能优化工作超过15年。曾供职于DEC、赛格集团、长天集团、联想集团等国内外知名企业,担任过应用体系总监、技术总监等高级技术职务。曾主持开发了国内第一套联机实时计费系统,国内第一套三检合一的检验检疫综合业务系统。1999年起致力于Oracle数据库性能优化等方面的研究,参与了大量性能优化项目,积累了许多实际工作案例。2008年起,在博客上连载《DBA日记》,希望将自己在Oracle数据库应用领域的10多年的经验与广大读者分享 关于本书和作者的更多信息,可以访http://www.oraclefans.cn. 目录 封面 -25 封底 -24 扉页 -23 版权 -22 给初学者的建议 -21 一名老DBA的成长之路 -18 目录 -3 5月11日 出发 1 今日点评 4 优化小技巧 性能优化项目 4 优化小技巧 优化常用知识1:诊断事件 6 5月12日 开始工作和CPU瓶颈 8 今日点评 11 优化小技巧 数据库优化的步骤 13 优化小技巧 按部就班是成功的关键 14 优化小技巧 优化常用知识2:常用诊断事件清单 15 5月13日 联席会议 20 今日点评 22 优化小技巧 优化流程 23 优化小技巧 转储文件内容1:数据文件 27 5月14日 聚会 28 优化小技巧 系统级优化 29 优化小技巧 转储文件内容2:转储对象的段头 30 5月15日 业务支撑系统出问题了 32 今日点评 34 优化小技巧 索引监控 35 优化小技巧 性能优化时常用的工具 35 优化小技巧 转储文件内容3:转储控制文件 38 5月18日 Top SQL 39 优化小技巧 查找Top SQL 41 优化小技巧 索引设计的一些建议 42 优化小技巧 什么是索引的集群因子 43 优化小技巧 转储文件内容4:转储控制文件 43 5月19日 南京的死锁问题 49 今日点评 52 优化小技巧 Oracle的死锁 53 优化小技巧 几个常用的与锁相关的脚本 54 5月20日 凌晨的邮件通知短信 61 今日点评 63 优化小技巧 10027/10028事件 63 优化小技巧 PL/SQL优化工具profiler 64 5月22日 ODS系统和RAC 65 优化小技巧 以开放的心态做服务 67 优化小技巧 全局热块冲突 68 优化小技巧 PL/SQL中数据类型的性能 68 5月23日 实时ODS 71 今日点评 73 优化小技巧 ODS系统中Oracle数据库设计管理要点 74 优化小技巧 ODS系统中的开发要点 75 优化小技巧 集合类型的效率 76 5月24日 任务提前 78 今日点评 80 优化小技巧 占位操作与开关操作 81 优化小技巧 优化计划调整 81 优化小技巧 自动段存储空间管理1 82 5月25日 倾斜的索引字段 83 优化小技巧 倾斜字段的处理 85 优化小技巧 自动段存储空间管理2 87 5月26日 优化方案 99 优化小技巧 优化中的排队效应 101 优化小技巧 DB Cache调整方案如何制订 102 优化小技巧 自动段存储空间管理3 103 5月27日 无奈 105 今日点评 107 优化小技巧 临时表空间和排序 107 优化小技巧 undo表空间和回滚段 108 5月28日 BBED的妙用 110 今日点评 113 优化小技巧 如何启用BBED 114 优化小技巧 模拟ORA-8102及处理过程 121 优化小技巧 如何计算数据块中某个字段的位置 122 优化小技巧 如何计算索引块中某个字段的位置 125 优化小技巧 自己动手写一个dul 126 优化小技巧 bootstrap$的访问 149 优化小技巧 unloadBlock函数 152 优化小技巧 unloadRow函数 154 5月29日 突破困局 159 优化小技巧 查找“热的”缓冲区的常用脚本 161 优化小技巧 什么时候需要使用多缓冲 163 优化小技巧 AIX操作系统优化要点 164 5月30日 账务处理 168 今日点评 170 优化小技巧 表访问的方式 171 5月31日 电脑坏了 174 今日点评 176 优化小技巧 通过OEM录像采集数据 177 优化小技巧 调整游标相关参数 178 6月1日 ORA-4030和内存泄漏 181 今日点评 184 优化小技巧 如何分析ORA-4030 184 6月2日 优化方案 187 今日点评 188 优化小技巧 一个提供参考的优化方案 189 优化小技巧 游标的共享 190 6月3日 拆分大型SQL 195 优化小技巧 拆分复杂SQL 197 6月4日 TNS-12535 199 今日点评 200 优化小技巧 防火墙和SQL*Net 200 优化小技巧 跟踪SQL*Net 201 6月5日 休息时总是最忙的 203 今日点评 205 优化小技巧 使用hanganalyze 205 优化小技巧 重做日志文件优化的要点 208 6月6日 实施优化 209 今日点评 211 优化小技巧 升级维护窗口的确定 212 优化小技巧 回退预案的作用 212 6月7日 突发事件 214 今日点评 216 优化小技巧 使用HINT优化SQL 216 6月10日 使用自动采样比例引发的故障 219 今日点评 221 优化小技巧 关于表分析比例的判定 221 优化小技巧 AIX下使用vmstat分析I/O问题的小技巧 222 6月11日 阶段总结 224 今日点评 225 优化小技巧 STATSPACK报告在优化项目中的作用 226 优化小技巧 STATSPACK报告头的解读 227 6月12日 阴谋 229 今日点评 231 优化小技巧 分析STATSPACK的负载数据 232 优化小技巧 重要的命中率指标 233 6月13日 演戏 235 今日点评 237 优化小技巧 Top 5事件 237 优化小技巧 常见事件清单 238 6月14日 转机 245 今日点评 249 优化小技巧 STATSPACK报告分析之DB Cache1 249 优化小技巧 STATSPACK报告分析之PGA 251 6月15日 青岛 256 今日点评 260 优化小技巧 如何优化闩锁 261 6月16日 SQL优化效果 264 今日点评 267 优化小技巧 如何转储数据块 268 优化小技巧 通过树转储来分析索引碎片 270 6月17日 完美的效果 279 今日点评 281 优化小技巧 I/O系统优化的经验与体会 281 优化小技巧 STATSPACK报告之I/O问题分析 285 6月18日 准备收工 287 优化小技巧 STATSPACK报告分析之DB Cache2 288 6月19日 ORA-1591 291 今日点评 294 6月20日 好奇心惹的祸 297 优化小技巧 STATSPACK报告分析之共享池分析 298 7月20日 重回沈阳 302 优化小技巧 如何评估优化效果 304 优化小技巧 STATSPACK报告分析之undo分析 306 优化小技巧 STATSPACK报告分析之锁分析 308 7月21日 课堂风波 314 优化小技巧 平均事务响应时间的计算 316 优化小技巧 STATSPACK报告分析之闩锁分析 317 7月22日 世博园一日游和心想事成 321 优化小技巧 STATSPACK报告分析之Top对象 323 优化小技巧 STATSPACK报告分析之Top SQL 326 7月23日 漫长的一夜 331 优化小技巧 本案例的启示 336 后记,也算结束语 337 媒体评论   “我知道很多DBA都有自己收藏的一本秘籍,包括处理各种Oracle问题的必杀术,其中关于性能调优的特别多。可惜这里面有很多道听途说的成分,或者知其然而不知其所以然。反观此书,有很多活学活用的例子;对于各种技巧的适用范围,也尽量阐述清楚。从最后成书的内容看,作者还是比较负责的。书中的指令,大都经过上机验证。”   ——Ben Wang,澳大利亚知名Oracle技术高手
pdf
发布资源于 8 年前

怎样成为明星DBA(揭开DBA的神秘面纱,传授职业成功之道)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 怎样成为明星DBA(揭开DBA的神秘面纱,传授职业成功之道) 基本信息 作者: (美)Thomas LaRock 译者: 傅尔也 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115241764 上架时间:2010-12-22 出版日期:2011 年1月 开本:32开 页码:213 版次:1-1 编辑推荐    揭开DBA的神秘面纱    传授职业成功之道    人人都有机会成为明星 内容简介    本书汇集了作者有关数据库管理的真知灼见,讲述了dba 的方方面面,有技术的,还有生活的。作者本人不仅专业技术过硬,还当过篮球教练,对人生,尤其是dba 的生存之道有很独到的领悟。书中语言浅显易懂,生动    幽默,还配有多个技术审稿人的精彩评注。这些评注与作者的文字相辅相成,和而不同,因此本书可谓是博采众家之长,绝对值得一读。    本书为dba 量身订做。如果你是dba,那么一定不可错过;如果你有意成为dba,或者想了解dba 的生存之道,本书同样适合你。 作译者   Thomas LaRock IT资深人士,有着十多年的技术和管理经验,目前在一家金融服务公司任数据库管理经理。此前,他做过程序员和分析师,先后在几家大型软件咨询公司工作过。Thomas拥有华盛顿州立大学的数学硕士学位,作为一名SQL Server MVP,他受聘为Quest Software公司SQL Server专家委员会的成员、SQL Server专业协会(PASS)的理事会成员。 目录 封面 -20 封底 -19 扉页 -18 版权 -17 版权声明 -16 推荐序一 -15 推荐序二 -12 引言 -11 技术审稿人简介 -9 目录 -7 第1章 我是怎样做到的 1 1.1 我的经历 2 1.1.1 早期的学习过程 2 1.1.2 早期的职业生涯 3 1.1.3 运气、准备和机会 5 1.1.4 社区 6 1.2 别人的经历 7 1.2.1 药剂师 7 1.2.2 酒店经理 8 1.2.3 估算总监 8 1.2.4 MUMPS程序员 8 1.3 你的经历 9 1.3.1 做好准备 10 1.3.2 参加培训 12 1.3.3 获得认证 13 1.3.4 现在去碰碰运气吧 14 1.4 保持专注 14 第2章 我要做点什么 16 2.1 你和总统的共同之处 16 2.2 你的初始清单 17 2.2.1 拟一份服务器清单 20 2.2.2 检查数据库备份 22 2.2.3 验证你能否还原数据 22 2.2.4 拟定客户名单 23 2.2.5 列出那些“最重要的”数据库 24 2.2.6 列出即将开始的项目和可交付的内容 25 2.2.7 构建环境基准 26 2.2.8 制定恢复计划 27 2.3 信息都收集到了,现在该做什么 28 2.3.1 约见经理 28 2.3.2 约见开发人员 29 2.3.3 约见服务器管理员 30 2.3.4 约见客户 31 2.4 那条警告严重吗 32 2.5 我该不该检查一下那条警告 34 2.5.1 检查警告系统 35 2.5.2 问问开发人员 35 2.5.3 问问服务器管理员 36 2.5.4 问问客户 36 2.6 一起吃个午饭怎样 36 2.6.1 “饭桌外交” 37 2.6.2 不要拉帮结派 38 2.6.3 外向一些 38 2.6.4 尊重个性 39 2.6.5 照顾好自己 39 2.6.6 为人坦诚 40 2.6.7 加入某些组织 40 2.6.8 尊重个性 41 2.7 记录你的进展 42 2.8 主动一些 43 第3章 基础知识 46 3.1 RAID简介 47 3.1.1 RAID为何如此重要 47 3.1.2 用来提升性能的RAID 49 3.1.3 用来提供容错性的RAID 50 3.1.4 你想要哪种RAID级别 54 3.1.5 你的需求 54 3.2 DBA要了解的SAN基础知识 55 3.2.1 为什么RAID 5就够用了 57 3.2.2 失传的基准测试技术 57 3.2.3 都是磁盘锭的事 59 3.3 高可用性选择 60 3.3.1 群集化 61 3.3.2 日志传送 63 3.3.3 复制 65 3.3.4 数据库镜像 67 3.4 灾难恢复计划 69 3.4.1 DR测试 71 3.4.2 卡耐基音乐厅 71 3.5 网络就像浴室那样 72 3.5.1 快叫管道工 73 3.5.2 马上修好 74 3.6 DBA代表什么 75 3.6.1 人们会抗拒改变 76 3.6.2 拥有标准和工序不是件坏事 78 3.6.3 人们会责怪他们不了解的事物 79 3.7 责怪还是赞扬 81 3.8 需要把事做对,还是受人喜爱 82 第4章 开发服务器就是开发人员的生产服务器 84 4.1 为什么开发人员如此穷困 85 4.1.1 顶着压力 85 4.1.2 业务需求 87 4.1.3 SQL知识 88 4.2 服务级别协议 90 4.2.1 当个好客户 91 4.2.2 沟通是关键 91 4.3 处理期望 94 4.3.1 没人会在乎努力的 95 4.3.2 让我们谈谈吧 95 4.3.3 尽早参与其中 96 4.3.4 沟通你的行动 97 4.3.5 你做得不够快 98 4.3.6 你做错了 98 4.3.7 反应迅速,认真负责 99 4.4 时间管理 100 4.4.1 制定常规 101 4.4.2 减压 102 4.4.3 待办事项清单 103 4.4.4 分块进行 104 4.4.5 知道何时说不 104 4.5 克里斯•汉森和代码审查 105 第5章 生产支持 108 5.1 服务级别协议 110 5.1.1 我以为我们有协议啊 110 5.1.2 了解你该做什么 111 5.1.3 以礼待人 113 5.2 建立支持流程 113 5.2.1 定义流程 114 5.2.2 公布流程 116 5.2.3 提醒和强制执行 116 5.3 工作和生活的平衡 117 5.3.1 沟通 118 5.3.2 保障自己的私人时间 119 5.3.3 快乐休闲时光 119 5.4 外包 120 5.4.1 工作质量 121 5.4.2 语言障碍 122 5.4.3 安全问题 124 5.4.4 饭碗安全 124 5.4.5 各种优点 126 第6章 基本的故障检修 127 6.1 CSI:SQL 128 6.1.1 事故 129 6.1.2 询问 129 6.1.3 监控 130 6.2 常见瓶颈 131 6.2.1 磁盘 132 6.2.2 内存 133 6.2.3 CPU 133 6.3 可用的工具 134 6.3.1 可靠性和性能监视器 135 6.3.2 活动监视器 139 6.3.3 动态管理视图 140 6.3.4 等待统计信息 144 6.3.5 SQL事件探查器 146 6.3.6 网站 151 第7章 该吃点什么 154 7.1 食物也能成瘾 155 7.1.1 情绪化进食 156 7.1.2 无意识进食 157 7.1.3 克服坏习惯 158 7.2 社交聚会 159 7.2.1 早餐 160 7.2.2 午餐 162 7.2.3 消遣 163 7.2.4 出差 164 7.3 锻炼 165 7.3.1 多走几步 166 7.3.2 定期锻炼的需要 167 7.3.3 睡眠 168 7.3.4 热量 169 7.4 生活很美好,但加点培根就更美好了 170 第8章 培训,为你加点料 173 8.1 培训的理由 174 8.1.1 专业发展 175 8.1.2 改变角色 176 8.1.3 引领新系统 176 8.1.4 客户满意度 176 8.2 员工得到的好处 177 8.2.1 工作满意度 177 8.2.2 工作动力 178 8.2.3 处理效率 178 8.2.4 时间管理 178 8.2.5 沟通技能 179 8.3 企业得到的好处 179 8.3.1 提升士气 180 8.3.2 减少人员更替 180 8.3.3 减少风险 180 8.3.4 保持竞争力 181 8.4 培训资源 181 8.4.1 网站 182 8.4.2 自我训练 182 8.4.3 做志愿者 183 8.4.4 在职培训 184 8.4.5 专业协会 184 8.4.6 继续教育 185 8.4.7 课堂培训 185 8.4.8 认证 186 8.5 制定你的培训计划 186 8.5.1 确定培训需求 187 8.5.2 确定需要培训的人数 188 8.5.3 确定选择哪些培训资源 188 8.5.4 计算相关成本/支出 189 8.5.5 确定培训带来的好处 189 8.5.6 确定节省的成本 190 8.5.7 衡量结果 191 第9章 联系、学习、分享 192 9.1 沟通 193 9.1.1 读点什么 194 9.1.2 参加点什么 195 9.1.3 写点什么 196 9.1.4 说点什么 198 9.2 专业协会 200 9.2.1 最新业内信息 202 9.2.2 写作的机会 202 9.2.3 演讲的机会 203 9.2.4 人际关系网 203 9.3 人际关系网基础知识 204 9.3.1 构建人际关系网 204 9.3.2 心情舒畅 206 9.3.3 如何接近他人 206 9.3.4 选择合适的场合 208 9.3.5 再简单些 209 第10章 总结 210 10.1 成为DBA 211 10.2 做DBA 211 10.3 做好DBA 212 前言   恭喜你!你已经接受DBA的职位了。什么?哦,有人让你去做新的DBA?没关系,我敢保证你是优中选优再优中选优的那个。现在你拥有这份工作了,那么接下来该怎么办呢?你的行动计划是怎样的?你首先该关注什么?你应该找谁做朋友,并且得尽快?你将会多领多少薪水?   首先,让我们开门见山地说一些基本知识吧。你不是无所不知的。很遗憾告诉你这个,不过现在明白总比以后明白要好。相信我,没人是无所不知的,这是有关人类的一个不争的事实。你应该不是非人类吧?因为总有人时不时地跳出来质疑这个简单的事实,所以你最好还是再检验一下以确认这个事实吧。你应该不希望发现自己其实是个Cylon人 或者什么更糟的东西吧。   你还需要知道,作为DBA,你的朋友会越来越少。现在看来这也未必是件坏事。看,你现在身处一个责任重大的位置,承担这些责任的你需要做出各种决定,而这些决定并不总是受人欢迎的。因此,你可能在工作中失去一些朋友,不过这种损失可以通过你在整个DBA社区中所得到的弥补回来。所以你其实是有了更多有利条件。   当你承担了那些责任之后,你还会发现对你工作的责怪开始多于对你工作的信任了。我向你保证,没有人会一大早就站在你办公桌边上,然后感谢你昨晚让一切运转正常。不过你最好能相信,如果你的批量载入比预期多花了5分钟,那么就可能会有4个人跑来问你:“这到底是怎么回事啊?”   尽管DBA工作不总是顺风顺水,万事如意,不过它可能是摆在你面前的最有价值的一条职业道路。问问别人,你就会发现大多数老板都会珍惜手里所拥有的优秀DBA。我谨希望这本书能为你提供一些必需的工具,让你成为这样一个不可或缺的明星DBA。   致谢   正是因为有了很多人的帮助,我才能写成这本书。书中所包含的文字描述了过去10年中我的经历。不过很多人对我的影响由来已久。   感谢我亲爱的妻子Suzanne,谢谢你的关爱与耐心。   感谢我可爱的孩子Isabelle和Elliot,谢谢你们总能逗我开心。   感谢我敬爱的父母,谢谢你们所赋予我的一切。   感谢Chris和Sally,谢谢你们帮我走上DBA这条路。   感谢Vinny和Craig,谢谢你们相信我能成为一个DBA。   感谢Frank,谢谢你帮助我理解了DBA的含义。   感谢Lori、Sean、Joe、Andre和Pankaj,你们真是一个优秀的团队。   感谢技术编辑们,谢谢你们不厌其烦地推敲我的语言并让我坚持到底。   感谢Jonathan编辑,谢谢你对这本书的信任。    序言   推 荐 序 一   你手中的这本书汇集了有关数据库管理的真知灼见,它们得之不易,无不经过多年的反复实践、彻夜钻研,或由业内最优秀的数据库专业人士和IT专家亲自传授的。   想想大学里我们这个学科的标准人才培养模式吧。很多学院和大学都设置了“计算机科学”专业,鼓励学生们去拥抱“软件工程”这个金饭碗。不过,随便哪个在计算机界摸爬滚打很长时间的人都会告诉你,这是一种误导。毕竟科学是构建在科学方法之上的,你需要描述出观测和实验的性质,提出假设,进行逻辑推理,并通过一次或多次实验来验证提出的假设和之前的推理过程。这听起来像是那些IT人员和程序员干的事儿吗?不只是“不”,简直是“一点儿也不”。尽管有些计算机技术人员会进行实验(通常是在处理器设计、网络技术设计、安全和加密算法以及某些基础软件技术平台领域),不过这些人可能只是全世界IT人员中凤毛麟角的一部分(大约是0.02%),而且通常还需要博士学位才做得了。   让我们更进一步来看看术语“软件工程师”。虽然要把“工程师”这个术语的含义完完全全说清楚需要不少篇幅,但这个词暗示着将自然科学和数学的知识应用到解决问题的过程中,以期能对操作和输出的预期结果进行可靠的预估。工程师们会很严肃认真地对待工作,把自己的信誉建立在产品的设计上,要让这些设计能够满足预期而且不会对大众造成意外危害。这听起来像你做的工作吗?这听起来像是你所了解的IT人士的工作吗?   这至少不是我所了解的IT专业人员之所为。尽管IT专业人员近年来实现了很大的跨越,而且在产出预期成果和减少意外后果方面取得了重大进展,不过我们还是得忍受着日常的修补程序、软件补丁和数不清的中断,这让我们很难把计算机编程或IT与科学和工程联系在一起。   我在这里会提出有关职业道路选择的另一种看法。当我们环顾人们所从事的各项行业时,总能看到很多职业和学科与我们作为IT专业人员(或者希望成为IT专业人员的人)的经历非常类似。不过最接近的类比并非在计算机领域,而是在艺术创作方面。不信?我来分析一下。工程师和科学家需要完整深入地理解他们学科的各种细枝末节。我的一个好朋友是为NASA工作的火箭科学家,他就像一部计量学(用于火箭结构)和化学(用于火箭燃料)百科全书。不过我们IT专业人员不需要这样。DBA很少需要详尽了解在缓冲区和数据库平台的系统RAM间交换数据的散列算法,就像雕刻家不需要深入了解大理石和石英的分子晶体结构那样,又像音乐家不需要深入了解共鸣的声学原理那样。难道会有个音乐家拉你坐下谈论湿度和海拔对他们下一次演出可能造成的影响吗?(这么说可算不上讽刺,因为很多IT专业人员也是业余乐师。)   音乐家们需要了解的东西很多,绝非声学原理;雕刻家们需要了解的知识也有很多,而不是地质学。进行艺术创作的人们都算得上是制造者,而选择了DBA之路的你其实也算一个。我们从制造者身上所能学到的最重要的内容就是他们会通过两种途径获得最好的学习。首先,制作者们会通过不断的练习和亲自动手实践来学习。想要在数据库管理领域做好,你也要这么做。在你脑海中想象“发明家”的形象时,通常可能会浮现出一个头发凌乱、身着白大褂、待在乱糟糟的实验室里的人。猜猜看我想说什么?我所认识的优秀DBA们其实也有实验室,不过这通常被他们称为开发环境。这就是他们需要定期修补、试验和测试的地方。   我所要做的第二项比较,也是最重要的比较,就是和其他制造者一样,我们也至少需要一位良师益友来为我们的职业生涯指明方向。每个制造者的教育过程都包含在行业最底层的数年锻炼,不管是艺术家、音乐家还是DBA。这就是这本书的意义所在。你可能没有一位高级DBA来给你建议和鼓舞,不过你在这本书中可以找到这样一个角色来指导你。快速浏览一下这本书的目录,你会发现,为初入DBA这行的人所设置的多数基础课程都是在介绍你该如何与企业IT环境中的其他同事进行交流。是的,了解这项技术是非常重要的,通过阅读本书并结合实际,你会学到很多东西的。不过你还需要了解DBA、软件开发人员和公司经理之间的相互关系,什么时候该谨小慎微,什么时候该不留情面。   当然,像MS SQL Server数据库管理这样一个兼具广度和深度的主题,没有哪本书能涵盖你所需要了解的所有知识。所以Thomas不得已在本书中只能向你传授一些入门知识。而他也提供了方便你进一步学习的资源,寻找引路人的方法,以及让你自己成为引路人的方法。希望你能在这本佳作中获得最多的收获,还希望你在自己学好这些内容的基础上,也能为SQL Server社区回馈自己的一份力量。   Kevin Kline   Quest软件公司技术战略经理   SQL Server专业协会创始人之一      推 荐 序 二   毫不夸张地说,你手里拿的这本书能帮你理解DBA的日常生活。从你如何成为DBA,到数据库备份与恢复,再到吃培根的乐趣,应有尽有。(我解释一下最后那句话,Thomas喜欢吃培根,非常喜欢。他觉得干什么都离不开培根,所以在他写的书里总是会一再提到培根就不足为奇了。)   除了和培根有关的内容之外,Thomas还着力介绍了他自己管理数据库系统的实际经验。你将学会如何与开发团队共事,怎样不惧怕外包。你还会学到该如何维护生产系统,以及怎样将生产系统监视在可控状态下。Thomas甚至解释了该如何利用SQL Server社区来为你提供帮助,以及你该如何回报社区成员。   所以如果你有那么一两晚空闲,而且你又想成为一个DBA,那么欢迎你打开这本书。这本书棒极了。   Buck Woody   微软高级技术专家    媒体评论   “我对DBA这个职业很感兴趣,虽然自学了一些SQL Server方面的知识,但一直没有找到合适的入门书,在IT论坛上发现很多人和我一样为此困惑。终于我看到了LaRock先生的这本书。它很适合我这样的DBA新手,不但介绍了生产系统维护等专业知识,还给出了很多职场的生存之道。我相信,这本书会帮助很多像我这样的人成为明星DBA!”   ——亚马逊读者评论
pdf
发布资源于 8 年前

深入解析SQL Server 2008(微软SQL Server开发团队必读之作)--随书源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《深入解析SQL Server 2008》的随书源代码 对应的书籍资料见: 深入解析SQL Server 2008(微软SQL Server开发团队必读之作) 基本信息 原书名: Microsoft SQL Server 2008 Internals 原出版社: Microsoft Press 作者: (美)Kalen Delaney    Paul S. Randal    Kimberly L. Tripp    Con
zip
发布资源于 8 年前

深入解析SQL Server 2008(微软SQL Server开发团队必读之作)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 深入解析SQL Server 2008(微软SQL Server开发团队必读之作) 基本信息 原书名: Microsoft SQL Server 2008 Internals 原出版社: Microsoft Press 作者: (美)Kalen Delaney    Paul S. Randal    Kimberly L. Tripp    Conor Cunningham    Adam Machanic 译者: 陈宝国 李光杰 薛赛男 出版社:人民邮电出版社 ISBN:9787115230799 上架时间:2010-7-16 出版日期:2010 年7月 开本:16开 页码:548 版次:1-1 编辑推荐    由知识丰富的资深专家和数位具有多年产品使用经验的讲师联手打造    深层次展示核心引擎的功能及其工作原理、深度揭示SQL Server的内部工作原理    书中大量截图,帮助新用户以及中级用户快速学习使用产品 内容简介    本书全面探讨了sql server 2008的内部工作原理。全书共分为11章,首先在第1章中详细介绍了sql server 2008的架构和配置,然后在接下来的10个章节中深入探讨了sql server 2008数据存储和查询处理等各个方面的内部机制,包括:数据库和数据库文件、表、索引、跟踪、日志记录和恢复、特殊存储、查询优化、计划缓存和重新编译、事务和并发、dbcc等。本书还有一个网站,上面有本书额外的第12章“查询执行”、本书的所有代码及其他工具和脚本。    本书由知识丰富的资深专家和数位具有多年产品使用经验的讲师联手打造,是一本关于sql server工作原理的权威参考指南,不管您是数据库开发人员、架构师,还是数据库管理员,都可以从阅读本书中获益。    深层次展示核心引擎的功能及其工作原理    借助著名内部专家小组的指导,深入探究核心sql server引擎,并把这些知识运用在实际工作中、无论您是数据库开发人员、架构师,还是管理员,都能获得利用关键架构变更所需的深层知识,并挖掘产品的全部潜力。    深度揭示sql server的内部工作原理:    当sql server编译、扩展、压缩和移动数据库时,内部在进行什么操作    如何使用事件跟踪——从触发器到扩展事件引擎    为什么合适的索引能大大减少查询执行时间    如何用新的存储能力超越正常的行数限制    查询优化器是如何运行的    为有问题的查询计划排除故障的多种技术    何时强制sql server重用或创建新的缓存查询计划    运行dbcc时,sqlserver在内部检查什么    处理多个并发用户时,如何在5个隔离级别和2个并发模型中做出选择 作译者   Kalen Delanev自1993年起就是微软SQL Server的MVP,她为全世界的客户提供高级SQL Server培训、她是《SQL Server Magazine》的特约编辑和专栏作家,也是几本读者推崇的书籍的作者,包括《Inside Microsoft SQL Server 2005:The Storage Engine》和《Inside Microson SQL Server 2005:Query Tuning and Optimization》。   Paul S.Randal微软MVP、培训师和TechNet Magazine的特约编辑。Kimberly L.Tripp是微软MVP、培训师和《SQL Server Magazine》的特约编辑。   Conor Cunninqham微软SQL Server Core Engine团队的首席架构师.   Adam Machanic MCITP、微软MVP、讲师,几本SQL Server书籍的合著者.   Ben Nevarez从6.45版本开始使用SQL Server,是高级数据库管理员. 目录 封面 -20 封底 -19 扉页 -18 版权 -17 内容提要 -16 序 -14 前言 -13 致谢 -11 关于作者 -8 目录 -6 第1章 SQL Server 2008架构和配置 1 1.1 SQL Server版本 1 1.2 SQL Server元数据 2 1.2.1 兼容性视图 2 1.2.2 目录视图 3 1.2.3 其他元数据 4 1.3 SQL Server引擎组件 6 1.3.1 观察引擎行为 7 1.3.2 协议 8 1.3.3 关系引擎 9 1.3.4 存储引擎 10 1.4 SQLOS 13 1.5 计划程序 14 1.5.1 SQL Server工作线程 15 1.5.2 将计划程序绑定到CPU中 17 1.5.3 专用管理员连接(DAC) 20 1.6 内存 21 1.6.1 缓冲池与数据缓存 21 1.6.2 访问内存中的数据页 21 1.6.3 管理数据缓存中的页面 22 1.6.4 可用缓冲区列表和惰性编写器 22 1.6.5 检查点 23 1.6.6 管理其他缓存中的内存 24 1.6.7 调节内存大小 25 1.6.8 调节缓冲池大小 26 1.7 服务器资源调控器 30 1.7.1 资源调控器概述 30 1.7.2 资源调控器控制 37 1.7.3 资源调控器元数据 38 1.8 SQL Server 2008配置 39 1.8.1 使用SQL Server配置管理器 39 1.8.2 配置网络协议 39 1.8.3 默认的网络配置 39 1.8.4 管理服务 40 1.9 SQL Server系统配置 41 1.9.1 操作系统配置 41 1.9.2 跟踪标记 43 1.10 服务器配置设置 43 1.11 小结 52 第2章 更改跟踪、跟踪和扩展事件 53 2.1 基础知识:触发器和事件通知 53 2.1.1 运行时触发器行为 53 2.2 更改跟踪 54 2.2.1 更改跟踪配置 54 2.2.2 更改跟踪的运行时行为 57 2.3 跟踪和事件探查 60 2.3.1 SQL跟踪架构和术语 61 2.3.2 安全性和权限 62 2.3.3 Profiler入门 63 2.3.4 服务器端跟踪和收集 70 2.4 扩展事件 78 2.4.1 XE体系结构的组件 79 2.4.2 事件会话 86 2.4.3 扩展事件DDL和查询 88 2.5 小结 91 第3章 数据库和数据库文件 92 3.1 系统数据库 92 3.1.1 master 93 3.1.2 model 93 3.1.3 tempdb 93 3.1.4 资源数据库 93 3.1.5 msdb 94 3.2 样例数据库 94 3.2.1 AdventureWorks 94 3.2.2 pubs 95 3.2.3 Northwind 95 3.3 数据库文件 95 3.4 创建数据库 97 3.4.1 CREATE DATABASE例子 99 3.5 扩展或收缩数据库 99 3.5.1 自动文件扩展 100 3.5.2 手动文件扩展 100 3.5.3 快速文件初始化 100 3.5.4 自动收缩性 100 3.5.5 手动收缩 101 3.6 使用数据库文件组 102 3.6.1 默认文件组 102 3.6.2 FILEGROUP CREATION例子 103 3.6.3 文件流文件组 104 3.7 修改数据库 105 3.7.1 ALTER DATABASE例子 106 3.8 数据库剖析 107 3.8.1 空间分配 107 3.9 设置数据库选项 110 3.9.1 状态选项 112 3.9.2 游标选项 114 3.9.3 自动选项 115 3.9.4 SQL选项 115 3.9.5 数据库恢复选项 116 3.9.6 其他数据库选项 117 3.10 数据库快照 117 3.10.1 创建数据库快照 118 3.10.2 数据库快照使用的空间 119 3.10.3 管理快照 120 3.11 tempdb数据库 121 3.11.1 tempdb中的对象 121 3.11.2 tempdb中的优化 122 3.11.3 最佳实践 123 3.11.4 tempdb空间监视 124 3.12 数据库安全性 124 3.12.1 数据库访问 125 3.12.2 管理数据库安全性 126 3.12.3 数据与架构 127 3.12.4 主体与架构 127 3.12.5 默认架构 128 3.13 移动或复制数据库 128 3.13.1 分离和重新附加数据库 128 3.13.2 备份和还原数据库 130 3.13.3 移动系统数据库 130 3.13.4 移动master数据库 131 3.14 兼容性级别 131 3.15 小结 132 第4章 日志记录和恢复 133 4.1 事务日志基础 133 4.1.1 恢复阶段 134 4.1.2 读日志 137 4.2 更改日志大小 137 4.2.1 虚拟日志文件 137 4.2.2 观察虚拟日志文件 138 4.2.3 自动截断虚拟日志文件 141 4.2.4 维护可恢复日志 142 4.2.5 自动压缩日志 144 4.2.6 日志文件大小 145 4.3 备份和还原数据库 145 4.3.1 备份类型 145 4.3.2 恢复模型 146 4.3.3 选择备份类型 149 4.3.4 还原数据库 150 4.4 小结 154 第5章 表 155 5.1 创建表 155 5.1.1 命名表和列 156 5.1.2 保留关键字 157 5.1.3 分隔标识符 157 5.1.4 命名约定 158 5.1.5 数据类型 158 5.1.6 关于NULL 178 5.2 用户定义数据类型 180 5.3 IDENTITY属性 181 5.4 内部存储 184 5.4.1 sys.indexes目录视图 185 5.4.2 数据存储元数据 186 5.4.3 数据页 189 5.4.4 检查数据页 190 5.4.5 数据行的结构 193 5.4.6 查找一个物理页面 195 5.4.7 固定长度行的存储 197 5.4.8 可变长度行的存储 199 5.4.9 日期和时间数据的存储 204 5.4.10 sql_variant数据的存储 206 5.5 约束 209 5.5.1 约束名称和目录视图信息 210 5.5.2 视图和多行数据修改中出现的约束故障 211 5.6 修改表 212 5.6.1 更改数据类型 212 5.6.2 添加一个新列 213 5.6.3 添加、删除、禁用或启用约束 213 5.6.4 删除列 214 5.6.5 启用或禁用一个触发器 215 5.6.6 修改表的内部 215 5.7 堆修改内部 217 5.7.1 分配结构 217 5.7.2 插入行 218 5.7.3 删除行 219 5.7.4 更新行 221 5.8 小结 224 第6章 索引:内部和管理 225 6.1 概述 225 6.1.1 SQL Server索引B树 226 6.2 分析索引的工具 228 6.2.1 使用dm_db_index_physical_stats动态管理视图 228 6.2.2 使用DBCC ID 231 6.3 理解索引结构 233 6.3.1 聚集键的依赖关系 234 6.3.2 非聚集索引 236 6.3.3 约束和索引 236 6.4 索引创建选项 237 6.4.1 IGNORE_DUP_KEY 238 6.4.2 STATISTICS_NORECOM PUTE 238 6.4.3 MAXDOP 238 6.4.4 索引放置 238 6.4.5 约束和索引 239 6.5 物理索引结构 239 6.5.1 索引行格式 239 6.5.2 聚集索引结构 240 6.5.3 聚集索引的非叶级 241 6.5.4 分析聚集索引结构 241 6.5.5 非聚集索引结构 246 6.6 特殊索引结构 255 6.6.1 计算列上的索引和索引视图 255 6.6.2 全文索引 262 6.6.3 空间索引 262 6.6.4 XML索引 262 6.7 数据修改的内部 263 6.7.1 插入行 263 6.7.2 拆分页 264 6.7.3 删除行 267 6.7.4 更新行 272 6.7.5 表级数据修改与索引级数据修改 275 6.7.6 日志记录 276 6.7.7 锁定 276 6.7.8 碎片 276 6.8 管理索引结构 277 6.8.1 删除索引 277 6.8.2 ALTER INDEX 278 6.8.3 检测碎片 279 6.8.4 删除碎片 280 6.8.5 重建索引 282 6.9 小结 284 第7章 特殊存储 285 7.1 大型对象存储 285 7.1.1 长度受限的大型对象数据(行溢出数据) 285 7.1.2 不限长度大型对象数据 289 7.1.3 最大长度数据的存储 294 7.2 文件流数据 295 7.2.1 为SQL Server启用文件流数据 295 7.2.2 创建一个启用文件流的数据库 296 7.2.3 创建一张表存储文件流数据 297 7.2.4 操纵文件流数据 298 7.2.5 文件流数据的元数据 302 7.2.6 文件流数据性能方面的考虑 304 7.3 稀疏列 305 7.3.1 稀疏列的管理 305 7.3.2 列集和稀疏列操作 307 7.3.3 物理存储 309 7.3.4 元数据 311 7.3.5 利用稀疏列节省存储空间 312 7.4 数据压缩 315 7.4.1 Vardecimal 315 7.4.2 行压缩 315 7.4.3 页压缩 322 7.5 表和索引分区 329 7.5.1 分区函数和分区方案 330 7.5.2 分区的元数据 331 7.5.3 分区的滑动窗口优势 334 7.6 小结 336 第8章 查询优化器 337 8.1 概述 337 8.1.1 树格式 337 8.2 什么是优化 338 8.3 查询优化器如何研究查询计划 339 8.3.1 规则 339 8.3.2 属性 339 8.3.3 替代项的存储——“备注” 341 8.3.4 运算符 341 8.4 优化器架构 346 8.4.1 优化之前 347 8.4.2 简化 347 8.4.3 琐碎计划/自动参数化 347 8.4.4 限制 348 8.4.5 备注——有效地探索多项计划 349 8.5 统计信息、基数估计和开销 350 8.5.1 统计信息设计 351 8.5.2 密度/频度信息 353 8.5.3 筛选的统计信息 355 8.5.4 字符串统计信息 356 8.5.5 基数估计细节 356 8.5.6 限制 359 8.5.7 成本计算 360 8.6 索引选择 361 8.6.1 筛选索引 363 8.6.2 索引视图 365 8.7 分区表 369 8.7.1 分区对齐索引视图 372 8.8 数据仓库 372 8.9 更新 372 8.9.1 Halloween保护 375 8.9.2 拆分/排序/折叠 375 8.9.3 合并 377 8.9.4 大范围更新计划 379 8.9.5 稀疏列更新 381 8.9.6 分区更新 381 8.9.7 锁定 384 8.10 分布式查询 385 8.11 扩展的索引 387 8.11.1 全文索引 387 8.11.2 XML索引 387 8.11.3 空间索引 388 8.12 计划提示 389 8.12.1 调试计划问题 389 8.12.2 {HASH|ORDER}GROUP 391 8.12.3 {MERGE|HASH|CONCAT}UNION 391 8.12.4 FORCE ORDER, {LOOP | MERGE | HASH } JOIN 391 8.12.5 INDEX=indexname | indexid 392 8.12.6 FORCESEEK 392 8.12.7 FAST number_rows 393 8.12.8 MAXDOP N 393 8.12.9 OPTIMIZE FOR 393 8.12.10 PARAMETRIZATION {SIMPLE|FORCED} 395 8.12.11 NOEXPAND 395 8.12.12 USE PLAN 395 8.13 小结 397 第9章 计划缓存和重新编译 398 9.1 计划缓存 398 9.1.1 计划缓存元数据 398 9.1.2 清除计划缓存 399 9.2 缓存机制 399 9.2.1 即席查询缓存 400 9.2.2 即席工作负荷优化 402 9.2.3 简单参数化 404 9.2.4 已准备查询 408 9.2.5 已编译对象 410 9.2.6 重新编译的原因 412 9.3 计划缓存内部 420 9.3.1 缓存存储 420 9.3.2 编译计划 421 9.3.3 执行上下文 422 9.3.4 计划缓存元数据 422 9.3.5 句柄 422 9.3.6 sys.dm_exec_sql_text 423 9.3.7 sys.dm_exec_query_plan 424 9.3.8 sys.dm_exec_text_query_plan 424 9.3.9 sys.dm_exec_cached_plans 425 9.3.10 sys.dm_exec_cached_plan_dependent_objects 425 9.3.11 sys.dm_exec_requests 425 9.3.12 sys.dm_exex_query_stats 426 9.3.13 缓存大小管理 426 9.3.14 缓存项的成本 429 9.4 计划缓存中的对象:概况 429 9.5 缓存中的多个计划 431 9.6 何时使用存储过程和其他缓存机制 432 9.7 计划缓存问题故障排除 432 9.7.1 等待统计信息表明存在计划缓存问题 432 9.7.2 其他缓存问题 434 9.7.3 处理编译和重新编译问题 434 9.7.4 计划指南和优化提示 435 9.8 小结 444 第10章 事务和并发性 445 10.1 并发模型 445 10.1.1 悲观并发 445 10.1.2 乐观并发 445 10.2 事务处理 446 10.2.1 ACID属性 446 10.2.2 事务依赖性 447 10.2.3 隔离级别 448 10.3 锁定 451 10.3.1 锁定基础 451 10.3.2 旋转锁 452 10.3.3 用户数据的锁类型 452 10.3.4 锁模式 452 10.3.5 锁粒度 455 10.3.6 锁的持续时间 460 10.3.7 锁的所有权 460 10.3.8 查看锁 461 10.3.9 锁定示例 463 10.4 锁兼容性 468 10.5 锁定内部架构 469 10.5.1 锁分区 470 10.5.2 锁块 471 10.5.3 锁所有者块 472 10.5.4 syslockinfo表 472 10.6 行级别锁与页级别锁 475 10.6.1 锁升级 475 10.6.2 死锁 477 10.7 行版本控制 480 10.7.1 行版本控制概述 480 10.7.2 行版本控制细节 481 10.7.3 基于快照的隔离级别 481 10.7.4 选择并发模型 496 10.8 控制锁定 497 10.8.1 锁提示 497 10.8.2 设置锁超时 499 10.9 小结 500 第11章 DBCC揭秘 501 11.1 获得数据库的一致性视图 502 11.1.1 获得一致性视图 502 11.2 有效地处理数据库 504 11.2.1 事实生成 505 11.2.2 使用查询处理器 506 11.2.3 批处理 508 11.2.4 读取要处理的页 509 11.2.5 并行性 509 11.3 早期的系统目录一致性检查 511 11.4 分配一致性检查 512 11.4.1 收集分配事实 512 11.4.2 检查分配事实 513 11.5 按表进行逻辑一致性检查 514 11.5.1 元数据一致性检查 515 11.5.2 页审核 516 11.5.3 数据和索引页处理 518 11.5.4 列处理 519 11.5.5 文本页处理 522 11.5.6 跨页一致性检查 523 11.6 跨表一致性检查 532 11.6.1 Service Broker一致性检查 532 11.6.2 跨目录一致性检查 533 11.6.3 索引视图一致性检查 533 11.6.4 XML索引一致性检查 534 11.6.5 空间索引一致性检查 534 11.7 DBCC CHECKDB输出 535 11.7.1 标准输出 535 11.7.2 SQL Server错误日志输出 537 11.7.3 应用程序事件日志输出 538 11.7.4 进度报告输出 538 11.8 DBCC CHECKDB选项 539 11.8.1 NOINDEX 540 11.8.2 修复选项 540 11.8.3 ALL_ERRORMSGS 540 11.8.4 EXTENDED_LOGICAL_CHECKS 541 11.8.5 NO_INFOMSGS 541 11.8.6 TABLOCK 541 11.8.7 ESTIMATEONLY 541 11.8.8 PHYSICAL_ONLY 542 11.8.9 DATA_PURITY 542 11.9 数据库修复 542 11.9.1 修复机制 543 11.9.2 紧急模式修复 544 11.9.3 哪些数据可以由修复删除 545 11.10 除DBCC CHECKDB之外的一致性检查命令 545 11.10.1 DBCC CHECKALLOC 546 11.10.2 DBCC CHECKTABLE 547 11.10.3 DBCC CHECKFILEGR OUP 547 11.10.4 DBCC CHECKCATALOG 547 11.10.5 DBCC CHECKIDENT 548 11.10.6 DBCC CHECKCONSTRAINTS 548 11.11 小结 548 前言   您现在拿的这本书是“InsideSQLServer”系列的后续,该系列包括((hnside SQL Server 6.5》、《Inside SQL Server7》、《Inside SQL Server 2000))和《Inside SQL Server 2005》(共4卷)。Inside系列变得太分散,“揭秘(1nside)”这个词也被其他作者甚至出版商扭曲了。我需要一个更具指示性的标题来说明本书的真正内容。   本书讲述微软公司的旗舰关系数据库产品——SQL Server的工作原理。此外,我还会解释如何利用有关工作原理方面的知识来获得更好的产品性能,不过这只是顺便得到的,并不是目标。市场上有其他几十本书讲述SQLServer的优化和最佳实践,本书则帮您理解为什么某些优化实践是那样工作的,也帮您在作为开发人员、数据架构师或DBA继续使用SQL Server的过程中,确定自己的最佳实践。   本书的读者   本书是为想深入理解SQL Server内在工作原理的所有人撰写的。它的重点是核心SQL Server引擎,特别是查询处理器和存储引擎。我希望大家有一些使用SQL Server引擎和T-SQL的经验。您无需是这两方面的专家,但是如果渴望成为专家并愿意了解提交查询执行以后SQL Server实际上做了些什么,本书会有所帮助。   本系列不讨论客户端编程界面、异类查询、商业智能或复制。实际上,大部分高可用性的功能都没有讲,但是在我们讨论数据库属性设置时,从较高层次讨论了一些功能,如镜像。我不会深入到一些内部操作的细节(如安全性)中,因为这是很大的话题,应当单独用整本书来讲。   我希望您看到的是满上的那半杯,而不是空着的那半杯,也就是能从本书所讲内容受益,而对于那些没有包括的主题,希望您能在其他资源中找到相关信息。   本书的内容   本书提供SQL Server处理查询和管理数据过程中的详细信息。首先在第1章中概述SQL Server关系数据库系统架构,然后在后面10章中继续研究查询处理和数据存储的多个方面。各章安排如下。   第1章SQL Server2008架构和配置   第2章更改跟踪、跟踪和扩展事件   第3章数据库和数据库文件   第4章日志记录和恢复   第5章表   第6章索引:内部和管理   第7章特殊存储   第8章查询优化器   第9章计划缓存和重新编译   第10章事务和并发性   第11章DBCC揭秘   第12章可从随附内容(在下一节中讲述)获得,它讨论阅读查询计划的详细信息。这—章叫“查 .  询执行”,是我的前一本书《Inside SQL Server 2005:Query Tuning and Optimization》的一部分。因为.   本章的99%对SQL Server 2008仍然适用,所以我就把它“原封不动”地包括进来作为附加参考。随附内容   本书有一个随附网站,上面有本书使用的所有代码,按章排列。随附内容还包括一章我以前   写的书,以及我的书《SQL Server 2000》中的一章(“History of SQL Server”)。该站点还提   供了额外的脚本和工具,增强您对SQL Server内部的体验和理解。您可以从以下地址访问随附站   点上的内容:http://www.SQL Server Intemals.com/companion。   本书的支持   我们会尽全力保证本书和随附网站的内容精确。如果有更正或更改,都会添加到微软公司的知识库文章中。   微软出版社在以下站点为本书提供支持:   http://www.microsoft.com/leaming/supportYbooks   问题和意见   如果您对本书有什么意见、问题或想法,或者有通过访问以上网站都不能解决的问题,请通过电子邮件发送给微软出版社:   mspinput驷icrosoft.com   或者通过邮件发到:   Microsoft Press   Attn:Microsoft SQL Server 2008 InternalsEditor   OneMicrosoft Way   Redmond,WA98052-6399   注意上述地址不提供微软软件的产品支持。    序言   创造像Microsoft SQL Server这样产品的开发人员通常都是某一技术方面(如访问方法或查询执行)的专家。他们一直在与这个产品打交道,深知自己扮演的角色,以至于陷入了“知识的泥潭”:他们虽然非常了解自己特定领域的细节,却很难通过描述他们的工作就能帮助客户有效地使用这款产品。   另一方面,根据产品创作图书的技术作家们会由外到内地运用产品。这些作家中的大部分人对他们所写产品了解得非常广,但是又有点浅,仅停留在表面。他们写出的书籍有价值,这些书通常插入许多截图,能帮助新用户或中级用户快速学习如何用该产品进行工作。   在知识内部和知识面之间有个空档,就是许多产品开发人员创造的好功能并没有被用户(尤其是中级和高级用户)充分发挥其全部潜力,这就是本书的切入点。正如那些早期的“揭秘SQL Server”系列,本书也是SQL Server如何工作的参考书。Kalen Delaney已经和SQL Server产品团队一起工作了10多年,和开发人员花了无数个小时来深入知识内部,再用一种令人难以置信的清晰形式阐述结果,使中级和高级用户可以充分使用SQLServer的功能。在本书中,Kalen,还有4位SQL Server专家共享了深入的内部知识。Conor Cunningham和Paul Randal具有多年的SQL Server产品开发经验,他们每个人都是资深技术专家,同时又是天才的演讲员。Kimberly Tfipp和Adam Machanic一起探讨事情的内部工作原理,然后将这些结果分享给其他人。在有关SQL Server的活动中,Kimberly和Adam都是座无虚席的演讲员。这个团队了解并整合SQL Server 2008的关键架构更改的详细状况,从而造就了这本新的综合性的SQL Server内部参考书。   您可以用立见分晓的试验来确定一本技术图书是否应当归为“不容置疑的参考书”这个类别。测试相对容易,但是对大家来说很难执行。非常简单,这个测试就是看有多少正在开发产品的开发人员的书架上有这本书并参考它。我敢保证Kalen创作的《Inside Microsoft SQL Server》的每个版本都能通过这项测试,本书也会通过这项测试。   Dave Campbell   Microsoft SQL Server   狂热的技术追随者   
pdf
发布资源于 8 年前

SQL Server编程必知必会(Amazon全五星评价)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server编程必知必会(Amazon全五星评价) 基本信息 原书名: Sams Teach Yourself Microsoft SQL Server T-SQL in 10 Minutes 原出版社: Sams 作者: (英)Ben Forta 译者: 刘晓霞 钟鸣 丛书名: 图灵程序设计丛书.数据库系列 出版社:人民邮电出版社 ISBN:9787115192561 上架时间:2009-1-4 出版日期:2009 年1月
pdf
发布资源于 8 年前

SQL Server求生秘籍(SQL Server故障排除圣经)--随书光盘源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《SQL Server求生秘籍》的随书光盘源代码 对应的书籍资料见: SQL Server求生秘籍(SQL Server故障排除圣经) 基本信息 原书名: SQL Server 2005 Practical Troubleshooting: The Database Engine 原出版社: Addison-Wesley 作者: (美)Ken Henderson    微软SQL Server开发小组和支持部门 译者: 若启 一辉 瞿杰 丛书名: 图灵程序设计丛书.数据库系列 出版社:人民邮电出版社 ISBN:9787115191113 上架时间:2009-2-5 出版日期:2009 年2月 开本:16开 页码:342 版次:1-1 编辑推荐    微软SQL Server内部技术资料大曝光.    来自SQL Server开发小组和支持部门的梦之队打造..    SQL Server故障排除圣经... 内容简介   本书帮助你解决众多数据库引擎方面的问题,每一章从关键的sql server 组件入手,然后探讨用户遇见的常见问题,并给出解决方案。本书的主要内容包括等待和阻塞、数据毁坏和恢复、内存、过程缓存、查询进程等。本书的作者都是来自微软公司sql server 开发团队和客户支持服务部门的支持专家。在你的sql server 系统遇到问题时,本书将变得不可或缺。   本书适合数据库管理员和数据库开发人员阅读。   作者简介:   ken henderson(1967-2008)sql sewer世界级权威。生前供职于微软sql sewer开发组。以guru's guide系列经典著作和sqldiag等工具享誉业界。   创作团队 来自sql server开发小组的7位开发人员和来自微软客户支持服务机构的3位支持专家,他们都有丰富的开发经验,熟悉sql sewer源代码。 作译者   本书的创作团队由来自SQL Server开发小组的开发人员以及来自微软的客户支持服务机构的支持专家组成。其中7位来自SQL Server开发小组,3位来自微软的客户支持服务部门。.   SQL Server开发小组   August Hill是一位具有30多年开发经验的开发人员。在过去的6年里,他一直是SQL Server Service Broker小组中的一员。他为该产品在可支持性方面做出了许多贡献。在业余时间里他喜欢弹吉他以及品味华盛顿葡萄酒。他的联系方式是august.hill@microsoft.com。   Cesar Galindo-Legaria是SQL Server查询优化器部门的主管.他于1992年获得哈佛大学计算机科学专业(数据库方向)的博士学位.在波士顿的一家图形公司工作过一段时间以后,他又返回到数据库领域,在欧洲研究中心进行博士后访问.他于1995年加入微软从事新型关系型查询处理器的工作,该处理器随SQL Serverc7.0一起首次发布,其中引入了一个完全基于开销的查询优化器、一套丰富的执行算法以及许多自动管理的特性.从那时起,他就一直从事SQL Server查询处理的工作.他在查询处理和优化领域拥有多项专利,并且在该领域内发表了许多研究论文.   Ken Henderson是一位具有25年以上开发经验的开发人员.他从1990年开始就从事SQL Server的工作并在其职业生涯内为多家公司开发软件,包括H&R Block、美国中央情报局、美国海军、美国空军、Borland国际公司、摩根大通(JP Morgan)等公司.他于2001年加入微软,目前是SQL Server开发小组中易管理性平台部门(Manageability Platform Group)的一位开发人员.他是SQL Server 2005中SQLDiag工具的开发者,并专注于SQL Server管理工具及相关技术的工作.他是8本涉及多种计算机主题的作者,包括出版自Addison-Wesley公司的SQL Server畅销图书Guru’s Guide系列.他和全家住在达拉斯,他的电子邮箱是khen@khen.com.   Sameer Tejani出生于坦桑尼亚阿鲁沙,在过去的10年里工作于微软的SQL Server部门.他的工作经历使他能够接触到SQL Server引擎的不同领域,包括T-SQL执行框架、开放数据服务(ODS)、连接管理、用户模式调度器(UMS)以及其他领域.他就是那个令支持专家们痛恨的臭名昭著的“non-yielding scheduler”错误消息的唯一负责人!他目前是SQL Server安全小组的软件开发主管.在业余时间内,Sameer喜欢户外活动和长途骑车.他和妻子Farhat住在西雅图...   Santeri Voutilainen,更为常用的名字是Santtu,自从1999年以来就在SQL Server存储引擎小组担任软件设计工程师.他的工作与页分配、闩锁以及锁管理器密切相关.他毕业于哈佛大学,并在华盛顿大学获得计算机科学的硕士学位.尽管称西雅图为自己的家乡,但Santeri生于芬兰,并在尼泊尔渡过了大部分的青年时光.他非常热衷于旅游和户外运动,在闲暇时间内携其妻子与一岁大的儿子在西北太平洋地区进行探险.Santtu的联系方式是santtu@vode.net.   Slava Oks是SQL Server的存储引擎和基础结构小组的软件架构师.他在微软渡过了9年多的时光.在SQL Server 2005的开发项目中,他负责SQLOS的架构和实现.他为该产品在性能、可扩展性、可支持性以及可测试性方面做出了许多贡献.他也是SQL Server的热门博客blogs.msdn.com/slavao的作者.他喜欢在业余时间进行体育运动或者与家人和朋友们一起娱乐.   Wei Xiao从1996年—2006年4月在微软负责SQL Server存储引擎的设计.他主要专注于访问方式、并发模型、空间管理、日志记录以及恢复机制.他也曾从事过SQL Server性能监控和故障排查的工作.他在几次行业会议中做过演讲,包括微软技术大会(TechEd)以及SQL PASS.他目前正在从事微软内部的一个数据存储项目的工作.   微软客户支持服务   Bart Duncan已经从事SQL Server及相关技术有大约10年时间了.他目前是SQL Server产品支持部门的专家级工程师.Bart与他的妻子Andrea Freeman Duncan医生居住在得克萨斯州达拉斯市.   Bob Ward是在位于得克萨斯州艾文市的微软区域支持中心的微软客户服务和支持部门工作的资深专家级工程师.他在微软服务了13年, 并且迄今为止已经支持过微软SQL Server的每一个发行版本, 从OS/2平台下的1.1版到SQL Serverc2005.他在计算机行业的背景持续了20年,包括像在通用动力(General Dynamics)、Harris Hospital以及美国航空公司这样的公司中从事数据库开发项目.Bob于1986年在贝勒大学获得了计算机科学的学士学位.他目前和妻子Ginger以及两个儿子Troy和Ryan居住在得克萨斯州North Richland Hills市.Bob在业余时间会把精力放在青少年体育辅导,支持本地职业体育运动队,并努力提高自己的高尔夫球水平以实现参加PGA巡回赛的梦想.   Cindy Gross从2000年开始成为得州微软PSS的SQL Server和Analysis Services支持小组的成员.在此期间,她担任过许多角色,包括支持工程师、内容主管以及Yukon readiness主管.在加入微软以前,Cindy曾经是一位具有7年经验的SQL Server DBA,负责SQL Server 1.11版及其后续版本的工作.她还是一位热忱的科幻小说读者,关注女性独立的相关图书.她最喜欢的非技术作家是Sheri S. Tepper.Cindy在周末经常开着她的越野摩托(目前是一辆2004年款的本田CRF250X)赛车.你可以从Cindy的网站联系到她:http://cindygross.spaces.live.com/ 目录 封面 -13 封底 -12 扉页 -11 版权 -10 版权声明 -9 作者简介 -8 前言 -6 致谢 -4 目录 -3 第1章 等待和阻塞 1 1.1 等待类型 1 1.2 对阻塞问题进行故障排查 2 1.3 识别阻塞 3 1.3.1 通过sys.dm_os_waiting_tasks来识别阻塞 3 1.3.2 从统计上识别阻塞 5 1.4 确定阻塞的原因 8 1.4.1 当前的语句和计划 8 1.4.2 阻塞模式 8 1.4.3 阻塞链 9 1.5 资源类型的细节 10 1.5.1 闩锁 10 1.5.2 锁 18 1.5.3 外部等待类型 29 1.5.4 计时器和队列等待类型 29 1.5.5 IO操作的等待类型 30 1.5.6 其他等待类型 31 1.6 死锁 32 1.7 监视阻塞 33 1.7.1 等待的统计信息 33 1.7.2 当前的等待信息 33 1.8 小结 36 1.9 其他资源 36 第2章 数据损坏及恢复 37 2.1 基本原理 38 2.2 SQL Server 2005存储内幕 39 2.2.1 数据库及文件状态 39 2.2.2 资源数据库 40 2.2.3 目录视图和基本系统表 41 2.2.4 分配结构 50 2.2.5 数据库校验和 53 2.2.6 快速恢复 53 2.2.7 延期事务 54 2.2.8 只读的压缩数据库 54 2.3 SQL Server 2005增强 55 2.3.1 备份增强 55 2.3.2 还原增强 55 2.3.3 DBCC CHECKDB增强 56 2.4 数据恢复最佳实践 58 2.4.1 备份/还原最佳实践 58 2.4.2 数据库及日志最佳实践 59 2.4.3 DBCC CHECKDB最佳实践 60 2.5 数据恢复故障排查场景 61 2.5.1 系统数据库恢复 61 2.5.2 恢复资源数据库 68 2.5.3 创建tempdb故障 69 2.5.4 重装操作系统 69 2.6 用户数据库不可访问 69 2.6.1 数据库被标记为RECOVERY_PENDING 70 2.6.2 处理延迟事务 77 2.6.3 数据库被标记为SUSPECT 78 2.6.4 粘贴数据库故障 79 2.7 BACKUP/RESTORE故障 80 2.7.1 BACKUP故障 80 2.7.2 RESTORE故障 84 2.8 数据库一致性错误 85 2.8.1 处理数据库一致性运行时错误 85 2.8.2 处理DBCC CHECKDB错误 89 2.8.3 修复与还原 100 2.8.4 每个错误表示什么 101 2.8.5 解释 101 2.8.6 用户动作 101 2.8.7 REPAIR_ALLOW_DATA_LOSS真正的意思是什么 102 2.8.8 进行恢复之前的根本原因分析 102 2.8.9 如果修复没有用,应该怎么办 103 2.8.10 复制数据与修复 103 2.8.11 找出损坏的根本原因:清单 103 第3章 内存 110 3.1 Windows内存管理入门 110 3.1.1 内部的虚拟内存——虚拟地址空间 110 3.1.2 外部虚拟内存 113 3.1.3 内部物理内存 113 3.1.4 外部物理内存 114 3.1.5 内存压力 115 3.1.6 NUMA支持 117 3.2 SQLOS和SQL Server的内存管理 118 3.2.1 内存结点 118 3.2.2 内存clerk 119 3.2.3 内存对象 119 3.2.4 内存缓存 120 3.2.5 缓冲池 123 3.2.6 故障排查 127 第4章 过程缓存 143 4.1 过程缓存的架构 143 4.1.1 缓存对象的类型 144 4.1.2 过程缓存的结构 147 4.1.3 过程缓存和内存 148 4.1.4 非缓存计划和零成本计划 150 4.1.5 计划的共享 151 4.1.6 重编译 151 4.1.7 参数化 152 4.1.8 缓存查找如何工作 156 4.1.9 缓存计划复用 157 4.1.10 刷新过程缓存 158 4.2 常见缓存相关问题及解决方案 158 4.2.1 使用过程缓存来确定代价昂贵的查询 158 4.2.2 参数截取 160 4.2.3 较差的计划复用造成较高的编译时间 169 4.2.4 由于过度的缓存查找时间导致的高CPU问题 173 4.2.5 由过程缓存所引起的内存压力 173 4.3 小结 175 第5章 查询处理器 176 5.1 查询处理器基础 176 5.1.1 编译—执行序列 176 5.1.2 执行计划 178 5.1.3 查询编译和计划选择 180 5.1.4 特殊的优化方法及场景 182 5.2 常见问题 185 5.2.1 编译时间和参数化 185 5.2.2 索引化 189 5.2.3 基数和开销估算 191 5.3 故障排查 192 5.3.1 诊断 192 5.3.2 控制 198 5.4 最佳实践 208 5.4.1 使用面向集合的编程模型 209 5.4.2 提供约束和统计的信息 209 5.4.3 注意复杂的构造 209 5.4.4 尽可能地避免动态语言特性 210 5.5 进阶阅读 210 第6章 服务器崩溃和其他致命故障 212 6.1 基础知识 212 6.1.1 SQL Server 2005服务器恢复内幕 212 6.1.2 SQL Server 2005的增强特性 218 6.2 致命错误与服务器恢复故障排查 221 6.2.1 服务器启动故障排查 221 6.2.2 对服务器致命错误进行故障排查 227 6.2.3 服务器挂起问题的故障排查 255 第7章 Service Broker相关问题 259 7.1 Broker总览 260 7.1.1 为什么要使用Service Broker 260 7.1.2 Service Broker的对象和术语 260 7.1.3 内部架构 261 7.2 主要的诊断工具和方法 261 7.2.1 传输队列视图 261 7.2.2 SQL Profiler——Service Broker跟踪事件 262 7.2.3 错误日志和NT事件日志 264 7.3 Broker故障排查实践 265 7.4 其他Service Broker诊断工具 272 7.4.1 视图 272 7.4.2 Perfmon 283 7.4.3 DBCC CHECKDB 285 7.5 进阶阅读 286 第8章 SQLOS和调度问题 287 8.1 SQLOS架构 288 8.1.1 内存和CPU结点 289 8.1.2 调度器 290 8.1.3 任务和worker 291 8.1.4 SQL Server和SQLOS 291 8.2 配置和故障排查 291 8.2.1 结点配置 291 8.2.2 网络连接关联 292 8.2.3 调度器 294 8.2.4 任务与worker 296 8.2.5 调度器之间的负载均衡任务 297 8.2.6 Max Worker Threads配置 298 8.2.7 Lightweight Pooling配置 299 8.2.8 Affinity Mask配置 300 8.2.9 磁盘I/O完成处理 301 8.2.10 抢占式I/O完成处理 302 8.2.11 调度器监视器 303 8.2.12 硬件配置 314 8.2.13 专用管理员连接 316 8.3 进阶阅读 318 第9章 tempdb相关问题 319 9.1 SQL Server 2005中有何改进 320 9.1.1 tempdb日志文件的IO动作少了 321 9.1.2 tempdb数据文件自动增长更快 321 9.1.3 改进tempdb的并行访问的可扩展性 321 9.1.4 改进tempdb中多个文件的可扩展性 322 9.2 tempdb空间是如何使用的 322 9.2.1 什么是用户对象 323 9.2.2 什么是内部对象 323 9.2.3 什么是版本存储对象 324 9.3 故障排查实践 325 9.3.1 如果tempdb空间不足,你该怎么办 325 9.3.2 什么是tempdb页面闩锁竞争 327 9.4 小结 328 第10章 群集问题 329 10.1 示例 329 10.2 工具 331 10.3 将性能调整到可接受的水平上 333 10.3.1 添加结点 334 10.3.2 为什么群集SQL Server实例发生故障转移 337 10.3.3 为什么故障转移要花这么长时间 338 10.3.4 故障转移之后没人可以连接 338 10.3.5 添加磁盘 339 10.3.6 替换磁盘 339 10.3.7 转移数据库 339 10.4 小结 339 前言   原本我想在本书中让微软技术支持工程师撰写多年来在SQL Server的技术支持工作中所学到的知识。当我加入微软后,令我惊奇的是,技术支持工程师们并没有把关于产品支持的实践知识(在认识论中叫作“领域知识”)记录下来。这些知识仅仅停留在口口相传的状态。.   当然,这导致了一个问题:人们并不知道如何做好工作,除非有热心人来向他们展示该如何做。这也是一种非常容易犯错误的方式,会导致一些最重要的产品支持知识集中在少数人手中——这些经验被他们充分利用,但其他的支持团队却不了解这些知识。   加入微软之前,我做全职软件开发工程师已经20多年了。令我十分惊讶的是,原来支持部门的高端人群都是些曾经做过开发的人。通常,在成为技术支持工程师之前,他们都有3~5年的开发或相关工作经验。作为一名职业开发人员,我很难想象技术支持也可以做长工。对于我来说,支持工作似乎与软件开发世界中的看门人类似。他们不得不帮那些编写乱糟糟代码的开发者“擦屁股”的人。虽然我知道这很重要,但是私下里还是觉得把技术支持工作作为职业并不是一件开心的事。尽管如此,确实有好几个程序员前辈呆在技术支持部门,这让我感到迷惑。   于是,我开始思考如何创造人人机会均等的局面,让原本只有技术支持的上层梯队才能拥有的知识可以传达给每个人。奥林匹斯山上的家伙们对拥有产品支持的全面知识和领域知识引以为豪,对于我来说,这些知识应该分享给组织中的每个人。每一个做产品支持的人都应该有相同的权限来了解它们。   我最初打算在我写的The Guru’s Guide to SQL Server Architecture and Internals一书中加入如何对产品进行故障排查的内容。然而,我很快意识到,开发软件或从开发人员的角度理解软件与故障排查有本质上的不同。可以说,它们是两种完全不同的领域知识。虽然有些部分是重叠的,但对产品故障排查而言,肯定有一些属于它自己特有的东西。   在我最终完成那本关于架构的书后,开始回过头来思考这个问题——如何把支持组在多年里学到的关于产品故障排查的许多低层次的细节和洞察记录下来,并不会有很多关于产品如何运行的详细信息,而是如何解决与产品有关的问题的详细信息。于是我开始与一些支持工程师探讨这个想法,并试探他们对此的兴趣。我建议做一个多作者的项目,在该项目中他们可以把一些难得的故障排查经验发表出来——这不仅仅是为了那些做技术支持的同事们,也为了客户。许多东西还从未被出版过,我感到,如果他们可以看到自己的文字出现在出版物中,最终会激励他们投身于写一些可能只有微软内部的少数人知道的东西。..   什么样的回应都有,从不太热情到很热情。在翻遍了关于哪些人感兴趣和哪些人不感兴趣的花名册之后,我发现,很明显,我需要更多的作者加入到本书的写作队伍中来。在支持部门中,愿意并能够投身到该项目中的人寥寥无几。   我本可以抛开支持组,而跑到微软咨询服务部门,或干脆去找那些最有价值专家(MVP)和类似的人选,但其实我很想把作者队伍限制在那些看过SQL Server源代码的人之中。访问过源代码并一步一步调试过,这种经历是不可替代的。通过研究产品代码,可以更深地理解SQL Server技术,从一定意义上讲,其他方法是做不到这一点的。   因此,我们还需要多引入一些作者,我决定向产品组的一些顶级开发人员发出邀请。虽然微软的产品组与支持组截然不同,他们关注的是开发产品,而不是提供技术支持,但我私下认识他们中的许多人,并知道他们已经花了大量的时间来调试和解决产品中的一些复杂问题,特别是对他们自己所创建的那部分。如果你从不调试代码,是写不出复杂代码的。我相信他们肯定会觉得新颖且有趣,愿意为本书增加一些实际的故障排查知识。   产品组的同事给我的答复都很热情,有好几个来自SQL Server组的顶级开发人员同意参加这个写作项目。我终于成功邀请到了真正写代码的人来探讨如何进行复杂且常见的问题的故障排查。在其他书中,你是找不到这些的,作为参与者,能够让你看到这些内容让我感到激动。   我那本讲架构的书告诉你SQL Server是怎样运转的,这本书则告诉你SQL Server要是不转了怎么办。前一本书,不管你要处理SQL Server的哪一块,都用得上。而现在这本,按说只用于极端情形(因为SQL Server这个产品并不会经常挂掉),然而你的SQL Server应用是一直能让用户满意呢,还是会随时引起用户的怒火,有没有本书差别可就大喽。当然我希望你不会在使用SQL Server时遇到问题。如果遇到了,本书将是你开始故障排查征程的起点。   在此,我要感谢SQL Server产品组中那些做开发的同事们,他们为本书提供了不少内容,分别是:August Hill, Cesar Galindo-Legaria, Sameer Tejani, Santeri (Santtu)Voutilainen, Slava Oks和Wei Xiao;我也要感谢几位技术支持工程师,是他们为这个项目提出了宝贵意见:Bart Duncan, Bob Ward和Cindy Gross。他们都有自己独特的思考(和写作!)方式,但帮助你处理SQL Server故障排查中的一些实际问题,这帮人再合适不过了。...   Ken Henderson    媒体评论   “本书的内容是其他任何博客、网站和图书都没有的。系统出问题时,它将成为你的救命稻草。”.   ——Pinal Dave,微软MVP   “此书写得非常好,涵盖了对大量复杂问题进行故障排查的详细解析。我认为每一位优秀的MSSQL DBA都应该拥有。”...   ——Amazon.com评论   
zip
发布资源于 8 年前

SQL Server求生秘籍(SQL Server故障排除圣经)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server求生秘籍(SQL Server故障排除圣经) 基本信息 原书名: SQL Server 2005 Practical Troubleshooting: The Database Engine 原出版社: Addison-Wesley 作者: (美)Ken Henderson    微软SQL Server开发小组和支持部门 译者: 若启 一辉 瞿杰 丛书名: 图灵程序设计丛书.数据库系列 出版社:人民邮电出版社 ISBN:9787115191113 上架时间:2009-2-5 出版日期:2009 年2月 开本:16开 页码:342 版次:1-1 编辑推荐    微软SQL Server内部技术资料大曝光.    来自SQL Server开发小组和支持部门的梦之队打造..    SQL Server故障排除圣经... 内容简介   本书帮助你解决众多数据库引擎方面的问题,每一章从关键的sql server 组件入手,然后探讨用户遇见的常见问题,并给出解决方案。本书的主要内容包括等待和阻塞、数据毁坏和恢复、内存、过程缓存、查询进程等。本书的作者都是来自微软公司sql server 开发团队和客户支持服务部门的支持专家。在你的sql server 系统遇到问题时,本书将变得不可或缺。   本书适合数据库管理员和数据库开发人员阅读。   作者简介:   ken henderson(1967-2008)sql sewer世界级权威。生前供职于微软sql sewer开发组。以guru's guide系列经典著作和sqldiag等工具享誉业界。   创作团队 来自sql server开发小组的7位开发人员和来自微软客户支持服务机构的3位支持专家,他们都有丰富的开发经验,熟悉sql sewer源代码。 作译者   本书的创作团队由来自SQL Server开发小组的开发人员以及来自微软的客户支持服务机构的支持专家组成。其中7位来自SQL Server开发小组,3位来自微软的客户支持服务部门。.   SQL Server开发小组   August Hill是一位具有30多年开发经验的开发人员。在过去的6年里,他一直是SQL Server Service Broker小组中的一员。他为该产品在可支持性方面做出了许多贡献。在业余时间里他喜欢弹吉他以及品味华盛顿葡萄酒。他的联系方式是august.hill@microsoft.com。   Cesar Galindo-Legaria是SQL Server查询优化器部门的主管.他于1992年获得哈佛大学计算机科学专业(数据库方向)的博士学位.在波士顿的一家图形公司工作过一段时间以后,他又返回到数据库领域,在欧洲研究中心进行博士后访问.他于1995年加入微软从事新型关系型查询处理器的工作,该处理器随SQL Serverc7.0一起首次发布,其中引入了一个完全基于开销的查询优化器、一套丰富的执行算法以及许多自动管理的特性.从那时起,他就一直从事SQL Server查询处理的工作.他在查询处理和优化领域拥有多项专利,并且在该领域内发表了许多研究论文.   Ken Henderson是一位具有25年以上开发经验的开发人员.他从1990年开始就从事SQL Server的工作并在其职业生涯内为多家公司开发软件,包括H&R Block、美国中央情报局、美国海军、美国空军、Borland国际公司、摩根大通(JP Morgan)等公司.他于2001年加入微软,目前是SQL Server开发小组中易管理性平台部门(Manageability Platform Group)的一位开发人员.他是SQL Server 2005中SQLDiag工具的开发者,并专注于SQL Server管理工具及相关技术的工作.他是8本涉及多种计算机主题的作者,包括出版自Addison-Wesley公司的SQL Server畅销图书Guru’s Guide系列.他和全家住在达拉斯,他的电子邮箱是khen@khen.com.   Sameer Tejani出生于坦桑尼亚阿鲁沙,在过去的10年里工作于微软的SQL Server部门.他的工作经历使他能够接触到SQL Server引擎的不同领域,包括T-SQL执行框架、开放数据服务(ODS)、连接管理、用户模式调度器(UMS)以及其他领域.他就是那个令支持专家们痛恨的臭名昭著的“non-yielding scheduler”错误消息的唯一负责人!他目前是SQL Server安全小组的软件开发主管.在业余时间内,Sameer喜欢户外活动和长途骑车.他和妻子Farhat住在西雅图...   Santeri Voutilainen,更为常用的名字是Santtu,自从1999年以来就在SQL Server存储引擎小组担任软件设计工程师.他的工作与页分配、闩锁以及锁管理器密切相关.他毕业于哈佛大学,并在华盛顿大学获得计算机科学的硕士学位.尽管称西雅图为自己的家乡,但Santeri生于芬兰,并在尼泊尔渡过了大部分的青年时光.他非常热衷于旅游和户外运动,在闲暇时间内携其妻子与一岁大的儿子在西北太平洋地区进行探险.Santtu的联系方式是santtu@vode.net.   Slava Oks是SQL Server的存储引擎和基础结构小组的软件架构师.他在微软渡过了9年多的时光.在SQL Server 2005的开发项目中,他负责SQLOS的架构和实现.他为该产品在性能、可扩展性、可支持性以及可测试性方面做出了许多贡献.他也是SQL Server的热门博客blogs.msdn.com/slavao的作者.他喜欢在业余时间进行体育运动或者与家人和朋友们一起娱乐.   Wei Xiao从1996年—2006年4月在微软负责SQL Server存储引擎的设计.他主要专注于访问方式、并发模型、空间管理、日志记录以及恢复机制.他也曾从事过SQL Server性能监控和故障排查的工作.他在几次行业会议中做过演讲,包括微软技术大会(TechEd)以及SQL PASS.他目前正在从事微软内部的一个数据存储项目的工作.   微软客户支持服务   Bart Duncan已经从事SQL Server及相关技术有大约10年时间了.他目前是SQL Server产品支持部门的专家级工程师.Bart与他的妻子Andrea Freeman Duncan医生居住在得克萨斯州达拉斯市.   Bob Ward是在位于得克萨斯州艾文市的微软区域支持中心的微软客户服务和支持部门工作的资深专家级工程师.他在微软服务了13年, 并且迄今为止已经支持过微软SQL Server的每一个发行版本, 从OS/2平台下的1.1版到SQL Serverc2005.他在计算机行业的背景持续了20年,包括像在通用动力(General Dynamics)、Harris Hospital以及美国航空公司这样的公司中从事数据库开发项目.Bob于1986年在贝勒大学获得了计算机科学的学士学位.他目前和妻子Ginger以及两个儿子Troy和Ryan居住在得克萨斯州North Richland Hills市.Bob在业余时间会把精力放在青少年体育辅导,支持本地职业体育运动队,并努力提高自己的高尔夫球水平以实现参加PGA巡回赛的梦想.   Cindy Gross从2000年开始成为得州微软PSS的SQL Server和Analysis Services支持小组的成员.在此期间,她担任过许多角色,包括支持工程师、内容主管以及Yukon readiness主管.在加入微软以前,Cindy曾经是一位具有7年经验的SQL Server DBA,负责SQL Server 1.11版及其后续版本的工作.她还是一位热忱的科幻小说读者,关注女性独立的相关图书.她最喜欢的非技术作家是Sheri S. Tepper.Cindy在周末经常开着她的越野摩托(目前是一辆2004年款的本田CRF250X)赛车.你可以从Cindy的网站联系到她:http://cindygross.spaces.live.com/ 目录 封面 -13 封底 -12 扉页 -11 版权 -10 版权声明 -9 作者简介 -8 前言 -6 致谢 -4 目录 -3 第1章 等待和阻塞 1 1.1 等待类型 1 1.2 对阻塞问题进行故障排查 2 1.3 识别阻塞 3 1.3.1 通过sys.dm_os_waiting_tasks来识别阻塞 3 1.3.2 从统计上识别阻塞 5 1.4 确定阻塞的原因 8 1.4.1 当前的语句和计划 8 1.4.2 阻塞模式 8 1.4.3 阻塞链 9 1.5 资源类型的细节 10 1.5.1 闩锁 10 1.5.2 锁 18 1.5.3 外部等待类型 29 1.5.4 计时器和队列等待类型 29 1.5.5 IO操作的等待类型 30 1.5.6 其他等待类型 31 1.6 死锁 32 1.7 监视阻塞 33 1.7.1 等待的统计信息 33 1.7.2 当前的等待信息 33 1.8 小结 36 1.9 其他资源 36 第2章 数据损坏及恢复 37 2.1 基本原理 38 2.2 SQL Server 2005存储内幕 39 2.2.1 数据库及文件状态 39 2.2.2 资源数据库 40 2.2.3 目录视图和基本系统表 41 2.2.4 分配结构 50 2.2.5 数据库校验和 53 2.2.6 快速恢复 53 2.2.7 延期事务 54 2.2.8 只读的压缩数据库 54 2.3 SQL Server 2005增强 55 2.3.1 备份增强 55 2.3.2 还原增强 55 2.3.3 DBCC CHECKDB增强 56 2.4 数据恢复最佳实践 58 2.4.1 备份/还原最佳实践 58 2.4.2 数据库及日志最佳实践 59 2.4.3 DBCC CHECKDB最佳实践 60 2.5 数据恢复故障排查场景 61 2.5.1 系统数据库恢复 61 2.5.2 恢复资源数据库 68 2.5.3 创建tempdb故障 69 2.5.4 重装操作系统 69 2.6 用户数据库不可访问 69 2.6.1 数据库被标记为RECOVERY_PENDING 70 2.6.2 处理延迟事务 77 2.6.3 数据库被标记为SUSPECT 78 2.6.4 粘贴数据库故障 79 2.7 BACKUP/RESTORE故障 80 2.7.1 BACKUP故障 80 2.7.2 RESTORE故障 84 2.8 数据库一致性错误 85 2.8.1 处理数据库一致性运行时错误 85 2.8.2 处理DBCC CHECKDB错误 89 2.8.3 修复与还原 100 2.8.4 每个错误表示什么 101 2.8.5 解释 101 2.8.6 用户动作 101 2.8.7 REPAIR_ALLOW_DATA_LOSS真正的意思是什么 102 2.8.8 进行恢复之前的根本原因分析 102 2.8.9 如果修复没有用,应该怎么办 103 2.8.10 复制数据与修复 103 2.8.11 找出损坏的根本原因:清单 103 第3章 内存 110 3.1 Windows内存管理入门 110 3.1.1 内部的虚拟内存——虚拟地址空间 110 3.1.2 外部虚拟内存 113 3.1.3 内部物理内存 113 3.1.4 外部物理内存 114 3.1.5 内存压力 115 3.1.6 NUMA支持 117 3.2 SQLOS和SQL Server的内存管理 118 3.2.1 内存结点 118 3.2.2 内存clerk 119 3.2.3 内存对象 119 3.2.4 内存缓存 120 3.2.5 缓冲池 123 3.2.6 故障排查 127 第4章 过程缓存 143 4.1 过程缓存的架构 143 4.1.1 缓存对象的类型 144 4.1.2 过程缓存的结构 147 4.1.3 过程缓存和内存 148 4.1.4 非缓存计划和零成本计划 150 4.1.5 计划的共享 151 4.1.6 重编译 151 4.1.7 参数化 152 4.1.8 缓存查找如何工作 156 4.1.9 缓存计划复用 157 4.1.10 刷新过程缓存 158 4.2 常见缓存相关问题及解决方案 158 4.2.1 使用过程缓存来确定代价昂贵的查询 158 4.2.2 参数截取 160 4.2.3 较差的计划复用造成较高的编译时间 169 4.2.4 由于过度的缓存查找时间导致的高CPU问题 173 4.2.5 由过程缓存所引起的内存压力 173 4.3 小结 175 第5章 查询处理器 176 5.1 查询处理器基础 176 5.1.1 编译—执行序列 176 5.1.2 执行计划 178 5.1.3 查询编译和计划选择 180 5.1.4 特殊的优化方法及场景 182 5.2 常见问题 185 5.2.1 编译时间和参数化 185 5.2.2 索引化 189 5.2.3 基数和开销估算 191 5.3 故障排查 192 5.3.1 诊断 192 5.3.2 控制 198 5.4 最佳实践 208 5.4.1 使用面向集合的编程模型 209 5.4.2 提供约束和统计的信息 209 5.4.3 注意复杂的构造 209 5.4.4 尽可能地避免动态语言特性 210 5.5 进阶阅读 210 第6章 服务器崩溃和其他致命故障 212 6.1 基础知识 212 6.1.1 SQL Server 2005服务器恢复内幕 212 6.1.2 SQL Server 2005的增强特性 218 6.2 致命错误与服务器恢复故障排查 221 6.2.1 服务器启动故障排查 221 6.2.2 对服务器致命错误进行故障排查 227 6.2.3 服务器挂起问题的故障排查 255 第7章 Service Broker相关问题 259 7.1 Broker总览 260 7.1.1 为什么要使用Service Broker 260 7.1.2 Service Broker的对象和术语 260 7.1.3 内部架构 261 7.2 主要的诊断工具和方法 261 7.2.1 传输队列视图 261 7.2.2 SQL Profiler——Service Broker跟踪事件 262 7.2.3 错误日志和NT事件日志 264 7.3 Broker故障排查实践 265 7.4 其他Service Broker诊断工具 272 7.4.1 视图 272 7.4.2 Perfmon 283 7.4.3 DBCC CHECKDB 285 7.5 进阶阅读 286 第8章 SQLOS和调度问题 287 8.1 SQLOS架构 288 8.1.1 内存和CPU结点 289 8.1.2 调度器 290 8.1.3 任务和worker 291 8.1.4 SQL Server和SQLOS 291 8.2 配置和故障排查 291 8.2.1 结点配置 291 8.2.2 网络连接关联 292 8.2.3 调度器 294 8.2.4 任务与worker 296 8.2.5 调度器之间的负载均衡任务 297 8.2.6 Max Worker Threads配置 298 8.2.7 Lightweight Pooling配置 299 8.2.8 Affinity Mask配置 300 8.2.9 磁盘I/O完成处理 301 8.2.10 抢占式I/O完成处理 302 8.2.11 调度器监视器 303 8.2.12 硬件配置 314 8.2.13 专用管理员连接 316 8.3 进阶阅读 318 第9章 tempdb相关问题 319 9.1 SQL Server 2005中有何改进 320 9.1.1 tempdb日志文件的IO动作少了 321 9.1.2 tempdb数据文件自动增长更快 321 9.1.3 改进tempdb的并行访问的可扩展性 321 9.1.4 改进tempdb中多个文件的可扩展性 322 9.2 tempdb空间是如何使用的 322 9.2.1 什么是用户对象 323 9.2.2 什么是内部对象 323 9.2.3 什么是版本存储对象 324 9.3 故障排查实践 325 9.3.1 如果tempdb空间不足,你该怎么办 325 9.3.2 什么是tempdb页面闩锁竞争 327 9.4 小结 328 第10章 群集问题 329 10.1 示例 329 10.2 工具 331 10.3 将性能调整到可接受的水平上 333 10.3.1 添加结点 334 10.3.2 为什么群集SQL Server实例发生故障转移 337 10.3.3 为什么故障转移要花这么长时间 338 10.3.4 故障转移之后没人可以连接 338 10.3.5 添加磁盘 339 10.3.6 替换磁盘 339 10.3.7 转移数据库 339 10.4 小结 339 前言   原本我想在本书中让微软技术支持工程师撰写多年来在SQL Server的技术支持工作中所学到的知识。当我加入微软后,令我惊奇的是,技术支持工程师们并没有把关于产品支持的实践知识(在认识论中叫作“领域知识”)记录下来。这些知识仅仅停留在口口相传的状态。.   当然,这导致了一个问题:人们并不知道如何做好工作,除非有热心人来向他们展示该如何做。这也是一种非常容易犯错误的方式,会导致一些最重要的产品支持知识集中在少数人手中——这些经验被他们充分利用,但其他的支持团队却不了解这些知识。   加入微软之前,我做全职软件开发工程师已经20多年了。令我十分惊讶的是,原来支持部门的高端人群都是些曾经做过开发的人。通常,在成为技术支持工程师之前,他们都有3~5年的开发或相关工作经验。作为一名职业开发人员,我很难想象技术支持也可以做长工。对于我来说,支持工作似乎与软件开发世界中的看门人类似。他们不得不帮那些编写乱糟糟代码的开发者“擦屁股”的人。虽然我知道这很重要,但是私下里还是觉得把技术支持工作作为职业并不是一件开心的事。尽管如此,确实有好几个程序员前辈呆在技术支持部门,这让我感到迷惑。   于是,我开始思考如何创造人人机会均等的局面,让原本只有技术支持的上层梯队才能拥有的知识可以传达给每个人。奥林匹斯山上的家伙们对拥有产品支持的全面知识和领域知识引以为豪,对于我来说,这些知识应该分享给组织中的每个人。每一个做产品支持的人都应该有相同的权限来了解它们。   我最初打算在我写的The Guru’s Guide to SQL Server Architecture and Internals一书中加入如何对产品进行故障排查的内容。然而,我很快意识到,开发软件或从开发人员的角度理解软件与故障排查有本质上的不同。可以说,它们是两种完全不同的领域知识。虽然有些部分是重叠的,但对产品故障排查而言,肯定有一些属于它自己特有的东西。   在我最终完成那本关于架构的书后,开始回过头来思考这个问题——如何把支持组在多年里学到的关于产品故障排查的许多低层次的细节和洞察记录下来,并不会有很多关于产品如何运行的详细信息,而是如何解决与产品有关的问题的详细信息。于是我开始与一些支持工程师探讨这个想法,并试探他们对此的兴趣。我建议做一个多作者的项目,在该项目中他们可以把一些难得的故障排查经验发表出来——这不仅仅是为了那些做技术支持的同事们,也为了客户。许多东西还从未被出版过,我感到,如果他们可以看到自己的文字出现在出版物中,最终会激励他们投身于写一些可能只有微软内部的少数人知道的东西。..   什么样的回应都有,从不太热情到很热情。在翻遍了关于哪些人感兴趣和哪些人不感兴趣的花名册之后,我发现,很明显,我需要更多的作者加入到本书的写作队伍中来。在支持部门中,愿意并能够投身到该项目中的人寥寥无几。   我本可以抛开支持组,而跑到微软咨询服务部门,或干脆去找那些最有价值专家(MVP)和类似的人选,但其实我很想把作者队伍限制在那些看过SQL Server源代码的人之中。访问过源代码并一步一步调试过,这种经历是不可替代的。通过研究产品代码,可以更深地理解SQL Server技术,从一定意义上讲,其他方法是做不到这一点的。   因此,我们还需要多引入一些作者,我决定向产品组的一些顶级开发人员发出邀请。虽然微软的产品组与支持组截然不同,他们关注的是开发产品,而不是提供技术支持,但我私下认识他们中的许多人,并知道他们已经花了大量的时间来调试和解决产品中的一些复杂问题,特别是对他们自己所创建的那部分。如果你从不调试代码,是写不出复杂代码的。我相信他们肯定会觉得新颖且有趣,愿意为本书增加一些实际的故障排查知识。   产品组的同事给我的答复都很热情,有好几个来自SQL Server组的顶级开发人员同意参加这个写作项目。我终于成功邀请到了真正写代码的人来探讨如何进行复杂且常见的问题的故障排查。在其他书中,你是找不到这些的,作为参与者,能够让你看到这些内容让我感到激动。   我那本讲架构的书告诉你SQL Server是怎样运转的,这本书则告诉你SQL Server要是不转了怎么办。前一本书,不管你要处理SQL Server的哪一块,都用得上。而现在这本,按说只用于极端情形(因为SQL Server这个产品并不会经常挂掉),然而你的SQL Server应用是一直能让用户满意呢,还是会随时引起用户的怒火,有没有本书差别可就大喽。当然我希望你不会在使用SQL Server时遇到问题。如果遇到了,本书将是你开始故障排查征程的起点。   在此,我要感谢SQL Server产品组中那些做开发的同事们,他们为本书提供了不少内容,分别是:August Hill, Cesar Galindo-Legaria, Sameer Tejani, Santeri (Santtu)Voutilainen, Slava Oks和Wei Xiao;我也要感谢几位技术支持工程师,是他们为这个项目提出了宝贵意见:Bart Duncan, Bob Ward和Cindy Gross。他们都有自己独特的思考(和写作!)方式,但帮助你处理SQL Server故障排查中的一些实际问题,这帮人再合适不过了。...   Ken Henderson    媒体评论   “本书的内容是其他任何博客、网站和图书都没有的。系统出问题时,它将成为你的救命稻草。”.   ——Pinal Dave,微软MVP   “此书写得非常好,涵盖了对大量复杂问题进行故障排查的详细解析。我认为每一位优秀的MSSQL DBA都应该拥有。”...   ——Amazon.com评论   
pdf
发布资源于 8 年前

SQL Server 2008宝典--详细书签版(第2/2部分)

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server 2008宝典 共2部分:此为第002部分 基本信息 作者: 刘智勇    刘径舟    丛书名: 宝典丛书 出版社:电子工业出版社 ISBN:9787121102820 上架时间:2010-3-27 出版日期:2010 年3月 开本:16开 页码:802 版次:1-1 内容简介   《SQL Server 2008宝典》全面介绍了SQL Server 2008各方面的知识,全书由6部分组成:第1部分为数据库的基
002
发布资源于 8 年前

SQL Server 2008宝典--详细书签版(第1/2部分)

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server 2008宝典 共2部分:此为第001部分 基本信息 作者: 刘智勇    刘径舟    丛书名: 宝典丛书 出版社:电子工业出版社 ISBN:9787121102820 上架时间:2010-3-27 出版日期:2010 年3月 开本:16开 页码:802 版次:1-1 内容简介   《SQL Server 2008宝典》全面介绍了SQL Server 2008各方面的知识,全书由6部分组成:第1部分为数据库的基
001
发布资源于 8 年前

SQL Server 2008编程入门经典(第3版)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server 2008编程入门经典(第3版) 基本信息 原书名: Beginning Microsoft SQL Server 2008 Programming 原出版社: Wrox 作者: (美)Rovert Vieria 译者: 孙皓 马煜 出版社:清华大学出版社 ISBN:9787302214328 上架时间:2010-1-22 出版日期:2010 年1月 开本:16开 页码:559 版次:3-1 编辑推荐   RDBMS如何存储、管理和检索数据   创建和修改表的方法   数据库范式的多种形式   编写脚本和使用存储过程的技巧   索引的优缺点   锁和死锁对系统性能的各种影响   理解触发器及其使用方式   《SQL Server 2008编程入门经典(第3版)》读者对象   《SQL Server 2008编程入门经典(第3版)》适合于希望全面了解数据库设计概念和学习SQL的开发人员。读者具有数据库方面的基础知识有助于更好地理解《SQL Server 2008编程入门经典(第3版)》的内容。 内容简介   《sql server 2008编程入门经典(第3版)》由浅入深逐步介绍了sql server数据库的高级主题,重点讨论了sql server 2008的特殊功能以及与其他编程环境的不同之处。作者robert vieria是microsoft sql,server方面的权威,他采用通俗易懂的方法揭示了sql server-2008核心组件的重要更改。   《sql server 2008编程入门经典(第3版)》首先概述了数据库设计的概念,介绍了如何用sql setver 2008实现这些基本概念。然后,讲述了rdbms(关系数据库管理系统)的功能和它在开发系统架构方面的优势。sql server 2008的新增内容和更改包括:date和time数据类型、hierarchyid数据类型、merge命令和多行插入,以及递归查询等。《sql server 2008编程入门经典(第3版)》旨在帮助您快速地掌握microsoft sql selwer2008的编程技术。 作译者   韦拉(Robert Vieria),是畅销书作者。他从1 980年开始深入学习计算技术,从构建和修复计算机软件包,到通过Z80、Basic以及6502汇编语言进行编程。1 983年,Robert开始攻读计算机信息系统的学位,随后转而研究“PC故障”并开始使用数据库语言(从dBase到SQL Server)进行编程,于1990年获得商业管理学位。此外,他还获得了CMA、MCSD、MCT以及MCDBA等认证。Robert目前是俄勒冈州波兰特市的Huron Consuiting Group的Stockarnp事务所的DBA团队领导人,偶尔也会在数据库开发、商业智能和其他主题方面发表演讲。 目录 封面 -15 封底 560 扉页 -14 版权 -13 审校者序 -12 前言 -10 目录 -6 第1章 RDBMS基础: SQL Server数据库的构成 1 1.1 数据库对象概述 1 1.1.1 数据库对象 2 1.1.2 事务日志 6 1.1.3 最基本的数据库对象:表 6 1.1.4 文件组 8 1.1.5 数据库关系图 8 1.1.6 视图 9 1.1.7 存储过程 10 1.1.8 用户自定义函数 10 1.1.9 用户和角色 10 1.1.10 规则 10 1.1.11 默认值 11 1.1.12 用户自定义数据类型 11 1.1.13 全文目录 11 1.2 SQL Server 数据类型 11 1.3 SQL Server 对象标识符 16 1.3.1 需要命名的对象 16 1.3.2 命名规则 17 1.4 本章小结 17 第2章 SQL Server管理工具 18 2.1 联机丛书 18 2.2 SQL Server配置管理器 19 2.2.1 服务管理 20 2.2.2 网络配置 20 2.2.3 协议 21 2.2.4 客户端 23 2.3 SQL Server Management Studio 25 2.3.1 启动Management Studio 25 2.3.2 “查询”窗口 28 2.4 SQL Server集成服务(SSIS) 32 2.5 Bulk Copy Program(bcp) 33 2.6 SQL Server Profiler 33 2.7 sqlcmd 34 2.8 PowerShell 34 2.9 本章小结 34 第3章 T-SQL基本语句 35 3.1 基本SELECT语句 36 3.1.1 SELECT语句与FROM子句 36 3.1.2 WHERE子句 39 3.1.3 ORDER BY子句 42 3.1.4 使用GROUP BY子句聚合数据 44 3.1.5 使用HAVING子句给分组设置条件 52 3.1.6 使用FOR XML子句输出XML 53 3.1.7 通过OPTION子句利用提示 54 3.1.8 DISTINCT和ALL谓词 54 3.2 使用INSERT语句添加数据 56 3.2.1 多行插入 60 3.2.2 INSERT INTO…SELECT语句 61 3.3 用UPDATE 语句更改数据 63 3.4 DELETE 语句 65 3.5 本章小结 66 3.6 练习 66 第4章 连接 67 4.1 连接 67 4.2 内部连接 69 4.3 外部连接 75 4.3.1 简单的外部连接 76 4.3.2 处理更复杂的外部连接 81 4.4 完全连接 85 4.5 交叉连接 86 4.6 JOIN语句的早期语法结构 87 4.6.1 内部连接的早期语法结构 88 4.6.2 外部连接的早期语法结构 88 4.6.3 交叉连接的早期语法结构 89 4.7 联合 90 4.8 本章小结 94 4.9 练习 94 第5章 创建和修改数据表 95 5.1 SQL Server中的对象名 95 5.1.1 模式名 95 5.1.2 数据库名 98 5.1.3 通过服务器命名 98 5.1.4 回顾默认值 98 5.2 CREATE语句 99 5.2.1 CREATE DATABASE 99 5.2.2 CREATE TABLE 104 5.3 ALTER语句 115 5.3.1 ALTER DATABASE 115 5.3.2 ALTER TABLE 119 5.4 DROP语句 122 5.5 使用GUI工具 123 5.5.1 使用Management Studio创建数据库 123 5.5.2 回到代码:使用Management Studio创建脚本的基础知识 127 5.6 本章小结 128 5.7 练习 128 第6章 约束 129 6.1 约束的类型 130 6.1.1 域约束 130 6.1.2 实体约束 130 6.1.3 参照完整性约束 131 6.2 约束命名 131 6.3 键约束 132 6.3.1 主键约束 132 6.3.2 外键约束 134 6.3.3 唯一约束 144 6.4 CHECK约束 145 6.5 DEFAULT约束 146 6.5.1 在CREATE TABLE语句中定义DEFAULT约束 147 6.5.2 在已存在的表中添加DEFAULT约束 148 6.6 禁用约束 148 6.6.1 在创建约束时忽略无效的数据 148 6.6.2 临时禁用已存在的约束 150 6.7 规则和默认值 152 6.7.1 规则 152 6.7.2 默认值 154 6.7.3 确定哪个表和数据类型使用给定的规则或默认值 154 6.8 用于实现数据完整性的触发器 155 6.9 如何选择 155 6.10 本章小结 156 第7章 更复杂的查询 157 7.1 子查询的概念 158 7.2 关联子查询 161 7.2.1 关联子查询的工作原理 162 7.2.2 在WHERE子句中的关联子查询 162 7.2.3 处理NULL数据——ISNULL函数 165 7.3 派生表 166 7.4 EXISTS运算符 168 7.5 混合数据类型:CAST和CONVERT 171 7.6 MERGE命令 174 7.6.1 BY TARGET和BY SOURCE 177 7.6.2 OUTPUT子句 177 7.7 性能方面的考虑 180 7.8 本章小结 181 7.9 练习 181 第8章 规范化和其他基本设计问题 182 8.1 表 182 8.2 保持数据“规范” 193 8.2.1 准备工作 184 8.2.2 第一范式 185 8.2.3 第二范式 188 8.2.4 第三范式 189 8.2.5 其他范式 191 8.3 关系 192 8.3.1 一对一关系 192 8.3.2 一对一或一对多关系 193 8.3.3 多对多关系 195 8.4 数据库关系图 198 8.4.1 表 200 8.4.2 添加和删除表 200 8.4.3 关系 205 8.5 反规范化 207 8.6 超出规范化的一些规则 208 8.6.1 保持简单 208 8.6.2 选择数据类型 208 8.6.3 尽量进行存储 209 8.7 创建一个快速示例 209 8.7.1 创建数据库 209 8.7.2 添加数据库关系图和初始表 210 8.7.3 添加关系 213 8.7.4 添加一些约束 215 8.8 本章小结 216 8.9 练习 216 第9章 SQL Server存储和索引结构 217 9.1 SQL Server存储机制 217 9.1.1 数据库 217 9.1.2 区段 218 9.1.3 页 218 9.1.4 行 219 9.1.5 稀疏列 219 9.2 理解索引 219 9.2.1 平衡树(B-树) 220 9.2.2 SQL Server中访问数据的方式 223 9.3 创建、修改和删除索引 230 9.3.1 CREATE INDEX语句 230 9.3.2 创建XML索引 234 9.3.3 随约束创建的隐含索引 235 9.3.4 在稀疏列和地理空间列上创建索引 236 9.4 明智地选择—— 在何时何地使用何种索引 236 9.4.1 选择性 236 9.4.2 注意成本 236 9.4.3 选择群集索引 237 9.4.4 列顺序问题 239 9.4.5 修改索引 239 9.4.6 删除索引 241 9.4.7 从查询计划中获取提示 242 9.4.8 使用数据库引擎调整向导 242 9.5 维护索引 242 9.5.1 碎片 242 9.5.2 确定碎片和页拆分的可能性 243 9.6 本章小结 246 9.7 练习 247 第10章 视图 248 10.1 简单的视图 248 10.2 更加复杂的视图 253 10.3 使用T-SQL编辑视图 259 10.4 删除视图 260 10.5 在Management Studio中创建和编辑视图 260 10.6 审查:显示现有的代码 263 10.7 保护代码:加密视图 264 10.8 关于模式绑定 265 10.9 使用VIEW_METADATA使视图看起来像表一样 266 10.10 索引(物化)视图 266 10.11 本章小结 268 10.12 练习 269 第11章 编写脚本和批处理 270 11.1 脚本的基础知识 270 11.1.1 USE语句 271 11.1.2 声明变量 271 11.1.3 使用@@IDENTITY 275 11.1.4 使用@@ROWCOUNT 278 11.2 批处理 279 11.2.1 批处理中的错误 281 11.2.2 何时使用批处理 281 11.3 sqlcmd 284 11.4 动态SQL:用EXEC命令动态生成代码 288 11.5 控制流语句 293 11.5.1 IF…ELSE语句 293 11.5.2 CASE语句 297 11.5.3 用WHILE语句进行循环 302 11.5.4 WAITOR语句 303 11.5.5 TRY/CATCH块 303 11.6 本章小结 306 11.7 练习 306 第12章 存储过程 307 12.1 创建存储过程:基本语法 307 12.2 使用ALTER修改存储过程 309 12.3 删除存储过程 309 12.4 参数化 310 12.5 通过返回值确认成功或失败 315 12.6 错误处理 317 12.6.1 以前的方式 318 12.6.2 在错误发生前处理错误 323 12.6.3 手动引发错误 328 12.6.4 添加自定义的错误消息 331 12.7 存储过程的优点 333 12.7.1 创建可调用的进程 333 12.7.2 为了安全性使用存储过程 333 12.7.3 存储过程和性能 334 12.8 扩展存储过程(XP) 336 12.9 递归简介 336 12.10 调试 338 12.10.1 启动调试器 339 12.10.2 调试器的组成 339 12.10.3 使用调试器 342 12.11 .NET程序集 343 12.12 本章小结 344 第13章 用户自定义函数 345 13.1 UDF的定义 345 13.2 返回标量值的UDF 346 13.3 返回表的UDF 350 13.4 调试用户自定义函数 358 13.5 数据库中的.NET 358 13.6 本章小结 358 13.7 练习 358 第14章 事务和锁 359 14.1 事务 359 14.1.1 BEGIN TRAN 360 14.1.2 COMMIT TRAN 360 14.1.3 ROLLBACK TRAN 361 14.1.4 SAVE TRAN 361 14.2 SQL Server日志的工作方式 361 14.2.1 失败和恢复 362 14.2.2 隐式事务 364 14.3 锁和并发 364 14.3.1 通过锁可以防止的问题 365 14.3.2 可以锁定的资源 368 14.3.3 锁升级和锁对性能的影响 368 14.3.4 锁定模式 369 14.3.5 锁的兼容性 370 14.3.6 指定一种特有的锁定类型—— 优化器提示 371 14.4 设置隔离级别 372 14.5 处理死锁(1205错误) 375 14.5.1 SQL Server判断死锁的方式 375 14.5.2 选择死锁牺牲者的方式 375 14.5.3 避免死锁 375 14.6 本章小结 377 第15章 触发器 379 15.1 触发器的概念 380 15.1.1 ON子句 381 15.1.2 WITH ENCRYPTION选项 381 15.1.3 FOR | AFTER 子句与INSTEAD OF子句 381 15.1.4 WITH APPEND选项 384 15.1.5 NOT FOR REPLICATION选项 384 15.1.6 AS子句 384 15.2 使用触发器实施数据完整性规则 384 15.2.1 处理来自于其他表的需求 385 15.2.2 使用触发器来检查更新的变化 386 15.2.3 将触发器用于自定义错误消息 388 15.3 触发器的其他常见用途 388 15.4 触发器的其他问题 388 15.4.1 触发器可以嵌套 389 15.4.2 触发器可以递归 389 15.4.3 触发器不能防止体系结构的修改 389 15.4.4 可以在不删除的情况下关闭触发器 390 15.4.5 触发器的激活顺序 390 15.5 INSTEAD OF触发器 392 15.6 性能考虑 392 15.6.1 触发器的被动性 392 15.6.2 触发器与激活的进程之间不存在并发问题 392 15.6.3 使用IF UPDATE()和COLUMNS_UPDATED() 393 15.6.4 保持触发器短小精悍 395 15.6.5 选择索引时不要忘记触发器 395 15.6.6 不要在触发器中进行回滚 395 15.7 删除触发器 395 15.8 调试触发器 396 15.9 本章小结 397 第16章 初识XML 398 16.1 XML基础 399 16.1.1 XML文档的各个组成部分 400 16.1.2 名称空间 407 16.1.3 元素内容 408 16.1.4 有效与格式良好——架构和DTD 409 16.2 SQL Server提供的XML支持 410 16.2.1 将列定义为XML类型 410 16.2.2 XML架构集合 411 16.2.3 创建、修改和删除XML架构集合 413 16.2.4 XML数据类型方法 415 16.2.5 强制执行架构集合之外的约束 421 16.2.6 用XML格式检索关系数据 421 16.2.7 RAW选项 422 16.2.8 AUTO选项 424 16.2.9 EXPLICIT选项 426 16.2.10 PATH选项 427 16.2.11 OPENXML函数 432 16.3 XSLT简介 436 16.4 本章小结 438 第17章 Reporting Services概述 439 17.1 Reporting Services 101 439 17.2 创建简单的报表模型 440 17.2.1 数据源视图 443 17.2.2 建立数据模型 447 17.2.3 创建报表 450 17.3 报表服务器项目 454 17.4 本章小结 459 第18章 使用Integration Services进行集成 460 18.1 理解问题 460 18.2 使用导入/导出向导生成基本的程序包 461 18.3 程序包基础知识 466 18.3.1 “连接管理器”面板 467 18.3.2 程序包编辑器面板 468 18.4 执行程序包 472 18.4.1 在Development Studio中运行程序包 472 18.4.2 使用执行包实用工具 472 18.4.3 使用SQL Server Agent执行程序包 475 18.4.4 从程序中执行程序包 475 18.5 关于程序包的补充说明 475 18.6 本章小结 475 第19章 扮演管理员的角色 476 19.1 调度作业 477 19.1.1 创建操作员 477 19.1.2 创建作业和任务 479 19.2 备份和恢复 487 19.2.1 创建备份—— 转储 488 19.2.2 恢复模式 491 19.2.3 还原 491 19.3 索引维护 493 19.4 数据归档 495 19.5 基于策略的管理 496 19.6 本章小结 496 19.7 练习 497 附录A 系统函数 498 附录B 非常简单的连接示例 550 附录C 学习资源 558
pdf
发布资源于 8 年前

SQL Server 2008管理员必备指南--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server 2008管理员必备指南 基本信息 原书名: Microsoft SQL Server 2008 Administrator's Pocket Consultant 原出版社: Microsoft Press 作者: (美)William R. Stanek    [作译者介绍] 译者: 贾洪峰 丛书名: 微软技术丛书 出版社:清华大学出版社 ISBN:9787302192671 上架时间:2009-2-26 出版日期:2009 年2月 开本:16开 页码:583 版次:1-1 编辑推荐    SQL Server专家的呕心力作,数据库管理员的实践宝典.    全面、深入地剖析SQL Server 2008新特性..    结构独特,实例丰富,操作性强... 内容简介    全书按照由浅入深的逻辑共分为4部分,即管理基础、系统管理、数据管理以及优化与维护。这种分类方法不仅从理论上环环相扣,全面介绍数据库管理人员需要掌握的相关理论知识和工作技能,也从不同层次上体现了数据库管理员的工作内容及工作的要点和难点,能够科学地指导数据库管理员的日常工作。.    本书的特点是按照日常工作的逻辑来编排内容,并含有大量实例操作指导、技巧提示及t-sql代码,方便管理员日常的工作。..    本书适合所有sql server用户参考,更是数据库管理员的必备指南。... 作译者   William R.Stanek,微软MVP(最有价值专家),拥有20多年系统管理和高级编程的经验。他是屡获嘉奖的作家,著作多达70部,其中包括Microsoft Windows Server 2008 Inside Out。他也是“管理员必备指南“系列丛书的编辑。 目录 封面 -19 封底 584 扉页 -18 版权 -17 《微软技术丛书》出版前言 -16 译者序 -14 前言 -13 目录 -9 第Ⅰ部分 SQL Server 2008管理基础 1 第1章 SQL Server 2008管理概况 3 1.1 SQL Server 2008与硬件 4 1.2 SQL Server 2008的版本 6 1.3 SQL Server和Windows 8 1.3.1 SQL Server的服务 8 1.3.2 SQL Server登录和身份验证 9 1.3.3 SQL Server的服务帐户 10 1.4 使用图形化管理工具 11 1.5 使用命令行工具 14 1.5.1 BCP 15 1.5.2 SQLCMD 15 1.5.3 其他命令行工具 17 1.6 使用SQL Server PowerShell 18 1.6.1 运行和使用cmdlet 18 1.6.2 运行和使用SQL Server PowerShell 19 1.6.3 使用SQL Server cmdlet 20 第2章 部署SQL Server 2008 22 2.1 SQL Server集成角色 22 2.1.1 使用SQL Server集成服务 22 2.1.2 使用SQL Server 2008的关系数据仓库 23 2.1.3 使用SQL Server 2008的多维数据库和数据挖掘 25 2.1.4 使用SQL Server 2008管理报表 26 2.2 规划SQL Server 2008的部署 27 2.2.1 建立服务器的性能系统 27 2.2.2 配置I/O子系统 28 2.2.3 确保可用性和可伸缩性 30 2.2.4 确保连接性和数据访问 31 2.2.5 管理SQL Server配置和安全性 32 2.3 运行安装程序和修改SQL Server安装 33 2.3.1 创建新的SQL Server实例 33 2.3.2 添加组件和实例 44 2.3.3 修复SQL Server 2008安装 44 2.3.4 升级SQL Server 2008版本 45 2.3.5 卸载SQL Server 45 第3章 管理外围安全、访问 以及网络配置 46 3.1 管理SQL Server的组件功能 46 3.2 配置SQL Server服务 49 3.2.1 管理服务配置 50 3.2.2 管理服务的状态和启动模式 53 3.2.3 设置启动的服务帐户 54 3.2.4 配置文件流 56 3.2.5 配置服务转储目录、错误报告和客户反馈报告 58 3.3 管理网络和SQL本地客户端配置 59 3.3.1 管理连接配置 60 3.3.2 配置Shared Memory网络配置 62 3.3.3 配置Named Pipes网络配置 62 3.3.4 配置TCP/IP网络配置 62 3.3.5 配置本地客户端配置的安全性 65 3.3.6 配置本地客户端协议的顺序 65 3.3.7 设置共享内存的本地客户端配置 66 3.3.8 设置命名管道的本地客户端配置 66 3.3.9 设置TCP/IP本地客户端配置 67 第4章 配置和优化SQL Server 2008 68 4.1 访问SQL Server的配置数据 69 4.1.1 使用系统目录和目录视图 70 4.1.2 使用系统存储过程 75 4.2 管理SQL Server配置选项的技巧 82 4.2.1 设置配置选项 82 4.2.2 使用SET选项 83 4.2.3 使用服务器选项 85 4.2.4 使用数据库选项 86 4.2.5 管理数据库的兼容性 87 4.3 通过存储过程配置SQL Server 88 4.3.1 使用SQL Server Management Studio查询 88 4.3.2 执行查询和改变设置 90 4.3.3 检查和设置配置参数 91 4.3.4 使用ALTER DATABASE改变设置 95 第Ⅱ部分 SQL Server 2008的系统管理 99 第5章 管理企业 101 5.1 使用SQL Server Management Studio 101 5.1.1 开始使用SQL Server Management Studio 101 5.1.2 连接到特定的服务器实例 103 5.1.3 连接到特定数据库 103 5.2 管理SQL Server组 104 5.2.1 介绍SQL Server组 104 5.2.2 创建服务器组 106 5.2.3 删除服务器组 106 5.2.4 编辑和移动服务器组 107 5.2.5 添加SQL Server到一个组 107 5.3 管理服务器 107 5.3.1 注册已连接服务器 108 5.3.2 在“已注册的服务器”视图中注册新的服务器 109 5.3.3 注册以前注册的SQL Server 2000服务器 109 5.3.4 更新本地服务器注册 110 5.3.5 将服务器组和注册信息复制到另一台计算机 110 5.3.6 编辑注册属性 112 5.3.7 连接到服务器 113 5.3.8 从服务器断开连接 113 5.3.9 移动服务器到新的组 113 5.3.10 删除服务器注册 113 5.4 启动、停止和配置SQL Server代理 114 5.5 启动、停止和配置Microsoft分布式事务处理协调器 114 5.6 管理SQL Server启动 115 5.6.1 启用或防止SQL Server的自动启动 115 5.6.2 设置数据库引擎的启动参数 116 5.6.3 从命令行管理服务 118 5.6.4 管理SQL Server命令行的可执行文件 119 5.7 管理服务器活动 120 5.7.1 检查进程信息 120 5.7.2 跟踪资源等待和阻塞 122 5.7.3 检测修复死锁和阻塞连接 125 5.7.4 在SQL Server中跟踪命令的执行 126 5.7.5 终止服务器进程 127 第6章 使用SQL Server Management Studio配置SQL Server 128 6.1 使用SQL Server Management Studio管理配置 128 6.2 确定系统和服务器信息 130 6.3 配置身份验证和审核 130 6.3.1 设置身份验证模式 131 6.3.2 设置审核级别 132 6.3.3 启用或禁用C2审核登录 132 6.3.4 启用或禁用“符合公共标准” 133 6.4 调节内存的使用 133 6.4.1 动态配置内存 135 6.4.2 使用固定内存 136 6.4.3 启用AWE内存的支持 136 6.4.4 为索引优化内存 137 6.4.5 为查询分配内存 138 6.5 配置处理器和并行处理 138 6.5.1 优化CPU的使用 139 6.5.2 设置并行处理 141 6.6 配置线程、优先级和纤程 142 6.7 配置用户和远程连接 143 6.7.1 设置最大用户连接 144 6.7.2 设置默认连接选项 145 6.7.3 配置远程服务器连接 146 6.8 管理服务器设置 147 6.8.1 启用或禁用文件流 148 6.8.2 设置SQL Server的默认语言 148 6.8.3 允许和禁止嵌套触发器 149 6.8.4 控制查询的执行 149 6.8.5 配置2000年的支持 150 6.9 管理数据库设置 150 6.9.1 设置索引填充 151 6.9.2 配置备份和还原超时选项 152 6.9.3 配置备份和还原保持选项 153 6.9.4 用检查点清空缓存 153 6.9.5 压缩备份媒体 153 6.10 添加和删除活动目录的信息 154 6.11 修复配置故障 154 6.11.1 从损坏的配置中恢复 154 6.11.2 更改排序规则和重新生成master数据库 155 第7章 数据库管理的核心任务 157 7.1 数据库文件和日志 157 7.2 数据库管理基础 161 7.2.1 在SQL Server Management Studio中查看数据库的信息 161 7.2.2 使用T-SQL查看数据库信息 163 7.2.3 检查系统和示例数据库 164 7.2.4 检查数据库对象 164 7.3 创建数据库 166 7.3.1 在SQL Server Management Studio中创建数据库 167 7.3.2 使用T-SQL创建数据库 170 7.4 修改数据库及其选项 171 7.4.1 在SQL Server Management Studio中设置数据库选项 171 7.4.2 使用ALTER DATABASE修改数据库 172 7.4.3 配置自动选项 176 7.4.4 在数据库级别上控制ASNI的兼容性 177 7.4.5 配置参数化 179 7.4.6 配置游标选项 181 7.4.7 控制用户访问和数据库状态 182 7.4.8 设置联机、脱机或紧急模式 183 7.4.9 管理跨数据库链接和外部访问选项 183 7.4.10 配置恢复、日志记录和磁盘I/O错误检查选项 184 7.4.11 查看、更改和覆盖数据库选项 186 7.5 管理数据库和日志大小 186 7.5.1 配置SQL Server自动管理文件大小 186 7.5.2 手动扩展数据库和日志 187 7.5.3 手动压缩和收缩数据库 187 7.6 操作数据库 191 7.6.1 重命名数据库 191 7.6.2 清除和删除数据库 192 7.6.3 附加和分离数据库 193 7.7 提示和技巧 195 7.7.1 复制和移动数据库 195 7.7.2 移动数据库 199 7.7.3 移动tempdb和改变tempdb的大小 200 7.7.4 创建辅助数据和日志文件 201 7.7.5 防止事务日志错误 201 7.7.6 防止文件组充满的错误 202 7.7.7 创建新的数据库模板 202 7.7.8 配置数据库加密 202 第8章 全文搜索的管理 204 8.1 全文目录和索引 204 8.2 管理全文目录 207 8.2.1 查看目录属性 207 8.2.2 创建目录 209 8.2.3 启用表和视图的索引 210 8.2.4 编辑表和视图的索引 212 8.2.5 从表或视图中禁用和删除全文索引 212 8.2.6 填充全文目录 213 8.2.7 重新生成当前目录 216 8.2.8 清除旧的目录 217 8.2.9 删除目录 217 8.3 管理全文搜索 218 8.3.1 设置全文搜索的默认语言 218 8.3.2 使用非索引字表 219 8.3.3 创建非索引字表 220 8.3.4 管理非索引字表 222 8.3.5 创建和使用同义词库文件 223 第9章 管理SQL Server 2008的安全性 227 9.1 SQL Server 2008安全性概况 227 9.1.1 使用安全主体和安全对象 228 9.1.2 理解安全对象的权限 229 9.1.3 检查授予安全对象的权限 231 9.2 SQL Server 2008的身份验证模式 234 9.2.1 Windows身份验证 234 9.2.2 混合模式和SQL Server登录 234 9.3 特殊目的的登录和用户 235 9.3.1 使用管理员组 235 9.3.2 使用管理员用户帐户 236 9.3.3 使用sa登录 236 9.3.4 使用NETWORK SERVICE和SYSTEM登录 236 9.3.5 使用guest用户 236 9.3.6 使用dbo用户 237 9.3.7 使用sys和INFORMATION_SCHEMA用户 238 9.4 权限 238 9.4.1 对象权限 238 9.4.2 语句权限 243 9.4.3 隐含权限 243 9.5 角色 243 9.5.1 服务器角色 244 9.5.2 数据库角色 245 9.6 管理服务器登录 247 9.6.1 查看和编辑现有的登录 247 9.6.2 创建登录 249 9.6.3 用T-SQL编辑登录 251 9.6.4 允许或拒绝访问服务器 252 9.6.5 启用、禁用和解锁登录 253 9.6.6 删除登录 254 9.6.7 更改密码 254 9.7 配置服务器角色 255 9.7.1 为登录分配角色 255 9.7.2 为多个登录分配角色 256 9.7.3 撤销服务器登录的访问权限和授予的角色 257 9.8 控制数据库访问和管理 258 9.8.1 为登录分配访问权限和角色 258 9.8.2 为多个登录分配角色 259 9.8.3 创建标准的数据库角色 260 9.8.4 创建应用程序数据库角色 261 9.8.5 删除数据库用户的角色成员关系 262 9.8.6 删除用户定义的角色 262 9.8.7 管理访问和角色的Transact-SQL命令 263 9.9 管理数据库权限 264 9.9.1 为语句分配数据库权限 264 9.9.2 登录的对象权限 269 9.9.3 多个登录的对象权限 270 第Ⅲ部分 SQL Server 2008的数据管理 273 第10章 操作架构、表、索引和视图 275 10.1 处理架构 275 10.1.1 创建架构 276 10.1.2 修改架构 278 10.1.3 将对象移动到新架构 279 10.1.4 删除架构 280 10.2 表的概况 280 10.3 表的实质 281 10.3.1 了解数据页 281 10.3.2 了解区 282 10.3.3 了解表的分区 283 10.4 处理表 283 10.4.1 创建表 284 10.4.2 修改现有的表 288 10.4.3 查看表的行和大小的信息 290 10.4.4 显示表属性和权限 291 10.4.5 显示表中当前的值 291 10.4.6 复制表 292 10.4.7 重命名和删除表 292 10.4.8 在一个表中添加和删除列 293 10.4.9 编写表脚本 294 10.5 管理表的值 294 10.5.1 使用原始数据类型 294 10.5.2 使用固定长度、可变长度和最大长度的字段 298 10.5.3 使用用户定义的数据类型 299 10.5.4 允许和不允许Null值 301 10.5.5 使用默认值 302 10.5.6 使用稀疏列 302 10.5.7 使用标识和全局唯一标识符 303 10.5.8 使用用户定义的表类型 304 10.6 使用视图 307 10.6.1 操作视图 307 10.6.2 创建视图 308 10.6.3 修改视图 311 10.6.4 使用可更新视图 312 10.6.5 管理视图 312 10.7 创建和管理索引 313 10.7.1 了解索引 313 10.7.2 使用聚集索引 315 10.7.3 使用非聚集索引 315 10.7.4 使用XML索引 315 10.7.5 使用筛选索引 316 10.7.6 确定应当索引哪些列 317 10.7.7 索引计算列和视图 318 10.7.8 查看索引属性 318 10.7.9 创建索引 320 10.7.10 管理索引 324 10.7.11 使用数据库引擎优化顾问 326 10.8 列约束和规则 329 10.8.1 使用约束 329 10.8.2 使用规则 333 10.9 创建已分区表和索引 334 10.9.1 创建分区函数 334 10.9.2 创建分区方案 335 10.9.3 创建分区 335 10.9.4 查看和管理分区 337 10.10 压缩表、索引和分区 338 10.10.1 使用行和页压缩 338 10.10.2 设置或改变压缩设置 339 第11章 数据的导入和导出及转换 341 11.1 使用集成服务 341 11.1.1 集成服务简介 341 11.1.2 集成服务工具 342 11.1.3 集成服务和数据提供程序 344 11.1.4 集成服务包 344 11.2 使用SQL Server导入和导出向导创建包 345 11.2.1 阶段1:数据源和目标的配置 346 11.2.2 阶段2:复制或查询 353 11.2.3 阶段3:格式化和转换 357 11.2.4 阶段4:保存和执行 360 11.3 了解BCP 363 11.3.1 BCP 基础 363 11.3.2 BCP 语法 363 11.3.3 BCP 权限和模式 366 11.3.4 使用BCP导入数据 366 11.3.5 使用BCP导出数据 368 11.4 BCP脚本 368 11.5 使用BULK INSERT 命令 369 第12章 链接服务器与分布式事务 371 12.1 使用链接服务器和分布式数据 371 12.1.1 使用分布式查询 372 12.1.2 使用分布式事务 374 12.1.3 运行分布式事务处理协调器服务 375 12.2 管理链接服务器 375 12.2.1 添加链接服务器 376 12.2.2 配置链接服务器的安全性 379 12.2.3 设置远程和链接服务器的服务器选项 381 12.2.4 删除链接服务器 382 第13章 实施快照、合并和事务复制 384 13.1 复制的概况 384 13.1.1 复制组件 385 13.1.2 复制代理和作业 386 13.1.3 复制的类型 387 13.2 复制的计划 389 13.2.1 复制模式 389 13.2.2 复制的预备任务 390 13.3 分发服务器的管理 392 13.3.1 设置新的分发服务器 392 13.3.2 更新分发服务器 396 13.3.3 创建分发数据库 398 13.3.4 启用和更新发布服务器 399 13.3.5 启用发布数据库 399 13.3.6 删除分发数据库 400 13.3.7 禁用发布和分发 400 13.4 创建和管理发布 401 13.4.1 创建发布 401 13.4.2 查看和更新发布 407 13.4.3 设置发布属性 408 13.4.4 设置代理安全性和进程帐户 409 13.4.5 控制订阅访问发布 410 13.4.6 为发布创建脚本 410 13.4.7 删除发布 411 13.5 订阅发布 411 13.5.1 订阅的实质 411 13.5.2 创建订阅 412 13.5.3 查看订阅属性 415 13.5.4 更新、维护和删除订阅 416 13.5.5 验证订阅 416 13.5.6 重新初始化订阅 417 第Ⅳ部分 SQL Server 2008的优化与维护 419 第14章 分析和监视 SQL Server 2008 421 14.1 监视服务器的性能和活动 421 14.1.1 监视SQL Server的原因 421 14.1.2 为监视做准备 422 14.1.3 监视工具和资源 423 14.2 使用复制监视器 425 14.2.1 启动并使用复制监视器 425 14.2.2 添加发布服务器和发布服务器组 426 14.3 使用事件日志 427 14.3.1 检查应用程序日志 428 14.3.2 检查SQL Server事件日志 430 14.3.3 检查SQL Server代理事件日志 432 14.4 监视SQL Server的性能 433 14.4.1 选择要监视的计数器 433 14.4.2 创建性能日志 435 14.4.3 查看数据收集器报告 439 14.4.4 配置性能计数器警报 440 14.5 配置管理数据仓库 441 14.5.1 了解管理数据仓库 441 14.5.2 创建管理数据仓库 441 14.5.3 设置数据收集 442 14.5.4 管理收集和生成报表 442 14.6 使用事件探查器解决性能问题 442 14.6.1 使用事件探查器 443 14.6.2 新建跟踪 444 14.6.3 使用跟踪 447 14.6.4 保存跟踪 447 14.6.5 重播跟踪 448 第15章 备份和还原 SQL Server 2008 452 15.1 创建备份和还原计划 452 15.1.1 开始备份和还原计划 452 15.1.2 规划镜像与镜像数据库的备份 456 15.1.3 规划被复制数据库的备份 456 15.1.4 规划大型数据库的备份 458 15.1.5 规划备份压缩 458 15.2 选择备份设备和媒体 459 15.3 使用备份策略 461 15.4 创建备份设备 462 15.5 执行备份 464 15.5.1 在SQL Server Management Studio中创建备份 464 15.5.2 使用多个设备的条带备份 468 15.5.3 使用Transact-SQL备份 469 15.5.4 执行事务日志备份 472 15.6 还原数据库 473 15.6.1 数据库损坏及解决方法 473 15.6.2 从正常备份还原数据库 475 15.6.3 还原文件和文件组 479 15.6.4 将数据库还原到不同位置 481 15.6.5 还原丢失的数据 481 15.6.6 创建备用服务器 482 15.6.7 使用Transact-SQL还原命令 483 15.7 还原master数据库 487 第16章 数据库自动化和维护 489 16.1 数据库自动化和维护概述 489 16.2 使用数据库邮件 490 16.2.1 执行初始数据库邮件配置 490 16.2.2 管理数据库邮件配置文件和帐户 495 16.2.3 查看和更改数据库邮件系统参数 496 16.3 使用SQL Server代理 497 16.3.1 访问警报、操作员和作业 497 16.3.2 配置SQL Server代理服务 497 16.3.3 设置SQL Server代理邮件配置文件 498 16.3.4 使用SQL Server代理重新启动服务 499 16.4 管理警报 499 16.4.1 使用默认警报 499 16.4.2 创建错误消息警报 500 16.4.3 处理警报响应 501 16.4.4 删除、启用和禁用警报 503 16.5 管理操作员 503 16.5.1 注册操作员 503 16.5.2 删除和禁用对操作员的通知 504 16.5.3 配置防故障操作员 505 16.6 计划作业 505 16.6.1 创建作业 506 16.6.2 指定或更改作业定义 506 16.6.3 设置执行步骤 508 16.6.4 配置作业计划 511 16.6.5 处理作业警报 514 16.6.6 处理通知消息 514 16.6.7 管理现有作业 515 16.6.8 管理作业类别 516 16.7 自动完成服务器到服务器的日常管理任务 517 16.7.1 在数据库之间复制用户、表、视图和其他对象 517 16.7.2 在数据库之间复制警报、操作员和计划作业 519 16.8 多服务器管理 519 16.8.1 事件转发 520 16.8.2 多服务器作业计划 521 16.9 数据库维护 523 16.9.1 数据库维护清单 523 16.9.2 使用维护计划 524 16.9.3 检查和维护数据库完整性 529 第17章 管理日志传送与数据库镜像 534 17.1 日志传送 534 17.1.1 日志传送:如何工作 534 17.1.2 为日志传送做准备 536 17.1.3 将SQL Server 2000 日志传送升级到 SQL Server 2008日志传送 537 17.1.4 在主数据库上启用日志传送 537 17.1.5 添加日志传送辅助数据库 541 17.1.6 改变事务日志备份的时间间隔 544 17.1.7 改变复制和还原的时间间隔 545 17.1.8 监视日志传送 545 17.1.9 故障转移到辅助数据库 546 17.1.10 禁用和删除日志传送 548 17.2 数据库镜像 548 17.2.1 数据库镜像基础知识 548 17.2.2 配置数据库镜像 549 17.2.3 管理和监视镜像 553 17.2.4 使用故障转移进行恢复 556 17.2.5 删除数据库镜像 557 17.3 使用镜像和日志传送 557 第18章 实施基于策略的管理 559 18.1 基于策略的管理简介 559 18.2 使用基于策略的管理 561 18.3 在整个企业内管理策略 566 18.3.1 导入和导出策略 566 18.3.2 配置中央管理服务器 568 18.3.3 针对多个服务器执行语句 571 18.3.4 配置和管理策略方面 571 18.3.5 创建和管理策略条件 573 18.3.6 创建和管理策略 575 18.3.7 管理策略目标和托管策略 578 18.3.8 评估策略 580 18.3.9 基于策略的管理策略疑难解答 582 译者序   对于数据库管理员来说,SQL Server 2008新增的管理功能,就足以把SQL Server 2008变成令人瞩目的新产品。全新的基于策略的管理、多重服务器查询功能以及数据收集器/管理仓库等,为日常负责管理大型复杂数据库环境的数据库管理员提供了强大的新功能。.   在安全性方面,SQL Server 2005是以数据加密的形式提供数据安全性,在SQL Server 2008中,除了新增的加密函数外,还推出两种大幅增强加密特性的功能:“可扩展密钥管理”和“透明数据加密”。可扩展密钥管理(EKM)功能允许第三方企业密钥管理(EKM)和硬件安全模块(HSM)供应商在SQL Server中注册其设备。一旦注册,SQL Server用户便可以使用在这些模块上存储的加密密钥,并利用这些模块支持的高级加密,比如大容量加密/解密和很多密钥管理函数。透明数据加密(TDE)可对数据和日志文件执行实时I/O加密和解密。   SQL Server 2008引入了对Windows PowerShell的支持。PowerShell是一个功能强大的脚本外壳,管理员和开发人员可以通过它自动执行服务器管理和应用程序部署任务。与Transact-SQL脚本相比,PowerShell语言能够支持更复杂的逻辑,使SQL Server管理员能够生成强大的管理脚本。PowerShell脚本还可用来管理Microsoft的其他服务器产品,这样就为管理员提供了一个跨服务器的公用脚本语言。..   能从SQL Server 2008中获益的不只是数据库管理员,它的许多新功能是为了协助数据库开发人员而设计的。SQL Server 2008提供全新的LINQ to SQL提供程序,让开发人员直接对SQL Server数据表和数据行发出LINQ命令,进一步强化LINQ的性能,以缩短建立新数据查询所花的时间。另外,SQL Server 2008采用全新的FILESTREAM数据类型来处理大型二进制对象。   SQL Server 2008的众多强大功能,相信用户在实际使用过程中会逐一体会。   本书的翻译过程凝聚了很多人的心血,全书主要章节由贾洪峰翻译,其他参与翻译的人员还有张海、时朋泉、罗双华、李强丽、郭辉、缪素芬、王雅丽、李晓晓、刘建静、刘阿娜、蔡广华、黄艳丽、周桦、吴士珍、韩丽、刘建卓、张丛丛、王山花、王亮、刘建喜、韩斌、李锋和王维玲。译者在翻译过程中,尽量保持原书的特色,并对书中出现的术语和难句进行了仔细的推敲与研究,但疏漏和争议之处在所难免,望广大读者提出宝贵的意见。   最后,希望本书成为您的良师益友,为您提供好的指引。...    前言   本书的写作初衷是为SQL Server 2008系统管理员提供简明的、必不可少的参考资源。它涵盖管理员需要知道的用于执行SQL Server核心管理任务的每一方面,是案头必备的重要指南。本书尽量利用有限的篇幅来呈现管理员真正需要的信息,便于他们准确找到需要的信息以快速完成工作。.   有代表性的选项(并不一定使用)。本书最重要的目的之一是保证内容精炼、言简意赅,但同时要保证尽量涵盖更多的内容。不同于动辄上千页的大部头或者只有100页的快速参考,本书是一本有价值的资源指南,它可以帮助管理员方便、快捷地完成任务,解决问题,并且运用先进的SQL Server技术,例如复制、分布式查询和多服务器的系统管理。   本书面向的读者   本书概述了SQL Server的Standard Edition、Enterprise Edition、Developer Edition、Web Edition和Workgroup Edition,目标读者包括以下几类。   ●正在使用SQL Server 2008的数据库管理员。   ●肩负部分管理员职责的熟练用户。   ●从以前版本迁移到SQL Server 2008的管理员。   ●从其他数据库架构转移到SQL Server 2008的管理员。   为了包含尽可能多的知识,我刁;得不假设读者已经具备基本的网络工作技能,并且有SQL Server的基础知识。在这个基础上,我不会花整章的篇幅来介绍SQL Server的结构或者如何运行简单的SQL查询。不过书中会介绍SQL Server的安装、配置、企业级服务器的管理、性能调节、优化和维护等方面的知识。   我也假设读者像熟悉标准的Windows用户界面一样熟悉SQL命令和存储过程。如果需要学习SQL基础知识,应该阅读其他资源(很多资源都可以通过Microsoft.Press获得)。   本书的结构   本书的写作初衷是满足SQL Server日常系统管理的需求,因此本书是按工作任务而不是按SQL Server的功能来组织的。使用本书前应该认识到,“管理员必备指南系列”不同于“管理员完全参考指南系列”。虽然二者都是管理员的参考书籍,但前者简明扼要,后者则比较全面系统,涵盖在企业中部署产品和技术的方方面面。   查阅速度和难易程度是这类必备指南最关键的部分。本书有详细的目录可用于快速找到问题的答案。本书还有很多其他便于快速查阅的特性,例如快速按步骤操作的说明、列表、要点回顾和交叉引用。全书分为几大部分,各部分开始处首先列出包含哪些章。   第Ⅰ部分“SQL Server 2008管理基础”包含SQL Server管理的基础任务。第1章简要介绍SQL Server管理工具、技术和概念。第2章讨论SQL Server的部署。第3章讲述如何设置SQL Server的服务、组件和网络功能。第4章详细解释可用于配置和调整SQL Server的结构。这一章着眼于SQL Server 2008的系统目录,继而讨论目录查询及存储过程。   第Ⅱ部分“SQL Server 2008的系统管理”介绍SQL Server的关键管理任务。第5章详细介绍服务器组和服务器的管理技术。第6章探究如何用SQL Server Management Studio配置和调整SQL Server。读者将借此了解优化内存使用、并行处理、身份验证和审核等方面的知识。第7章介绍用于创建和管理数据库的核心管理任务。按照逻辑延续,第8章介绍管理全文目录、全文索引、非索引字、非索引字表、词库文件和其他全文搜索组件的关键技术。第9章介绍SQL Server的安全性。要管理SQL Server的安全性,管理员要创建用户登录、设置登录权限以及分配角色。管理员分配的权限和角色决定了用户可以执行的操作,也定义了他们可以访问什么类型的数据。..   SQL Server数据管理是第Ⅲ部分的主题。第10章概括介绍创建、管理和优化架构、表、索引与视图的技术。第11章介绍数据的导入和导出,还有旧的备用的批量复制程序(BCP)。第12章的重点在于SQL Server数据库之间的连接,以及和其他数据源的连接。同时还会详细讨论分布式查询、分布式事务、微软分布式事务处理协调器(MSDTC)和链接服务器。第13章讲述数据复制,其中要介绍最新的复制技术,包括合并复制和立即更新订阅。   第Ⅳ部分“SQL Server 2008的优化与维护”,涵盖用于增强和维护SQL Server的管理任务。第14章阐述如何使用服务器日志,监控SQL Server运行情况以及解决运行问题。第15章首先揭示如何建立备份和还原计划。之后,介绍创建和还原备份的一般任务。第16章说明数据库的自动化和维护,描述了如何创建警报、计划作业、处理操作员通知等,其中还要介绍如何创建维护计划和如何解决数据库一致性的问题。第17章首先讨论日志传送和数据库镜像。日志传送和数据库镜像是灾难后恢复解决方案,旨在帮助提高可用性以及快速恢复SQL Server 2008。第18章介绍实现基于策略的管理(Policy-Based Management)所需的关键任务。基于策略的管理中定义的策略不仅包括用于配置SQL Server设置的,还涉及是否更改设置及如何更改设置。在部署SQL Server 2008之前,应该熟悉可以使用的各个选项,并确定是否将服务器放入特定的管理组。   本书的约定   本书采用多种方法来保证内容清晰易懂。要求读者实际输入的命令采用粗体显示,代码采用等宽字体。本书还有以下特色段落。   ●注意对某一个需要着重强调的知识点提供额外的详细说明。 .  ●提示提供有帮助的提示或额外的信息。   ●警告可能出现需要注意的潜在问题时发出警告。   ●实践提示讨论内容较深的主题时,提供实际的建议。   ●最佳实践介绍当使用高级配置和管理概念时,可以采用的最好的技术。   我真心希望读者能发现本书提供了使用SQL Server快速高效执行重要管理任务所需的所有知识。如有任何意见,欢迎发送电子邮件至williamstanek@aol.com,或访问http://www.williamstanek.com/。   支持   我们尽全力保证本书的准确性。Microsoft Press通过万维网提供本书勘误,网址为http://mspress.microsoft.com/support/。   如果您对本书有任何看法、问题或者想法,请通过以下任何一种方式告知我们。   通信地址:   Microsoft Press   Attn:Microsoft SQL Server 2008   Administrator's Pocket Consultant Editor   One Microsoft Way   Redmond,WA 98052-6399   电子邮箱:   mspinput@microsoft.com   请注意,以上的地址不提供产品支持,关于支持信息,请访问http://support.microsoft.com/default.aspx。   在线查找信息   如要从Microsoft Press获得更多信息,请访问新的Microsoft Press Online网站,它提供了“一站式”的在线资源访问平台,可以浏览Microsoft Press出版的众多在业界领先的书籍及其相关的更新、样章、文章、脚本和电子书。网址为http://www.microsoft.com/learning/books/online/developer和http://www.microsoft.com/learning/books/online/serverclient
pdf
发布资源于 8 年前

SQL Server 2008数据库设计与实现(关系数据库实现的通关宝典)--随书源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《SQL Server 2008数据库设计与实现》的随书源代码 对应的书籍资料见: SQL Server 2008数据库设计与实现(关系数据库实现的通关宝典) 基本信息 原书名: Pro SQL Server 2008 Relational Database Design and Implementation 原出版社: Apress 作者: (美)Louis Davidson    Kevin Kline    译者: 程桦 张绪业 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115215543 上架时间:2009-10-30 出版日期:2009 年11月 开本:16开 页码:560 版次:1-1 编辑推荐    资深数据库专家的心血力作    SQL Server设计思想的独到解析    关系数据库实现的通关宝典 内容简介   本书深入浅出地介绍了目前世界上最受欢迎的数据库管理系统之一——sql server。全书共分三个部分:第一部分阐释了数据库的基本概念,讲解了数据库建模语言;第二部分展示了从概念建模到在 sql server 2008上真正实现数据库的过程;第三部分深入探讨了 sql server若干方面的技术细节,如数据保护、索引、并发访问等。通过将理论融入数据库实践,清晰地讲解了关系型数据库的设计原则,完整地展示了如何进行良好的关系型数据库设计,深入揭示了 sql server 2008的技术细节。.   本书浓缩了作者作为 sql server数据库架构师多年来丰富的实践经验,适合各类数据库开发和管理人员学习参考。... 作译者 作者:   Kevin Kline是Quest软件公司SQL Server解决方案的技术战略经理。Kevin从2004年开始就是微软的SQL Server MVP,他是国际SQLServer专家联盟(PASS)创辽委员会的成员和下一届总裁。他独自写作或参与合著了好几本书,包括SQL in a Nutshell(O'Reilly,2004)、Pro SQL Server 2005 Database Design and Optimization(Apress,2006)以及Database Benchmarking:Practical Methods for Oracle&SQL; Server(Rampant,2007)。Kevin给SQL Server Magazine和Database Trendv and Applications杂志供稿,他的博客可以在SQLBlog.com和SQLMag.com上找到。在世界范围内的会议上,比如微软的Tech Ed、PASS社区峰会、微软汀论坛、DevTeach以及SQLConnections,Kevin也是人气最高的演讲者。从1986年开始Kevin就活跃在IT工业中。..   Kurt Windisch是Levi,Ray,and Shoup,Inc.公司内部IT部门的应用程序监管,该公司是——家技术方案的全球供应商,总部位于伊利诺伊州的Springfield。Kurt在IT工业中的经验超过了17年。他在SQL Server专家联盟的董事会中服务了5年,为很多SQL Server杂志供过稿,也在讨论SQL Server数据库编程的国际会议上发过言。   Louis Davidson,作为企业数据库开发人员和架构师,他拥有超过15年的工作经验。目前他是田纳西州Nashville的Christian广播网络和NorthStar工作室的数据架构师。对于Louis而言,他全部的职业经验几乎都与微软的SQL Server有关,从早期版本一直到当前最新版本的Beta版。Louis是一本讲数据库设计的书的4个版本的主要作者。Louis主要的兴趣领域是数据库架构和用T-SQL编码,并且,他设计过许多数据库,在这许多年中编写过数以千计的存储过程和触发器。   Scott Klein是一位独立咨询师,对SQL Server、.NET和XML相关的所有知识都充满热情。他是几本书的作者,这包括Professional SQL Server 2005 XML(Wrox,2006)和Professional LINQ(Wrox,2008),他还为SQL PASS Community Connector写每两周一次的特辑文章。他也为好几个网站供稿,这包括Wrox(http://www.wrox.com)和TopXML(http://www.topxml.com)。他经常同佛罗里达附近的SQL Server和.NET用户群体交流。Scott住在佛罗里达的Wellington,当他不坐在计算机前时,你会发现他和自己的家人在一起,或者骑着他的雅马哈摩托车轰鸣在当地的摩托车越野赛赛道上。你可以通过ScottKlein@SqlXml.com联系他。 目录 封面 -17 封底 -16 扉页 -15 版权 -14 译者序 -13 关于作者 -12 序 -11 前言 -10 致谢 -6 目录 -4 第1章 数据库概念简介 1 1.1 数据库设计阶段 2 1.1.1 概念阶段 3 1.1.2 逻辑阶段 5 1.1.3 实现阶段 5 1.1.4 物理阶段 6 1.2 关系数据结构 6 1.2.1 数据库和模式 6 1.2.2 表、行和列 7 1.2.3 信息原则 10 1.2.4 域 12 1.2.5 元数据 13 1.2.6 键 13 1.2.7 未显式赋值的项(NULL) 18 1.3 实体之间的关系 20 1.3.1 二元关系 21 1.3.2 非二元关系 24 1.4 数据访问语言(SQL) 24 1.5 理解依赖性 25 1.5.1 函数依赖性 26 1.5.2 判定 26 1.6 总结 27 第2章 数据建模语言 28 2.1 数据建模介绍 28 2.2 实体 29 2.3 属性 32 2.3.1 主键 33 2.3.2 替代键 35 2.3.3 外键 35 2.3.4 域 36 2.3.5 命名 38 2.4 关系 39 2.4.1 识别性关系 40 2.4.2 非识别性关系 40 2.4.3 角色名字 43 2.4.4 关系基数 44 2.4.5 动词短语(关系名字) 49 2.5 描述信息 51 2.6 其他建模方法 52 2.6.1 信息工程 53 2.6.2 Chen ERD 54 2.6.3 Visio 55 2.6.4 Management Studio数据库关系图 56 2.7 最佳实践 57 2.8 总结 57 第3章 概念阶段数据建模 59 3.1 理解需求 60 3.2 文档化过程 61 3.3 需求收集 62 3.3.1 客户访谈 63 3.3.2 要回答的问题 64 3.3.3 现存的系统和原型 67 3.3.4 其他类型的文档 67 3.4 识别对象和过程 69 3.4.1 识别实体 70 3.4.2 实体间关系 76 3.4.3 识别属性和域 82 3.5 识别业务规则和业务过程 90 3.5.1 识别业务规则 90 3.5.2 识别基础业务过程 92 3.6 完成概念模型 93 3.6.1 识别明显的、额外的数据需求 94 3.6.2 和客户一起评审 95 3.6.3 重复以上步骤直到客户同意你的模型 95 3.7 最佳实践 95 3.8 总结 96 第4章 规范化过程 97 4.1 为什么要规范化 98 4.1.1 消灭重复数据 98 4.1.2 避免编写不必要的代码 98 4.1.3 给表瘦身 98 4.1.4 最大化聚集索引的使用 99 4.1.5 降低每张表中索引的数量 99 4.2 规范化应该走多远 99 4.3 规范化过程 100 4.4 实体和属性的形式:第一范式 100 4.4.1 所有属性必须是原子的 101 4.4.2 实体的所有实例必须包含相同数量的值 104 4.4.3 实体中出现的所有实体类型都必须不同 106 4.4.4 第一范式所避免的不规则编程 106 4.4.5 当前设计不符合第一范式的线索 110 4.5 属性间的关系 111 4.5.1 第二范式 111 4.5.2 第三范式 116 4.5.3 Boyce-Codd范式 121 4.6 实体中的多值依赖 124 4.6.1 第四范式 124 4.6.2 第五范式 135 4.7 非规范化 136 4.8 最佳实践 136 4.9 总结 137 4.10 额外的例子 137 4.11 本书迄今为止所讲述的故事 142 第5章 实现基础的表结构 144 5.1 评审逻辑设计 147 5.2 变换设计 148 5.2.1 选择名字 148 5.2.2 处理子类型 151 5.2.3 决定树的实现方式 155 5.2.4 选择键的实现方式 156 5.2.5 决定域的实现方式 161 5.2.6 设置模式 172 5.2.7 评审“最终的”实现模型 172 5.3 实现设计 173 5.3.1 创建基本表结构 175 5.3.2 添加唯一性约束 183 5.3.3 构建默认约束 189 5.3.4 添加关系(外键) 195 5.3.5 处理排序规则和排序 205 5.3.6 计算列 209 5.3.7 实现用户定义的数据类型 212 5.3.8 文档化你的数据库 220 5.3.9 处理依赖信息 222 5.4 最佳实践 225 5.5 总结 226 第6章 保护数据的完整性 228 6.1 最佳实践 229 6.2 自动数据保护 231 6.2.1 声明性数据保护 231 6.2.2 基本语法 233 6.2.3 基于简单表达式的CHECK约束 235 6.2.4 基于函数的CHECK约束 237 6.2.5 约束引起的错误 242 6.2.6 DML触发器 244 6.2.7 处理来自触发器和约束的错误 277 6.3 手动数据保护 280 6.4 更多最佳实践 287 6.5 总结 287 第7章 模式与查询技术 289 7.1 预计算值 290 7.1.1 序列表 290 7.1.2 日期计算 297 7.2 二进制大型对象(BLOB) 305 7.3 存储用户自定义数据 307 7.3.1 一长串通用列 308 7.3.2 实体-属性-值(EAV) 309 7.3.3 往表中增加列 313 7.4 通用实现对象 318 7.5 反模式 319 7.5.1 多用途键域 320 7.5.2 通用键引用 322 7.5.3 对非结构化数据的过度使用 325 7.6 总结 326 7.7 回顾与展望 326 第8章 数据访问安全 328 8.1 安全主体与安全对象 329 8.2 数据库安全概述 330 8.2.1 模拟 331 8.2.2 权限 333 8.2.3 控制对象访问 334 8.2.4 角色 338 8.2.5 模式 344 8.3 通过T-SQL编程对象控制对象访问 345 8.3.1 存储过程和标量函数 346 8.3.2 对象内模拟 347 8.3.3 跨数据库边界 352 8.3.4 不同的服务器(分布式查询) 357 8.4 视图与表值函数 357 8.4.1 一般用法 358 8.4.2 使用视图实现可配置的行级安全 360 8.5 数据混淆 364 8.6 监视与审核 367 8.6.1 服务器与数据库审核 367 8.6.2 使用DML触发器查看表的变更历史 371 8.6.3 DDL触发器 374 8.6.4 分析器日志 377 8.7 最佳实践 379 8.8 总结 380 第9章 表结构与索引 382 9.1 数据库物理结构 383 9.1.1 文件与文件组 383 9.1.2 分区与页 386 9.1.3 页中的数据 388 9.1.4 分区 391 9.2 索引概览 393 9.3 基本索引结构 393 9.4 索引类型 395 9.4.1 聚集索引 395 9.4.2 非聚集索引 397 9.4.3 聚集表上的非聚集索引 398 9.5 索引创建的基本方法 400 9.6 基本的索引使用模式 402 9.6.1 使用聚集索引 403 9.6.2 使用非聚集索引 405 9.6.3 使用唯一索引 416 9.7 高级的索引使用案例 416 9.7.1 外键索引 416 9.7.2 索引视图 419 9.8 最佳实践 422 9.9 总结 423 第10章 并发编程 425 10.1 什么是并发 426 10.2 查询优化的基础知识 427 10.3 操作系统与硬件因素 428 10.4 事务 429 10.4.1 事务语法 430 10.4.2 已编译的SQL Server代码 437 10.5 SQL Server并发控制 444 10.5.1 锁 445 10.5.2 隔离级别 448 10.6 完整性与并发性编程 459 10.6.1 悲观锁定 459 10.6.2 实现单线程代码块 461 10.6.3 乐观锁定 463 10.6.4 基于行的锁定 464 10.6.5 逻辑工作单元 469 10.7 最佳实践 470 10.8 总结 471 第11章 数据访问策略 472 11.1 即席SQL 473 11.1.1 优点 474 11.1.2 缺陷 480 11.2 存储过程 484 11.2.1 封装性 485 11.2.2 动态存储过程 486 11.2.3 安全性 488 11.2.4 性能 490 11.2.5 缺陷 491 11.2.6 观点 495 11.3 T-SQL与CLR(公共语言运行时) 497 11.3.1 选择T-SQL的准则 500 11.3.2 选择.NET的准则 501 11.3.3 CLR对象类型 501 11.4 最佳实践 503 11.5 总结 504 附录A Codd的RDBMS十二法则 506 附录B 标量数据类型参考 511 索引 538 译者序   如果将数据库称为现代数字生活的基础,那么这样的说法一点也不夸张——大型企业应用、网站,所有这些东西的背后,都是数据库在支撑。并且,最终说来,产生价值的并不是绚丽的界面和现代化的输入方式,而是存放在数据库中的数据。不幸的是,虽然关系型数据库历经了约30年的发展,有成熟的理论和大量的实践基础,但是,大多数设计、开发人员在设计数据库结构时仍然是“跟着感觉走”,根据业务的需要和编程的方便,把字段这张表放几个那张表放几个完事。对这样设计出来的数据库,只需多问几个为什么——业务模型是如何体现的?数据完整性如何保证?性能是如何权衡的?——恐怕设计者就该崩溃了。.   这也难怪,设计、开发人员在学校中学习数据库时,理论书籍离实际开发较远——试问有几个人能够以可实践的方式把规范化的几条原则阐述清楚?在工作时,使用的数据库资料和书籍又往往是“手册型”,大多仅仅讲解特定数据库提供的功能。   正如作者所说——“我的书目标很简单,那就是填补这个空白,架起学院教科书与通常针对SQL Server所写的,纯粹面向实践的书之间的桥梁”。翻译的过程中,译者感到此言不虚:作者从数据库的基本概念到数据库建模,从如何运用规范化原则到如何做成实际的数据库表,从如何保护数据库完整性到如何提高数据库的性能,从数据库的安全机制到并发事务控制,从数据库设计开发的常用模式到应用程序的数据访问策略,既有理论又紧扣实践。阅读本书的过程,就是把一些以前模糊地知道,但又觉得很难运用的理论实实在在地运用到实践中的过程。   虽然本书是针对SQL Server这个特定数据库平台来阐述理论和实践的,然而,本书所体现的思想和方法,完全可以运用到其他关系数据库平台上。..   翻译的时间很紧,如果没有家人的支持和理解,很难想象如何完成这项工作。   感谢人民邮电出版社图灵公司很好地推动了这本书的翻译工作。另外,图灵公司的论坛上丰富的资料和活跃的讨论也使我们眼界大开,受益良多。   翻译工作并非阐述自己的思想,翻译的第一要务是忠实地传达原著者的思想。虽然无法自由地表达自己的想法,然而,翻译的快乐就在于:使另一个人的好想法能让更多的人了解。当然,由于时间紧张,译者水平有限,错误粗糙之处相信不在少数,敬请广大读者批评指正。   感谢我的妻子魏萍,你容忍我一吃完饭就坐到计算机前。谢谢女儿程灵馨,在爸爸不能陪你玩时,5岁的你居然也表示理解。谢谢作者Louis Davidson,你耐心地回答了我的问题。   程桦   感谢我的未婚妻张艳,是你的鼓励和体贴让我在寒冷的冬日伏案不辍。还要感谢我的家人,你们殷殷的期盼让我产生了对知识的不渝追求。...   张绪业   2009年5月    前言   我经常扪心自问,“为什么要做这件事?为什么还要写新版本?这值得吗?如果我抛开书去打任天堂游戏机,我是不是能帮超级玛丽快点把公主救出来?”在微软MVP 2008年峰会上,这些问题都由一位MVP帮我回答了。他感谢我写了这本书,说他曾经试着读点这方面的大学教材,但那些书都太难了,读不太懂。.   “喔,是的,”我想,“那是我最开始要写这本书的原因。”当我最早开始设计数据库时,我从几位伟大的导师那里学到了不少东西,但是,当我想进一步深入研究时,我开始寻找数据库设计方面的材料,但没找着多少。我找到的最好的一本书是Chris Date的An Introduction to Database Systems(Addison Wesley,2003),然后我读了自己能读懂的部分。然而,我很快就有点晕头转向,没法做到一旦理解了概念之后,就能很好地将关于设计的理论转换到真正的、同时较为简单的设计过程中去。在我所使用的Chris和其他人的教材中,很明显,创建关系模型这件事包含了太多理论,甚至是数学知识。   如果你想要成为一名理论家,那Chris的书就是必读的,当然,除此之外还有很多可以参考的书(最好去看看http://www.dbdebunk.com/books.html,你会找到更多的书)。问题在于,这些书大多数都包含了太多的理论,超出了一般实践工作者所需了解的(或者愿意花时间去读的)内容,并且它们没有真正地深入到实际数据库系统的实现中去。我的书的目标很简单,那就是填补这个空白,在大学教材与通常针对SQL Server所写的、纯粹面向实践的书之间架起一座桥梁。我的目的不是顶替这些书,完全不是,在我的书架上有很多这样的书。本书更像是一本面向技术的书,而不是讲解SQL Server功能的使用手册。我将介绍关系引擎的大多数典型功能,教给你使用它们的技术。然而,我不能说这是你书架上需要的唯一一本书。   如果你有本书以前的版本,你可能会问为什么还需要这个新版本,我了解你的感受。我花了大量时间找出应该买这个新版本的理由,而这个理由并不那么明显——那就是,我现在涵盖了2008的所有功能。很明显,这只是部分原因,最重要的是,我一直在努力加入更多新内容让你的工作更轻松。我加入了一章(第7章)介绍开发模式,每一章中也都加入了大量新材料,从而能帮你改进数据库设计。   诗人和剧作家奥斯卡王尔德曾经说过:“只有年轻人才会无所不知。”现在回头看时有点后悔,自己在写第一本书Professional SQL Server 2000 Database Design之前,以为自己什么都知道。正是那种无知和放纵不羁的热情,才让我有勇气写下第一本书。最后,我确实完成了第一本书,它之所以还不错,主要归功于技术编辑给予的批评。并且,如果我没有最初那种驱使我写完书的热情的话,我也不可能写这本书的第四版。无论如何,如果你花几周的时间逐章逐节地比较了这些书的每个版本的话,你会发现这是个内容逐步丰富的过程,而且作者也在逐步成熟。   过程的逐步丰富和作者的逐渐成熟都有其原因。一个原因是过去两个版本以来我所碰到的编辑:首先是Tony Davis,现在是Jonathan Gennick。他们两人对我的文风都多有指摘,并且他们把本书的结构调整得很棒。另一个原因可以简单地归结为经验,因为从我开始写第一版以来已经过了8年。但是,书中所用的材料之所以有进步,最大的原因还是它们经过了检验。一方面我在对别人贡献着自己的好评论,另一方面我也收到了大量关于如何改进的反馈(其中一些评论可不那么友善)。我非常用心地倾听,从书发布那天开始就记一系列笔记。对于我能用得上的任何反馈,我都会感到很高兴。可以用电子邮件联系我(louis@drsql.org),如果你愿意也可以在我的网站(drsql.org)留下匿名反馈。你可以在网站上找到一个附录,里面含有我希望自己在写这本书时就了解了的材料。   数据库设计的目的   数据库设计的目的是什么?你到底为什么要关心这事?主要的原因是设计良好的数据库用起来很简单,因为所有东西都在其应处于的逻辑位置上。这非常像一个收拾得很好的橱柜,如果你需要红辣椒粉,直接到调味品搁架的红辣椒粉那格就能取到,这就比到处乱找要强得多。但是,许多系统组织得一团糟。即使每件东西都有一个分好的地方,如果找起来很困难,那件东西也就没啥价值了。想象如果一本电话簿完全没有排序会如何?或者,编排字典的时候把词任意放在文字中能放下的地方又会如何?数据库如果组织良好的话,即使要写一两个联结,你也可以靠本能就知道去哪里获取需要的数据。我的意思是,说到底,这难道不是件很有趣的事吗?..   你也可能吃惊地发现,数据库设计是件相当简单的任务,不像听起来那么困难。与随着项目进行而拼凑数据存储相比,要做好这件事需要在项目一开始多花些时间,但是,在项目的整个生命周期中,这样做能获得相应回报。要想正确地进行数据库设计,我们面对的最具挑战性的问题是:与不做设计相比,正确地设计数据库会花更多的时间(在项目计划会议上,关于时间的争论经常发生)。因为数据库设计没有什么可见的东西来让客户感到赏心悦目,因此这一阶段经常会被压缩,目的就是让事情看起来进行得较快。对于普通客户而言,即使是最没有挑战性、最不让人感兴趣的用户界面也比最漂亮的数据模型要吸引人得多。虽然一般说来,数据才是投资创建系统的最终原因,但是,用户界面编程往往占据了中心地位。并不是说你的同事没有注意到一个糟糕的数据模型与一个漂亮的数据模型之间的区别,他们确实注意到了,但是,当程序员需要编码时,往往会顾不上考虑如何能正确地存储数据。我希望自己知道这个难题的答案,因为要是有这个答案,我的书会卖出一百万本。本书将努力提供一些技术和过程,帮助你进行数据库设计,力求对新手清晰易懂,对老练的专家也有所助益。   这个设计和架构数据存储的过程与数据库安装和管理的角色并不相同。例如,作为数据架构师的角色,我很少去创建用户、执行备份,或者去设置复制与集群。我很少谈及这些任务,它们被认为是管理工作,由DBA角色担当。既是开发人员又是DBA的人并不罕见(实际上,如果你在小公司工作,你会发现自己担当了多个角色,以至于不堪重负),但是,如果你能将自己的思维与偏重实现的角色相分离,从而使你能更多地思考数据有多难用,那么一般说来,你设计出的东西会好很多。对许多情况而言,数据库设计没有看起来那样困难。   注解为安全起见,我要澄清一件事:如果你做过任何编程工作的话,毫无疑问,你会反对本书中的某些观点和意见。我完全同意本书不是什么Katmai 的圣路易斯 福音书。我的意见和观点来自于超过16年对数据库的学习、在数据库上的工作,并且由来自于许多不同的人、书、大学课堂和研讨会的知识所补充。我在“致谢”一节已经感谢了其中的许多人,但是,我忘掉的人名也数以百计,我脑中铭刻的某些知识精华就来自于他们。本书所展示的设计方法是所有这些思想的集合。我希望本书能被看作是个有用的学习工具。通过阅读本书和其他人的著作,再实践你自己的想法,你将会总结出自己的方法论,它会适合你自己,并使你成为成功的数据库设计人员。   本书的结构   本书由如下各章组成。   第1章:数据库概念简介。该章提供了对关键术语和概念的简要概览。   第2章:数据建模语言。该章的作用是介绍数据架构师的主要工具——模型。该章详细介绍了一种建模语言——IDEF1X,因为它是本书中用于展示数据库设计的建模语言。还介绍了其他几种常见的建模语言,因为某些读者或者出于偏爱、或者由于公司的要求会使用这些类型的模型。   第3章:概念阶段数据建模。在概念阶段数据建模中,我们的目标是讨论这样的过程:引入顾客的需求集合,将表、列、关系和业务规则放入数据模型格式中相应的地方。   第4章:规范化过程。数据库设计过程的下一步是规范化。规范化的目标是将表、列、关系和业务规则的集合格式化为每个值只在一个地方存储、每张表只代表一个单一实体的形式。在最初几次进行规范化时,这个过程会感觉不太自然,因为你不用琢磨如何使用数据,却必须琢磨数据本身以及结构会如何影响数据的质量。然而,一旦你掌握了规范化,那么,不以规范化的方式存储数据就会让人觉得不舒服。   第5章:实现基础的表结构。在数据库设计过程中,这是第一个要启动SQL Server,开始写脚本来构建数据库对象的时间点。该章讨论了构造表(包括为列选择数据类型)及关系,其中提到了实现后的结构可能与我们在规范化过程中得到的模型不一致的问题。   第6章:保护数据的完整性。除了要将数据安排在表和列中之外,也需要实现其他业务规则。在SQL Server中,保证数据完整性条件得以满足的第一条防线由CHECK约束与触发器构成,因为用户无法轻易绕开由约束和触发器进行的验证。这一章还讨论了其他几种保护数据的方法,它们可以用存储过程和客户端代码来实现。   第7章:模式和查询技术。除了设计表时的各种基本技巧之外,我们还利用几种技巧来构成常见的数据/查询接口,从而方便未来的查询和使用。该章讨论了几种常见的、有用的模式,同时也观察了某些人需要使用的一些模式——有些查询需求的接口实现对你来说非常困难,而这些模式能使它们变得更简单些。 .  第8章:数据访问安全。这些日子以来,安全问题几乎在每个程序员的头脑中都占据了很重要的位置。该章讨论了用来在系统中实现数据安全的某些策略,比如使用视图、触发器、加密,甚至使用SQL ServerProfiler等。   第9章:表结构与索引。该章展示了如何在SQL Server中建立表结构的基础知识,以及某些对数据进行索引以获得更好性能的策略。   第10章:并发编程。数据库设计和实现过程的一部分是不仅要考虑结构,而且还要考虑如何在多个用户之间最大化资源的利用率。该章描述了几种策略,它们都与如何在你的数据访问和修改代码中实现并发相关。   第11章:数据访问策略。该章讨论了关于编写代码来访问SQL Server的许多概念和问题。比较了即席SQL与存储过程(包括两者面对的所有风险和挑战,比如计划的参数化、性能、开发投入、可选参数、SQL注入等),同时也讨论了T-SQL还是CLR对象更好,其中包括用CLR来编码不同类型的对象的示例。有关CLR的材料由Kurt Windisch提供,可以下载的CLR示例代码也由他提供。   附录A:Codd的RDBMS十二法则。本附录介绍了Codd关于数据库应该如何实现的创新的十二条原则。随着硬件的发展,我们离实现他的梦想越来越近。   附录B:标量数据类型参考。本附录介绍了可以被合法地当作标量类型的所有类型,为什么要用它们,以及它们的实现信息和其他细节。   再一次强调,给我反馈时不用犹豫,任何时候都不要犹豫(只要你不在早上3点给我打电话就行)。对任何章节,我都将努力改善大家发现还有所欠缺的地方,并将改善后的内容发布到我的博客上(http://sqlblog.com/blogs/louis_davidson),其标签为DesignBook,同时也会发布到我的网站上(http://drsql.org/ProSQLServerDatabaseDesign.aspx)。如果有什么新的想法或者找到了一些错误,或者有额外的资料,我都会将其添加在这两个地方。因为这是一本书,而不再是零零星星的资料,这两处是我能想到并选来发布信息的地方。...    序言   数据库设计是Louis和我都热衷的事情。今年秋季,我将幸运地和我的朋友Louis Davidson登上同一个舞台。我们将在DevLink会议上演讲,地点是Louis的家乡Nashville,然后,在西雅图的PASS上我们也将同台演讲。在这两次演讲中,我们都将针对数据库设计这个题目开展讨论和辩论,并探讨对以数据为中心的应用来说数据库设计有多关键。.   数据库设计是门科学也是门艺术。规范化应该说是门科学,而确定实体的范围则是一门艺术,需要具有与各种数据库打交道的经验才能学到手。优雅的解决方案都有一种简单的美。Louis不止是位作者和数据库设计人员,也是一位大师级技师。在本书中,你会发现字里行间都隐藏着作者的呼吁——改善你的技能,精心雕刻出能够经受时间考验的数据库,创造一个能让开发人员充分施展拳脚的、虚拟的数据世界。..   数据库设计是每个以数据为中心的应用的基石。一个优雅的数据库设计使得数据一目了然、容易查询,并且使用有效的、基于集的查询将开发人员武装起来,使他们获得成功。但是,如果数据库设计就很糟糕,则无论多少代码也无法补偿,也无法为数据库加上缺失的功能。对任何以数据为中心的应用来说,没有什么角色比数据建模人员这个角色更为重要。用户界面换来换去,但是,即使经历了好几代应用编程语言,数据仍然存在着。数据库架构上犯下的错误迟早会被未来的程序员诅咒,即使他现在还未出生,即使他用的是现在还没发明的语言和工具。在我的好朋友Louis的指导下,多花一点时间来润色你的数据库设计,绝对是件值得的事。   因此,欢迎你阅读本书,这是Louis针对软件世界最重大的工作所写的战地指南的第三版。能够为本书作序我感到无比愉快。...   Paul Nielsen   SQL Server MVP    媒体评论   “跟本书的2005版一样,我认为Louis的这本书写得非常好,信息量极其丰富而且实践性强。阅读过程中,你会觉得是在跟作者讨论问题。我喜欢这本书,还因为它有自己的观点,而非从在线图书中照搬过来……”   —— Amazon读者评论...   
rar
发布资源于 8 年前

SQL Server 2008数据库设计与实现(关系数据库实现的通关宝典)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server 2008数据库设计与实现(关系数据库实现的通关宝典) 基本信息 原书名: Pro SQL Server 2008 Relational Database Design and Implementation 原出版社: Apress 作者: (美)Louis Davidson    Kevin Kline    译者: 程桦 张绪业 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115215543 上架时间:2009-10-30 出版日期:2009 年11月 开本:16开 页码:560 版次:1-1 编辑推荐    资深数据库专家的心血力作    SQL Server设计思想的独到解析    关系数据库实现的通关宝典 内容简介   本书深入浅出地介绍了目前世界上最受欢迎的数据库管理系统之一——sql server。全书共分三个部分:第一部分阐释了数据库的基本概念,讲解了数据库建模语言;第二部分展示了从概念建模到在 sql server 2008上真正实现数据库的过程;第三部分深入探讨了 sql server若干方面的技术细节,如数据保护、索引、并发访问等。通过将理论融入数据库实践,清晰地讲解了关系型数据库的设计原则,完整地展示了如何进行良好的关系型数据库设计,深入揭示了 sql server 2008的技术细节。.   本书浓缩了作者作为 sql server数据库架构师多年来丰富的实践经验,适合各类数据库开发和管理人员学习参考。... 作译者 作者:   Kevin Kline是Quest软件公司SQL Server解决方案的技术战略经理。Kevin从2004年开始就是微软的SQL Server MVP,他是国际SQLServer专家联盟(PASS)创辽委员会的成员和下一届总裁。他独自写作或参与合著了好几本书,包括SQL in a Nutshell(O'Reilly,2004)、Pro SQL Server 2005 Database Design and Optimization(Apress,2006)以及Database Benchmarking:Practical Methods for Oracle&SQL; Server(Rampant,2007)。Kevin给SQL Server Magazine和Database Trendv and Applications杂志供稿,他的博客可以在SQLBlog.com和SQLMag.com上找到。在世界范围内的会议上,比如微软的Tech Ed、PASS社区峰会、微软汀论坛、DevTeach以及SQLConnections,Kevin也是人气最高的演讲者。从1986年开始Kevin就活跃在IT工业中。..   Kurt Windisch是Levi,Ray,and Shoup,Inc.公司内部IT部门的应用程序监管,该公司是——家技术方案的全球供应商,总部位于伊利诺伊州的Springfield。Kurt在IT工业中的经验超过了17年。他在SQL Server专家联盟的董事会中服务了5年,为很多SQL Server杂志供过稿,也在讨论SQL Server数据库编程的国际会议上发过言。   Louis Davidson,作为企业数据库开发人员和架构师,他拥有超过15年的工作经验。目前他是田纳西州Nashville的Christian广播网络和NorthStar工作室的数据架构师。对于Louis而言,他全部的职业经验几乎都与微软的SQL Server有关,从早期版本一直到当前最新版本的Beta版。Louis是一本讲数据库设计的书的4个版本的主要作者。Louis主要的兴趣领域是数据库架构和用T-SQL编码,并且,他设计过许多数据库,在这许多年中编写过数以千计的存储过程和触发器。   Scott Klein是一位独立咨询师,对SQL Server、.NET和XML相关的所有知识都充满热情。他是几本书的作者,这包括Professional SQL Server 2005 XML(Wrox,2006)和Professional LINQ(Wrox,2008),他还为SQL PASS Community Connector写每两周一次的特辑文章。他也为好几个网站供稿,这包括Wrox(http://www.wrox.com)和TopXML(http://www.topxml.com)。他经常同佛罗里达附近的SQL Server和.NET用户群体交流。Scott住在佛罗里达的Wellington,当他不坐在计算机前时,你会发现他和自己的家人在一起,或者骑着他的雅马哈摩托车轰鸣在当地的摩托车越野赛赛道上。你可以通过ScottKlein@SqlXml.com联系他。 目录 封面 -17 封底 -16 扉页 -15 版权 -14 译者序 -13 关于作者 -12 序 -11 前言 -10 致谢 -6 目录 -4 第1章 数据库概念简介 1 1.1 数据库设计阶段 2 1.1.1 概念阶段 3 1.1.2 逻辑阶段 5 1.1.3 实现阶段 5 1.1.4 物理阶段 6 1.2 关系数据结构 6 1.2.1 数据库和模式 6 1.2.2 表、行和列 7 1.2.3 信息原则 10 1.2.4 域 12 1.2.5 元数据 13 1.2.6 键 13 1.2.7 未显式赋值的项(NULL) 18 1.3 实体之间的关系 20 1.3.1 二元关系 21 1.3.2 非二元关系 24 1.4 数据访问语言(SQL) 24 1.5 理解依赖性 25 1.5.1 函数依赖性 26 1.5.2 判定 26 1.6 总结 27 第2章 数据建模语言 28 2.1 数据建模介绍 28 2.2 实体 29 2.3 属性 32 2.3.1 主键 33 2.3.2 替代键 35 2.3.3 外键 35 2.3.4 域 36 2.3.5 命名 38 2.4 关系 39 2.4.1 识别性关系 40 2.4.2 非识别性关系 40 2.4.3 角色名字 43 2.4.4 关系基数 44 2.4.5 动词短语(关系名字) 49 2.5 描述信息 51 2.6 其他建模方法 52 2.6.1 信息工程 53 2.6.2 Chen ERD 54 2.6.3 Visio 55 2.6.4 Management Studio数据库关系图 56 2.7 最佳实践 57 2.8 总结 57 第3章 概念阶段数据建模 59 3.1 理解需求 60 3.2 文档化过程 61 3.3 需求收集 62 3.3.1 客户访谈 63 3.3.2 要回答的问题 64 3.3.3 现存的系统和原型 67 3.3.4 其他类型的文档 67 3.4 识别对象和过程 69 3.4.1 识别实体 70 3.4.2 实体间关系 76 3.4.3 识别属性和域 82 3.5 识别业务规则和业务过程 90 3.5.1 识别业务规则 90 3.5.2 识别基础业务过程 92 3.6 完成概念模型 93 3.6.1 识别明显的、额外的数据需求 94 3.6.2 和客户一起评审 95 3.6.3 重复以上步骤直到客户同意你的模型 95 3.7 最佳实践 95 3.8 总结 96 第4章 规范化过程 97 4.1 为什么要规范化 98 4.1.1 消灭重复数据 98 4.1.2 避免编写不必要的代码 98 4.1.3 给表瘦身 98 4.1.4 最大化聚集索引的使用 99 4.1.5 降低每张表中索引的数量 99 4.2 规范化应该走多远 99 4.3 规范化过程 100 4.4 实体和属性的形式:第一范式 100 4.4.1 所有属性必须是原子的 101 4.4.2 实体的所有实例必须包含相同数量的值 104 4.4.3 实体中出现的所有实体类型都必须不同 106 4.4.4 第一范式所避免的不规则编程 106 4.4.5 当前设计不符合第一范式的线索 110 4.5 属性间的关系 111 4.5.1 第二范式 111 4.5.2 第三范式 116 4.5.3 Boyce-Codd范式 121 4.6 实体中的多值依赖 124 4.6.1 第四范式 124 4.6.2 第五范式 135 4.7 非规范化 136 4.8 最佳实践 136 4.9 总结 137 4.10 额外的例子 137 4.11 本书迄今为止所讲述的故事 142 第5章 实现基础的表结构 144 5.1 评审逻辑设计 147 5.2 变换设计 148 5.2.1 选择名字 148 5.2.2 处理子类型 151 5.2.3 决定树的实现方式 155 5.2.4 选择键的实现方式 156 5.2.5 决定域的实现方式 161 5.2.6 设置模式 172 5.2.7 评审“最终的”实现模型 172 5.3 实现设计 173 5.3.1 创建基本表结构 175 5.3.2 添加唯一性约束 183 5.3.3 构建默认约束 189 5.3.4 添加关系(外键) 195 5.3.5 处理排序规则和排序 205 5.3.6 计算列 209 5.3.7 实现用户定义的数据类型 212 5.3.8 文档化你的数据库 220 5.3.9 处理依赖信息 222 5.4 最佳实践 225 5.5 总结 226 第6章 保护数据的完整性 228 6.1 最佳实践 229 6.2 自动数据保护 231 6.2.1 声明性数据保护 231 6.2.2 基本语法 233 6.2.3 基于简单表达式的CHECK约束 235 6.2.4 基于函数的CHECK约束 237 6.2.5 约束引起的错误 242 6.2.6 DML触发器 244 6.2.7 处理来自触发器和约束的错误 277 6.3 手动数据保护 280 6.4 更多最佳实践 287 6.5 总结 287 第7章 模式与查询技术 289 7.1 预计算值 290 7.1.1 序列表 290 7.1.2 日期计算 297 7.2 二进制大型对象(BLOB) 305 7.3 存储用户自定义数据 307 7.3.1 一长串通用列 308 7.3.2 实体-属性-值(EAV) 309 7.3.3 往表中增加列 313 7.4 通用实现对象 318 7.5 反模式 319 7.5.1 多用途键域 320 7.5.2 通用键引用 322 7.5.3 对非结构化数据的过度使用 325 7.6 总结 326 7.7 回顾与展望 326 第8章 数据访问安全 328 8.1 安全主体与安全对象 329 8.2 数据库安全概述 330 8.2.1 模拟 331 8.2.2 权限 333 8.2.3 控制对象访问 334 8.2.4 角色 338 8.2.5 模式 344 8.3 通过T-SQL编程对象控制对象访问 345 8.3.1 存储过程和标量函数 346 8.3.2 对象内模拟 347 8.3.3 跨数据库边界 352 8.3.4 不同的服务器(分布式查询) 357 8.4 视图与表值函数 357 8.4.1 一般用法 358 8.4.2 使用视图实现可配置的行级安全 360 8.5 数据混淆 364 8.6 监视与审核 367 8.6.1 服务器与数据库审核 367 8.6.2 使用DML触发器查看表的变更历史 371 8.6.3 DDL触发器 374 8.6.4 分析器日志 377 8.7 最佳实践 379 8.8 总结 380 第9章 表结构与索引 382 9.1 数据库物理结构 383 9.1.1 文件与文件组 383 9.1.2 分区与页 386 9.1.3 页中的数据 388 9.1.4 分区 391 9.2 索引概览 393 9.3 基本索引结构 393 9.4 索引类型 395 9.4.1 聚集索引 395 9.4.2 非聚集索引 397 9.4.3 聚集表上的非聚集索引 398 9.5 索引创建的基本方法 400 9.6 基本的索引使用模式 402 9.6.1 使用聚集索引 403 9.6.2 使用非聚集索引 405 9.6.3 使用唯一索引 416 9.7 高级的索引使用案例 416 9.7.1 外键索引 416 9.7.2 索引视图 419 9.8 最佳实践 422 9.9 总结 423 第10章 并发编程 425 10.1 什么是并发 426 10.2 查询优化的基础知识 427 10.3 操作系统与硬件因素 428 10.4 事务 429 10.4.1 事务语法 430 10.4.2 已编译的SQL Server代码 437 10.5 SQL Server并发控制 444 10.5.1 锁 445 10.5.2 隔离级别 448 10.6 完整性与并发性编程 459 10.6.1 悲观锁定 459 10.6.2 实现单线程代码块 461 10.6.3 乐观锁定 463 10.6.4 基于行的锁定 464 10.6.5 逻辑工作单元 469 10.7 最佳实践 470 10.8 总结 471 第11章 数据访问策略 472 11.1 即席SQL 473 11.1.1 优点 474 11.1.2 缺陷 480 11.2 存储过程 484 11.2.1 封装性 485 11.2.2 动态存储过程 486 11.2.3 安全性 488 11.2.4 性能 490 11.2.5 缺陷 491 11.2.6 观点 495 11.3 T-SQL与CLR(公共语言运行时) 497 11.3.1 选择T-SQL的准则 500 11.3.2 选择.NET的准则 501 11.3.3 CLR对象类型 501 11.4 最佳实践 503 11.5 总结 504 附录A Codd的RDBMS十二法则 506 附录B 标量数据类型参考 511 索引 538 译者序   如果将数据库称为现代数字生活的基础,那么这样的说法一点也不夸张——大型企业应用、网站,所有这些东西的背后,都是数据库在支撑。并且,最终说来,产生价值的并不是绚丽的界面和现代化的输入方式,而是存放在数据库中的数据。不幸的是,虽然关系型数据库历经了约30年的发展,有成熟的理论和大量的实践基础,但是,大多数设计、开发人员在设计数据库结构时仍然是“跟着感觉走”,根据业务的需要和编程的方便,把字段这张表放几个那张表放几个完事。对这样设计出来的数据库,只需多问几个为什么——业务模型是如何体现的?数据完整性如何保证?性能是如何权衡的?——恐怕设计者就该崩溃了。.   这也难怪,设计、开发人员在学校中学习数据库时,理论书籍离实际开发较远——试问有几个人能够以可实践的方式把规范化的几条原则阐述清楚?在工作时,使用的数据库资料和书籍又往往是“手册型”,大多仅仅讲解特定数据库提供的功能。   正如作者所说——“我的书目标很简单,那就是填补这个空白,架起学院教科书与通常针对SQL Server所写的,纯粹面向实践的书之间的桥梁”。翻译的过程中,译者感到此言不虚:作者从数据库的基本概念到数据库建模,从如何运用规范化原则到如何做成实际的数据库表,从如何保护数据库完整性到如何提高数据库的性能,从数据库的安全机制到并发事务控制,从数据库设计开发的常用模式到应用程序的数据访问策略,既有理论又紧扣实践。阅读本书的过程,就是把一些以前模糊地知道,但又觉得很难运用的理论实实在在地运用到实践中的过程。   虽然本书是针对SQL Server这个特定数据库平台来阐述理论和实践的,然而,本书所体现的思想和方法,完全可以运用到其他关系数据库平台上。..   翻译的时间很紧,如果没有家人的支持和理解,很难想象如何完成这项工作。   感谢人民邮电出版社图灵公司很好地推动了这本书的翻译工作。另外,图灵公司的论坛上丰富的资料和活跃的讨论也使我们眼界大开,受益良多。   翻译工作并非阐述自己的思想,翻译的第一要务是忠实地传达原著者的思想。虽然无法自由地表达自己的想法,然而,翻译的快乐就在于:使另一个人的好想法能让更多的人了解。当然,由于时间紧张,译者水平有限,错误粗糙之处相信不在少数,敬请广大读者批评指正。   感谢我的妻子魏萍,你容忍我一吃完饭就坐到计算机前。谢谢女儿程灵馨,在爸爸不能陪你玩时,5岁的你居然也表示理解。谢谢作者Louis Davidson,你耐心地回答了我的问题。   程桦   感谢我的未婚妻张艳,是你的鼓励和体贴让我在寒冷的冬日伏案不辍。还要感谢我的家人,你们殷殷的期盼让我产生了对知识的不渝追求。...   张绪业   2009年5月    前言   我经常扪心自问,“为什么要做这件事?为什么还要写新版本?这值得吗?如果我抛开书去打任天堂游戏机,我是不是能帮超级玛丽快点把公主救出来?”在微软MVP 2008年峰会上,这些问题都由一位MVP帮我回答了。他感谢我写了这本书,说他曾经试着读点这方面的大学教材,但那些书都太难了,读不太懂。.   “喔,是的,”我想,“那是我最开始要写这本书的原因。”当我最早开始设计数据库时,我从几位伟大的导师那里学到了不少东西,但是,当我想进一步深入研究时,我开始寻找数据库设计方面的材料,但没找着多少。我找到的最好的一本书是Chris Date的An Introduction to Database Systems(Addison Wesley,2003),然后我读了自己能读懂的部分。然而,我很快就有点晕头转向,没法做到一旦理解了概念之后,就能很好地将关于设计的理论转换到真正的、同时较为简单的设计过程中去。在我所使用的Chris和其他人的教材中,很明显,创建关系模型这件事包含了太多理论,甚至是数学知识。   如果你想要成为一名理论家,那Chris的书就是必读的,当然,除此之外还有很多可以参考的书(最好去看看http://www.dbdebunk.com/books.html,你会找到更多的书)。问题在于,这些书大多数都包含了太多的理论,超出了一般实践工作者所需了解的(或者愿意花时间去读的)内容,并且它们没有真正地深入到实际数据库系统的实现中去。我的书的目标很简单,那就是填补这个空白,在大学教材与通常针对SQL Server所写的、纯粹面向实践的书之间架起一座桥梁。我的目的不是顶替这些书,完全不是,在我的书架上有很多这样的书。本书更像是一本面向技术的书,而不是讲解SQL Server功能的使用手册。我将介绍关系引擎的大多数典型功能,教给你使用它们的技术。然而,我不能说这是你书架上需要的唯一一本书。   如果你有本书以前的版本,你可能会问为什么还需要这个新版本,我了解你的感受。我花了大量时间找出应该买这个新版本的理由,而这个理由并不那么明显——那就是,我现在涵盖了2008的所有功能。很明显,这只是部分原因,最重要的是,我一直在努力加入更多新内容让你的工作更轻松。我加入了一章(第7章)介绍开发模式,每一章中也都加入了大量新材料,从而能帮你改进数据库设计。   诗人和剧作家奥斯卡王尔德曾经说过:“只有年轻人才会无所不知。”现在回头看时有点后悔,自己在写第一本书Professional SQL Server 2000 Database Design之前,以为自己什么都知道。正是那种无知和放纵不羁的热情,才让我有勇气写下第一本书。最后,我确实完成了第一本书,它之所以还不错,主要归功于技术编辑给予的批评。并且,如果我没有最初那种驱使我写完书的热情的话,我也不可能写这本书的第四版。无论如何,如果你花几周的时间逐章逐节地比较了这些书的每个版本的话,你会发现这是个内容逐步丰富的过程,而且作者也在逐步成熟。   过程的逐步丰富和作者的逐渐成熟都有其原因。一个原因是过去两个版本以来我所碰到的编辑:首先是Tony Davis,现在是Jonathan Gennick。他们两人对我的文风都多有指摘,并且他们把本书的结构调整得很棒。另一个原因可以简单地归结为经验,因为从我开始写第一版以来已经过了8年。但是,书中所用的材料之所以有进步,最大的原因还是它们经过了检验。一方面我在对别人贡献着自己的好评论,另一方面我也收到了大量关于如何改进的反馈(其中一些评论可不那么友善)。我非常用心地倾听,从书发布那天开始就记一系列笔记。对于我能用得上的任何反馈,我都会感到很高兴。可以用电子邮件联系我(louis@drsql.org),如果你愿意也可以在我的网站(drsql.org)留下匿名反馈。你可以在网站上找到一个附录,里面含有我希望自己在写这本书时就了解了的材料。   数据库设计的目的   数据库设计的目的是什么?你到底为什么要关心这事?主要的原因是设计良好的数据库用起来很简单,因为所有东西都在其应处于的逻辑位置上。这非常像一个收拾得很好的橱柜,如果你需要红辣椒粉,直接到调味品搁架的红辣椒粉那格就能取到,这就比到处乱找要强得多。但是,许多系统组织得一团糟。即使每件东西都有一个分好的地方,如果找起来很困难,那件东西也就没啥价值了。想象如果一本电话簿完全没有排序会如何?或者,编排字典的时候把词任意放在文字中能放下的地方又会如何?数据库如果组织良好的话,即使要写一两个联结,你也可以靠本能就知道去哪里获取需要的数据。我的意思是,说到底,这难道不是件很有趣的事吗?..   你也可能吃惊地发现,数据库设计是件相当简单的任务,不像听起来那么困难。与随着项目进行而拼凑数据存储相比,要做好这件事需要在项目一开始多花些时间,但是,在项目的整个生命周期中,这样做能获得相应回报。要想正确地进行数据库设计,我们面对的最具挑战性的问题是:与不做设计相比,正确地设计数据库会花更多的时间(在项目计划会议上,关于时间的争论经常发生)。因为数据库设计没有什么可见的东西来让客户感到赏心悦目,因此这一阶段经常会被压缩,目的就是让事情看起来进行得较快。对于普通客户而言,即使是最没有挑战性、最不让人感兴趣的用户界面也比最漂亮的数据模型要吸引人得多。虽然一般说来,数据才是投资创建系统的最终原因,但是,用户界面编程往往占据了中心地位。并不是说你的同事没有注意到一个糟糕的数据模型与一个漂亮的数据模型之间的区别,他们确实注意到了,但是,当程序员需要编码时,往往会顾不上考虑如何能正确地存储数据。我希望自己知道这个难题的答案,因为要是有这个答案,我的书会卖出一百万本。本书将努力提供一些技术和过程,帮助你进行数据库设计,力求对新手清晰易懂,对老练的专家也有所助益。   这个设计和架构数据存储的过程与数据库安装和管理的角色并不相同。例如,作为数据架构师的角色,我很少去创建用户、执行备份,或者去设置复制与集群。我很少谈及这些任务,它们被认为是管理工作,由DBA角色担当。既是开发人员又是DBA的人并不罕见(实际上,如果你在小公司工作,你会发现自己担当了多个角色,以至于不堪重负),但是,如果你能将自己的思维与偏重实现的角色相分离,从而使你能更多地思考数据有多难用,那么一般说来,你设计出的东西会好很多。对许多情况而言,数据库设计没有看起来那样困难。   注解为安全起见,我要澄清一件事:如果你做过任何编程工作的话,毫无疑问,你会反对本书中的某些观点和意见。我完全同意本书不是什么Katmai 的圣路易斯 福音书。我的意见和观点来自于超过16年对数据库的学习、在数据库上的工作,并且由来自于许多不同的人、书、大学课堂和研讨会的知识所补充。我在“致谢”一节已经感谢了其中的许多人,但是,我忘掉的人名也数以百计,我脑中铭刻的某些知识精华就来自于他们。本书所展示的设计方法是所有这些思想的集合。我希望本书能被看作是个有用的学习工具。通过阅读本书和其他人的著作,再实践你自己的想法,你将会总结出自己的方法论,它会适合你自己,并使你成为成功的数据库设计人员。   本书的结构   本书由如下各章组成。   第1章:数据库概念简介。该章提供了对关键术语和概念的简要概览。   第2章:数据建模语言。该章的作用是介绍数据架构师的主要工具——模型。该章详细介绍了一种建模语言——IDEF1X,因为它是本书中用于展示数据库设计的建模语言。还介绍了其他几种常见的建模语言,因为某些读者或者出于偏爱、或者由于公司的要求会使用这些类型的模型。   第3章:概念阶段数据建模。在概念阶段数据建模中,我们的目标是讨论这样的过程:引入顾客的需求集合,将表、列、关系和业务规则放入数据模型格式中相应的地方。   第4章:规范化过程。数据库设计过程的下一步是规范化。规范化的目标是将表、列、关系和业务规则的集合格式化为每个值只在一个地方存储、每张表只代表一个单一实体的形式。在最初几次进行规范化时,这个过程会感觉不太自然,因为你不用琢磨如何使用数据,却必须琢磨数据本身以及结构会如何影响数据的质量。然而,一旦你掌握了规范化,那么,不以规范化的方式存储数据就会让人觉得不舒服。   第5章:实现基础的表结构。在数据库设计过程中,这是第一个要启动SQL Server,开始写脚本来构建数据库对象的时间点。该章讨论了构造表(包括为列选择数据类型)及关系,其中提到了实现后的结构可能与我们在规范化过程中得到的模型不一致的问题。   第6章:保护数据的完整性。除了要将数据安排在表和列中之外,也需要实现其他业务规则。在SQL Server中,保证数据完整性条件得以满足的第一条防线由CHECK约束与触发器构成,因为用户无法轻易绕开由约束和触发器进行的验证。这一章还讨论了其他几种保护数据的方法,它们可以用存储过程和客户端代码来实现。   第7章:模式和查询技术。除了设计表时的各种基本技巧之外,我们还利用几种技巧来构成常见的数据/查询接口,从而方便未来的查询和使用。该章讨论了几种常见的、有用的模式,同时也观察了某些人需要使用的一些模式——有些查询需求的接口实现对你来说非常困难,而这些模式能使它们变得更简单些。 .  第8章:数据访问安全。这些日子以来,安全问题几乎在每个程序员的头脑中都占据了很重要的位置。该章讨论了用来在系统中实现数据安全的某些策略,比如使用视图、触发器、加密,甚至使用SQL ServerProfiler等。   第9章:表结构与索引。该章展示了如何在SQL Server中建立表结构的基础知识,以及某些对数据进行索引以获得更好性能的策略。   第10章:并发编程。数据库设计和实现过程的一部分是不仅要考虑结构,而且还要考虑如何在多个用户之间最大化资源的利用率。该章描述了几种策略,它们都与如何在你的数据访问和修改代码中实现并发相关。   第11章:数据访问策略。该章讨论了关于编写代码来访问SQL Server的许多概念和问题。比较了即席SQL与存储过程(包括两者面对的所有风险和挑战,比如计划的参数化、性能、开发投入、可选参数、SQL注入等),同时也讨论了T-SQL还是CLR对象更好,其中包括用CLR来编码不同类型的对象的示例。有关CLR的材料由Kurt Windisch提供,可以下载的CLR示例代码也由他提供。   附录A:Codd的RDBMS十二法则。本附录介绍了Codd关于数据库应该如何实现的创新的十二条原则。随着硬件的发展,我们离实现他的梦想越来越近。   附录B:标量数据类型参考。本附录介绍了可以被合法地当作标量类型的所有类型,为什么要用它们,以及它们的实现信息和其他细节。   再一次强调,给我反馈时不用犹豫,任何时候都不要犹豫(只要你不在早上3点给我打电话就行)。对任何章节,我都将努力改善大家发现还有所欠缺的地方,并将改善后的内容发布到我的博客上(http://sqlblog.com/blogs/louis_davidson),其标签为DesignBook,同时也会发布到我的网站上(http://drsql.org/ProSQLServerDatabaseDesign.aspx)。如果有什么新的想法或者找到了一些错误,或者有额外的资料,我都会将其添加在这两个地方。因为这是一本书,而不再是零零星星的资料,这两处是我能想到并选来发布信息的地方。...    序言   数据库设计是Louis和我都热衷的事情。今年秋季,我将幸运地和我的朋友Louis Davidson登上同一个舞台。我们将在DevLink会议上演讲,地点是Louis的家乡Nashville,然后,在西雅图的PASS上我们也将同台演讲。在这两次演讲中,我们都将针对数据库设计这个题目开展讨论和辩论,并探讨对以数据为中心的应用来说数据库设计有多关键。.   数据库设计是门科学也是门艺术。规范化应该说是门科学,而确定实体的范围则是一门艺术,需要具有与各种数据库打交道的经验才能学到手。优雅的解决方案都有一种简单的美。Louis不止是位作者和数据库设计人员,也是一位大师级技师。在本书中,你会发现字里行间都隐藏着作者的呼吁——改善你的技能,精心雕刻出能够经受时间考验的数据库,创造一个能让开发人员充分施展拳脚的、虚拟的数据世界。..   数据库设计是每个以数据为中心的应用的基石。一个优雅的数据库设计使得数据一目了然、容易查询,并且使用有效的、基于集的查询将开发人员武装起来,使他们获得成功。但是,如果数据库设计就很糟糕,则无论多少代码也无法补偿,也无法为数据库加上缺失的功能。对任何以数据为中心的应用来说,没有什么角色比数据建模人员这个角色更为重要。用户界面换来换去,但是,即使经历了好几代应用编程语言,数据仍然存在着。数据库架构上犯下的错误迟早会被未来的程序员诅咒,即使他现在还未出生,即使他用的是现在还没发明的语言和工具。在我的好朋友Louis的指导下,多花一点时间来润色你的数据库设计,绝对是件值得的事。   因此,欢迎你阅读本书,这是Louis针对软件世界最重大的工作所写的战地指南的第三版。能够为本书作序我感到无比愉快。...   Paul Nielsen   SQL Server MVP    媒体评论   “跟本书的2005版一样,我认为Louis的这本书写得非常好,信息量极其丰富而且实践性强。阅读过程中,你会觉得是在跟作者讨论问题。我喜欢这本书,还因为它有自己的观点,而非从在线图书中照搬过来……”   —— Amazon读者评论...   
pdf
发布资源于 8 年前

SQL Server 2008实战(SQL Server程序员和DBA不可或缺的权威参考手册)--详细书签版

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
pdf
发布资源于 8 年前

SQL Server 2005基础教程--随书源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《SQL Server 2005基础教程》的随书源代码 对应的书籍资料见: SQL Server 2005基础教程 基本信息 原书名: Beginning SQL Server 2005 for Developers: From Novice to Professional 原出版社: Apress 作者: (美)Robin Dewson    译者: 董明 丛书名: 图灵程序设计丛书·数据库系列 出版社:人民邮电出版社 ISBN:7115154392 上架时间:2006-11-22 出版日期:2006 年12月 开本:16开 页码:419 版次:1-1 作译者 作者: Robin Dewson 是著名投资银行雷曼兄弟公司的SQL Server和Visual Basic顾问。他与人合作编写了多部SQL Server方面的著作,包括Amazon畅销书Pro SQL Server 2005,他还是ASPToday网站的撰稿人”可以通过robin@fat-belly.com或www.fat-belly.com与他联系。 内容简介   本书重点阐述了SQL Server 2005的基础知识,前半部分以建立一个金融数据库系统为主线,从最基础的收集信息入手,一步步地引导读者学会如何保证数据库的安全,创建表、主键、索引等项目,在表之间建立恰当的关系,并掌握如何备份和还原数据库;之后以前面建立的示例数据库为基础,深入讲解各种数据操作的方法,从数据检索、插入、更新、删除,到函数、触发器、存储过程的使用;最后,概略讲述了SQL Server Reporting Services。书中还针对数据安全性方面的操作和细节提供了大量的例子。   本书适合希望使用SQL Server 2005的开发和管理人员阅读,也可作为高等学校相关课程的教材。 目录 封面 -10 封底 -9 扉页 -8 版权 -7 前言 -6 目录 -4 第1章 SQL Server 2005概述和安装 1 1.1 为什么选择SQL Server 2005 1 1.2 SQL Server的发展 3 1.3 硬件要求 4 1.3.1 CPU 4 1.3.2 内存 4 1.3.3 硬盘空间 5 1.3.4 操作系统要求 5 1.4 示例 5 1.5 安装 6 1.6 标准安装 6 1.7 安全性 13 1.7.1 服务账户 13 1.7.2 身份验证模式 13 1.7.3 sa登录 17 1.8 小结 18 第2章 SSMS 19 2.1 SSMS概览 19 2.2 SSMS的选项 26 2.2.1 “环境”节点 26 2.2.2 “源代码管理”节点 28 2.2.3 “文本编辑器”节点 29 2.2.4 “查询执行”节点 31 2.2.5 “查询结果”节点 33 2.3 查询编辑器 35 2.4 外围应用配置器工具 37 2.5 小结 40 第3章 设计和创建数据库 41 3.1 数据库的定义 42 3.2 SQL Server中的数据库 43 3.2.1 master 43 3.2.2 tempdb 44 3.2.3 model 45 3.2.4 msdb 45 3.2.5 AdventureWorks/AdventureWorks DW 45 3.3 决定数据库系统类型 46 3.3.1 OLTP 46 3.3.2 OLAP 47 3.3.3 示例系统类型选择 47 3.4 收集数据 48 3.5 决定要存储在数据库中的信息 49 3.5.1 金融产品 50 3.5.2 客户 51 3.5.3 客户地址 51 3.5.4 股票 51 3.5.5 交易 51 3.6 外部信息和忽略的信息 52 3.7 建立关系 52 3.7.1 使用键 52 3.7.2 创建关系 54 3.7.3 更多关于外键 57 3.8 规范化 58 3.8.1 每一个实体应该有唯一的标识符 59 3.8.2 只存储与实体直接有关的信息 59 3.8.3 避免重复值或重复列 59 3.8.4 范式 60 3.8.5 非规范化 61 3.9 创建示例数据库 62 3.9.1 在SSMS中创建数据库 62 3.9.2 在SSMS中删除数据库 74 3.9.3 在查询编辑器中创建数据库 77 3.10 小结 79 第4章 安全 80 4.1 登录名 80 4.2 角色 88 4.2.1 固定服务器角色 88 4.2.2 数据库角色 90 4.2.3 应用程序角色 90 4.3 架构 93 4.4 在解决方案中进行下去之前 95 4.5 小结 99 第5章 定义表 100 5.1 什么是表 100 5.2 定义表:SSMS 101 5.2.1 表中的不同数据类型 102 5.2.2 程序中的不同数据类型 106 5.3 列不仅仅是简单的数据仓库 106 5.3.1 默认值 106 5.3.2 生成IDENTITY值 107 5.3.3 NULL值的使用 107 5.3.4 为什么要定义允许NULL值的列 108 5.4 在SQL Server中存储图像和大型文本 108 5.5 在SSMS中创建表 109 5.6 通过查询编辑器定义表 113 5.7 定义表:使用模板 115 5.8 创建模板和修改模板 118 5.9 ALTER TABLE命令 119 5.10 定义其余的表 121 5.11 设置主键 122 5.12 创建关系 123 5.12.1 在创建时检查现有数据 125 5.12.2 强制外键约束 126 5.12.3 删除规则/更新规则 126 5.13 使用SQL语句ALTER TABLE 126 5.14 小结 128 第6章 创建索引和数据库关系图 129 6.1 什么是索引 129 6.1.1 索引类型 130 6.1.2 唯一性 132 6.2 确定是什么导致了好的索引 132 6.2.1 使用低维护列 132 6.2.2 主键和外键 133 6.2.3 找到指定记录 133 6.2.4 使用覆盖索引 133 6.2.5 查找信息范围 134 6.2.6 保持数据的排序 134 6.3 确定是什么导致了坏的索引 135 6.3.1 使用了不合适的列 135 6.3.2 选择了不合适的数据 135 6.3.3 包含了过多的列 135 6.3.4 表中包含的记录过少 135 6.4 针对性能对索引进行回顾 136 6.5 创建索引 136 6.5.1 在表设计器中创建索引 136 6.5.2 索引和统计信息 139 6.5.3 CREATE INDEX语法 140 6.5.4 在查询编辑器中创建索引:模板 142 6.5.5 在查询编辑器中创建索引:SQL代码 145 6.6 删除索引 148 6.7 在查询编辑器中修改索引 149 6.8 为数据库生成关系图 151 6.8.1 数据库关系图基础 151 6.8.2 SQL Server数据库关系图工具 152 6.8.3 默认数据库关系图 153 6.8.4 数据库关系图工具条 155 6.9 小结 157 第7章 数据库的备份、还原和维护 158 7.1 事务日志 159 7.2 备份策略 161 7.3 当可能发生错误 162 7.4 让数据库脱机 163 7.5 备份数据 164 7.5.1 使用T-SQL备份数据库 169 7.5.2 使用T-SQL进行日志备份 175 7.6 还原数据库 178 7.6.1 使用SSMS还原数据 178 7.6.2 使用T-SQL进行还原 181 7.7 分离和附加数据库 185 7.7.1 使用SSMS进行分离和附加操作 185 7.7.2 使用T-SQL进行分离和附加操作 190 7.8 为数据库生成SQL脚本 192 7.9 维护数据库 198 7.10 小结 207 第8章 操作数据 208 8.1 T-SQL的INSERT命令的语法 209 8.2 SQL命令INSERT 209 8.2.1 默认值 212 8.2.2 使用NULL值 212 8.3 DBCC CHECKIDENT 216 8.4 列约束 217 8.5 同时处理多条记录 222 8.6 检索数据 224 8.7 使用SSMS检索数据 224 8.8 SELECT语句 226 8.9 指定列 228 8.10 第一批搜索 229 8.11 改变输出的显示 231 8.12 限制搜索:WHERE的使用 232 8.12.1 SET ROWCOUNT n 235 8.12.2 TOP n 236 8.12.3 TOP n PERCENT 237 8.13 字符串函数 237 8.14 顺序!顺序! 239 8.15 LIKE运算符 240 8.16 生成数据:SELECT INTO 242 8.17 谁能添加、删除或选取数据 244 8.18 更新数据 248 8.18.1 UPDATE命令 248 8.18.2 在查询编辑器中更新数据 250 8.19 事务 253 8.19.1 BEGIN TRAN 254 8.19.2 COMMIT TRAN 254 8.19.3 ROLLBACK TRAN 255 8.19.4 锁定数据 255 8.19.5 更新数据:使用事务 255 8.19.6 嵌套事务 257 8.20 删除数据 259 8.20.1 DELETE的语法 259 8.20.2 使用DELETE语句 259 8.21 截断表(删除表中的所有行) 261 8.22 删除表 262 8.23 小结 263 第9章 构建视图 264 9.1 什么是视图 265 9.2 针对安全而使用查询 265 9.3 加密视图定义 266 9.4 创建视图:SSMS 267 9.5 使用视图来创建视图 272 9.6 CREATE VIEW语法 277 9.7 创建视图:查询编辑器窗格 278 9.8 创建视图:SCHEMABINDING 279 9.9 为视图设置索引 282 9.10 小结 285 第10章 存储过程 286 10.1 什么是存储过程 286 10.2 CREATE PROCEDURE语法 287 10.3 返回一系列记录 290 10.4 创建存储过程:SSMS 290 10.5 执行存储过程的不同方法 294 10.5.1 不使用EXEC 294 10.5.2 使用EXEC 294 10.6 使用RETURN 295 10.7 控制流程 299 10.7.1 IF...ELSE 299 10.7.2 BEGIN...END 300 10.7.3 WHILE...BREAK语句 300 10.7.4 CASE语句 302 10.8 综合应用 305 10.9 小结 307 第11章 T-SQL基础 308 11.1 使用多个表 308 11.2 变量 313 11.3 临时表 315 11.4 聚合 318 11.4.1 COUNT/COUNT_BIG 318 11.4.2 SUM 319 11.4.3 MAX/MIN 319 11.4.4 AVG 320 11.5 GROUP BY 320 11.6 HAVING 322 11.7 独特值 323 11.8 函数 324 11.8.1 日期和时间函数 324 11.8.2 字符串函数 327 11.8.3 系统函数 333 11.9 RAISERROR 336 11.10 错误处理 340 11.11 @@ERROR 340 11.12 TRY...CATCH 342 11.13 小结 345 第12章 高级T-SQL 346 12.1 子查询 346 12.1.1 IN 348 12.1.2 EXISTS 349 12.2 APPLY运算符 350 12.2.1 CROSS APPLY 350 12.2.2 OUTER APPLY 351 12.3 公用表表达式 352 12.4 透视数据 355 12.4.1 PIVOT 355 12.4.2 UNPIVOT 357 12.5 排名函数 358 12.5.1 ROW_NUMBER 359 12.5.2 RANK 361 12.5.3 DENSE_RANK 362 12.5.4 NTILE 363 12.6 使用MAX数据类型 363 12.7 小结 367 第13章 触发器 368 13.1 什么是触发器 368 13.2 DML触发器 369 13.3 针对DML触发器的CREATE TRIGGER语法 370 13.4 为什么不使用约束 372 13.5 对逻辑表进行删除和插入 372 13.6 创建DML FOR触发器 373 13.7 检查特定的列 377 13.7.1 使用UPDATE() 377 13.7.2 使用COLUMNS_UPDATED() 381 13.8 DDL触发器 384 13.9 删除DDL触发器 387 13.10 EVENTDATA() 387 13.11 小结 390 第14章 SQL Server Reporting Services 391 14.1 什么是Reporting Services 391 14.2 Reporting Services架构:远观 392 14.3 Reporting Services架构:更近的观察 393 14.3.1 应用程序层 394 14.3.2 服务器层 395 14.3.3 数据层 397 14.4 使用报表向导构建第一个报表 398 14.5 构建即席报表 401 14.5.1 数据相关的元素 402 14.5.2 报表项 402 14.5.3 报表结构 403 14.6 小结 409 附录 术语表 410
zip
发布资源于 8 年前

SQL Server 2008基础教程(最佳SQL Server 2008入门教程)--随书源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《SQL Server 2008基础教程》的随书源代码 对应的书籍资料见: SQL Server 2008基础教程(最佳SQL Server 2008入门教程) 基本信息 原书名: Beginning SQL Server 2008 for Developers: From Novice to Professional 原出版社: Apress 作者: (英)Robin Dewson 译者: 董明 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115206060 上架时间:2009-4-24 出版日期:2009 年5月 开本:16开 页码:406 版次:1-1 编辑推荐   最佳SQL Server 2008入门教程.    采用中文界面讲述..    兼顾数据库开发和管理... 内容简介   本书全面阐述sql server 2008 的基础知识。书中首先概述了sql server 2008 的安装过程,并介绍了sql server 2008 的ssms 管理工具;然后以建立一个金融数据库系统为主线,从最基础的搜集信息入手,一步步地引导读者学会如何保证数据库的安全,如何创建表、主键、索引等,并掌握如何备份和还原数据库;之后以示例数据库为基础,深入讲解各种数据操作的方法,从数据检索、插入、更新、删除,到函数、触发器、存储过程的使用;最后,以一个实例讲述了sql server reporting services 。   本书适合希望使用sql server 2008 的开发人员和管理员阅读,也可作为高等学校相关课程的教材。 作译者   Robin Dewson SQL Sewer资深开发人员,曾是著名投资银行雷曼兄弟公司的SQL Servert和Visual Basic顾问。他与人合作编写了多部SQL Server方面的著作,包括Amazon畅销书Accelerated SOL Server 2008(中文版即将由人民邮电出版社出版),他还是ASPToday网站的撰稿人。可以通过vvwwfat-belly com与他联系。 目录 封面 -12 封底 -11 扉页 -10 版权 -9 版权声明 -8 前言 -6 目录 -4 第1章 SQL Server 2008概述和安装 1 1.1 为什么选择SQL Server 2008 1 1.2 SQL Server的发展 3 1.3 硬件要求 4 1.3.1 CPU 4 1.3.2 内存 4 1.3.3 硬盘空间 5 1.3.4 操作系统要求 5 1.4 示例 5 1.5 安装 5 1.5.1 开始安装 6 1.5.2 选择要安装的功能 7 1.5.3 为实例命名 9 1.5.4 选择服务账户 10 1.5.5 选择身份验证模式 10 1.5.6 确定数据目录的位置 11 1.5.7 创建报表服务数据库 12 1.5.8 配置错误和使用情况报告 13 1.6 安全性 14 1.6.1 服务账户 14 1.6.2 身份验证模式 15 1.6.3 sa登录 19 1.7 小结 20 第2章 SSMS 21 2.1 SSMS概览 21 2.2 SSMS的选项 29 2.2.1 “环境”节点 29 2.2.2 “源代码管理”节点 31 2.2.3 “文本编辑器”节点 31 2.2.4 “查询执行”节点 33 2.2.5 “查询结果”节点 35 2.3 查询编辑器 41 2.4 小结 42 第3章 设计和创建数据库 43 3.1 数据库的定义 44 3.2 SQL Server中的预建数据库 45 3.2.1 master 45 3.2.2 tempdb 46 3.2.3 model 47 3.2.4 msdb 47 3.2.5 AdventureWorks/Adventure WorksDW 47 3.3 选择数据库系统类型 48 3.3.1 OLTP 48 3.3.2 OLAP 49 3.3.3 示例系统类型选择 49 3.4 收集数据 49 3.5 确定要存储在数据库中的信息 51 3.5.1 金融产品 52 3.5.2 客户 52 3.5.3 客户地址 52 3.5.4 股票 52 3.5.5 交易 53 3.6 外部信息和忽略的信息 53 3.7 建立关系 53 3.7.1 使用键 53 3.7.2 创建关系 55 3.7.3 关于外键的更多信息 57 3.8 规范化 59 3.8.1 每一个实体都应该有唯一的标识符 59 3.8.2 只存储与实体直接有关的信息 60 3.8.3 避免重复值或重复列 60 3.8.4 范式 60 3.8.5 非规范化 62 3.9 创建示例数据库 62 3.9.1 在SSMS中创建数据库 62 3.9.2 在SSMS中删除数据库 75 3.9.3 在查询编辑器中创建数据库 77 3.10 小结 80 第4章 安全和遵从规范 81 4.1 登录名 81 4.2 服务器登录名和数据库用户 89 4.3 角色 90 4.3.1 固定服务器角色 90 4.3.2 数据库角色 92 4.3.3 应用程序角色 92 4.4 架构 95 4.5 在解决方案中进行下去之前 96 4.6 陈述式管理框架 99 4.7 小结 104 第5章 定义表 106 5.1 什么是表 106 5.2 SQL Server数据类型 107 5.2.1 表中的数据类型 108 5.2.2 程序中的数据类型 113 5.3 列不仅仅是简单的数据存储库 113 5.3.1 默认值 113 5.3.2 生成IDENTITY值 113 5.3.3 NULL值的使用 114 5.3.4 为什么要定义允许NULL值的列 114 5.4 在SQL Server中存储图像和大型文本 115 5.5 在SSMS中创建表 115 5.6 通过查询编辑器创建表 120 5.7 创建表:使用模板 122 5.8 创建模板和修改模板 125 5.9 ALTER TABLE语句 126 5.10 定义其余的表 127 5.11 设置主键 128 5.12 创建关系 129 5.12.1 在创建时检查现有数据 131 5.12.2 强制外键约束 132 5.12.3 选择删除/更新规则 132 5.13 通过T-SQL语句建立关系 133 5.14 小结 134 第6章 创建索引和数据库关系图 135 6.1 什么是索引 135 6.1.1 索引类型 136 6.1.2 唯一性 137 6.2 确定是什么创建了好的索引 138 6.2.1 使用低维护列 138 6.2.2 主键和外键 139 6.2.3 找到指定记录 139 6.2.4 使用覆盖索引 139 6.2.5 查找信息范围 139 6.2.6 保持数据的排序 140 6.3 确定是什么导致了坏的索引 140 6.3.1 使用了不合适的列 140 6.3.2 选择了不合适的数据 141 6.3.3 包含了过多的列 141 6.3.4 表中包含的记录过少 141 6.4 针对性能对索引进行审查 141 6.5 创建索引 142 6.5.1 用表设计器创建索引 142 6.5.2 索引和统计信息 145 6.5.3 CREATE INDEX语法 145 6.5.4 在查询编辑器中创建索引:模板 148 6.5.5 在查询编辑器中创建索引:SQL代码 151 6.6 删除索引 153 6.7 在查询编辑器中修改索引 154 6.8 当索引不存在时 155 6.9 为数据库生成关系图 156 6.9.1 数据库关系图基础 156 6.9.2 SQL Server数据库关系图工具 157 6.9.3 默认的数据库关系图 158 6.9.4 数据库关系图工具条 160 6.10 小结 162 第7章 数据库的备份、还原和维护 163 7.1 事务日志 164 7.2 备份策略 166 7.3 当可能发生错误时 167 7.4 让数据库脱机 168 7.5 备份数据 169 7.5.1 使用T-SQL备份数据库 174 7.5.2 使用T-SQL进行日志备份 180 7.6 还原数据库 182 7.6.1 使用SSMS还原数据 183 7.6.2 使用T-SQL进行还原 185 7.7 分离和附加数据库 189 7.7.1 使用SSMS进行分离和附加操作 189 7.7.2 使用T-SQL进行分离和附加操作 193 7.8 为数据库生成SQL脚本 195 7.9 维护数据库 201 7.10 创建数据库维护计划 201 7.11 设置数据库邮件 213 7.12 修改维护计划 221 7.13 小结 224 第8章 操作数据 225 8.1 T-SQL的INSERT命令的语法 225 8.2 SQL命令INSERT 226 8.2.1 默认值 229 8.2.2 使用NULL值 229 8.3 DBCC CHECKIDENT 232 8.4 列约束 234 8.5 同时插入多条记录 238 8.6 检索数据 239 8.7 使用SSMS检索数据 240 8.8 SELECT语句 241 8.9 指定列 243 8.10 第一批搜索 243 8.11 改变输出的显示 245 8.12 限制搜索:WHERE的使用 247 8.12.1 SET ROWCOUNT n 249 8.12.2 TOP n 250 8.12.3 TOP n PERCENT 251 8.13 字符串函数 251 8.14 顺序!顺序! 253 8.15 LIKE运算符 254 8.16 生成数据:SELECT INTO 256 8.17 谁能添加、删除或选取数据 257 8.18 更新数据 261 8.18.1 UPDATE命令 262 8.18.2 在查询编辑器中更新数据 263 8.19 事务 266 8.19.1 BEGIN TRAN 267 8.19.2 COMMIT TRAN 268 8.19.3 ROLLBACK TRAN 268 8.19.4 锁定数据 268 8.19.5 更新数据:使用事务 269 8.19.6 嵌套事务 270 8.20 删除数据 272 8.20.1 DELETE的语法 272 8.20.2 使用DELETE语句 272 8.21 截断表(删除表中的所有行) 274 8.22 删除表 275 8.23 小结 275 第9章 构建视图 277 9.1 为什么要构建视图 278 9.2 针对安全而使用查询 278 9.3 加密视图定义 279 9.4 创建视图:SSMS 280 9.5 使用视图来创建视图 284 9.6 CREATE VIEW语法 289 9.7 创建视图:查询编辑器窗格 290 9.8 创建视图:SCHEMABINDING 291 9.9 为视图设置索引 293 9.10 小结 295 第10章 存储过程和函数 297 10.1 什么是存储过程 298 10.2 CREATE PROCEDURE语法 298 10.3 返回一系列记录 301 10.4 创建存储过程:SSMS 301 10.5 执行存储过程的不同方法 305 10.5.1 不使用EXEC 305 10.5.2 使用EXEC 305 10.6 使用RETURN 305 10.7 控制流程 309 10.7.1 IF...ELSE 309 10.7.2 BEGIN...END 310 10.7.3 WHILE...BREAK语句 310 10.7.4 CASE语句 312 10.8 综合应用 314 10.9 用户定义函数 316 10.9.1 标量函数 316 10.9.2 表值函数 317 10.9.3 创建用户定义函数时要考虑的事项 317 10.10 小结 319 第11章 T-SQL基础 320 11.1 使用多个表 320 11.2 变量 325 11.3 临时表 326 11.4 聚合 328 11.4.1 COUNT/COUNT_BIG 329 11.4.2 SUM 329 11.4.3 MAX/MIN 330 11.4.4 AVG 330 11.5 分组数据 331 11.6 HAVING 332 11.7 独特值 333 11.8 函数 333 11.8.1 日期和时间函数 334 11.8.2 字符串函数 336 11.8.3 系统函数 340 11.9 RAISERROR 343 11.10 错误处理 347 11.11 @@ERROR 347 11.12 TRY...CATCH 348 11.13 小结 351 第12章 高级T-SQL 352 12.1 子查询 352 12.1.1 IN 354 12.1.2 EXISTS 354 12.1.3 了结未了之事 355 12.2 APPLY运算符 356 12.2.1 CROSS APPLY 357 12.2.2 OUTER APPLY 358 12.3 公用表表达式 358 12.4 透视数据 361 12.4.1 PIVOT 361 12.4.2 UNPIVOT 363 12.5 排名函数 363 12.5.1 ROW_NUMBER 364 12.5.2 RANK 366 12.5.3 DENSE_RANK 366 12.5.4 NTILE 367 12.6 SQL Server中的PowerShell 367 12.7 小结 371 第13章 触发器 372 13.1 什么是触发器 372 13.2 DML触发器 373 13.3 针对DML触发器的CREATE TRIGGER语法 374 13.4 为什么不使用约束 375 13.5 对逻辑表进行删除和插入 376 13.6 创建DML FOR触发器 377 13.7 检查特定的列 380 13.7.1 使用UPDATE() 380 13.7.2 使用COLUMNS_UPDATED() 384 13.8 DDL触发器 387 13.8.1 DDL_DATABASE_LEVEL_EVENTS 387 13.8.2 删除DDL触发器 389 13.8.3 EVENTDATA() 389 13.9 小结 392 第14章 SQL Server 2008 Reporting Services 393 14.1 Reporting Services的架构 394 14.2 配置Reporting Services 395 14.3 使用报表设计器构建第一个报表 400 14.4 小结 406 前言   本书针对那些想成为开发人员、数据库管理员或者兼为两者,但对SQL Server 2008还不熟悉的读者。无论你是否拥有数据库知识,是否了解桌面数据库(如Microsoft Access),甚至是否具有服务器(如Oracle)的背景,本书都能为你提供SQL Server 2008入门和运行的知识。.   从现在开始,本书将使你的基础知识得以扩展,让你很快从初学者成长为合格的专业开发人员。本书面向广大开发人员,从喜欢使用图形界面的程序员,到希望成为SQL Server 2008编程语言Transact SQL(T-SQL)高手的程序员。本书将尽可能贴近实际地演示、说明和展开叙述每一种使用SQL Server 2008的方法,以便你能够判断哪种方式最适合自己。   本书包含大量的示例,以使你了解SQL Server的各个领域是如何工作的,以及怎样才能把技术应用到自己的工作中。你将学习完成某项任务的最佳方法,你甚至能学会在面临两个或更多的选择时,如何做出正确的决策。只要学习完本书,你就能游刃有余地设计和创建坚实可靠的数据库解决方案。   读者对象   本书适用的对象是刚开始使用SQL Server 2008的开发人员,或立志成为数据库管理人员的读者。本书在结构安排上兼顾了这两类读者。   本书的结构   本书将帮助你决定购买SQL Server 2008的哪种版本,为你展示如何安装和配置SQL Server 2008,并阐释如何使用图形用户界面工具SSMS(SQL Server Management Studio)。你将使用该工具完成一个功能完备的数据库示例,该数据库根据本书中介绍的设计方案,利用图形的和基于代码的练习创建而成。然后,你将学习数据库安全方面的知识,并了解如何实施安全可靠的数据库设置。只要备份了数据库,你就可以学习如何操作数据。先从简单的代码编写技术入手,逐渐过渡到更加复杂的技术。最后的任务是在数据库上创建和生成报表。本书会贯穿始终地说明每一个细节,告知你正在发生什么,并确保随着对本书阅读的深入,你将在从之前章节中获取的知识上,不断提高。你将以一种有条理、有组织的方式发展构筑自己的专业知识。..   必要准备   要学习本书,你必须有SQL Server 2008开发版本的完整版或评估版。此外,如果想要为特定的Windows登录更改安全设置,有Windows Vista旗舰版或商业版将十分理想,但并非必须如此。   代码下载   可以通过出版社网站下载本书的示例代码 。   联系作者   可以通过发邮件到robin@fat-belly.com来联系Robin Dewson,也可以通过他的网站(http://www. fat-belly.com)与他取得联系。   致谢   这里,要再次感谢许许多多的人:感谢热心的Damian Fisher,多谢你教我打鼓;感谢Andrew和host-it Internet Solutions(我的ISP)的所有人,谢谢你们容忍我在SQL Server和DotNetNuke上喋喋不休的争辩;感谢我的老板Bill Cotton和Aubrey Lomas,以及在Lehman Brothers的同事Andrew O’Donnell,还有优秀的数据库管理员Andrew Harding;感谢我大学时的好朋友Robert McMillan(Toad),时隔多年,我们才又取得了联系;还要感谢Simon Collier,我们每周打乒乓球,你总把我打得无还手之力;感谢Bedford Blues橄榄球俱乐部的所有人,你们让我每个周六都激动不已。   由于许许多多的原因,我必须感谢Red Gate Software的几个人,他们是Tony Davis和Richard Collins。多年来,在我的SQL Server工作中,Tony Davis一直是那么出色,而Richard Collins安排了Apress和Red Gate的合作。此外,还要感谢SalarO的Salar Golestanian,他制作了精美的皮肤,我把它们用在我的网站建设上。   同样,要感谢我的岳母Jean,多谢她极为出色地处理需要解决的事情,并让我的妻子保持头脑清醒。还要感谢我已故的岳父David,对我们全家来说,他是一个十分英明的人。   当然,还要感谢Apress的全体人员,特别是为本书提供帮助的Kylie Johnston和Jonathan Gennick,以及Paul Carlstroem和Gary Cornell。   最后,还得感谢Barr夫妇,多谢他们配制的苏格兰另类民族饮料。...    媒体评论   “本书是SQL Server数据库初学者的明智选择。它不仅很好地介绍了SQL Server的主要特性,还深入浅出地阐述了数据库开发和设计的一般性概念。”.   ——Amazon读者评论..   “即使是我这种原本对SQL Server一无所知的人,在开始读这本书后,也会兴趣陡增,热情高涨,满怀信心地靠它从新手变为专家。相信你的成效一定比我更大。”   ——Amazon读者评论...
zip
发布资源于 8 年前

SQL Server 2008基础教程(最佳SQL Server 2008入门教程)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server 2008基础教程(最佳SQL Server 2008入门教程) 基本信息 原书名: Beginning SQL Server 2008 for Developers: From Novice to Professional 原出版社: Apress 作者: (英)Robin Dewson 译者: 董明 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115206060 上架时间:2009-4-24 出版日期:2009 年5月 开本:16开 页码:406 版次:1-1 编辑推荐   最佳SQL Server 2008入门教程.    采用中文界面讲述..    兼顾数据库开发和管理... 内容简介   本书全面阐述sql server 2008 的基础知识。书中首先概述了sql server 2008 的安装过程,并介绍了sql server 2008 的ssms 管理工具;然后以建立一个金融数据库系统为主线,从最基础的搜集信息入手,一步步地引导读者学会如何保证数据库的安全,如何创建表、主键、索引等,并掌握如何备份和还原数据库;之后以示例数据库为基础,深入讲解各种数据操作的方法,从数据检索、插入、更新、删除,到函数、触发器、存储过程的使用;最后,以一个实例讲述了sql server reporting services 。   本书适合希望使用sql server 2008 的开发人员和管理员阅读,也可作为高等学校相关课程的教材。 作译者   Robin Dewson SQL Sewer资深开发人员,曾是著名投资银行雷曼兄弟公司的SQL Servert和Visual Basic顾问。他与人合作编写了多部SQL Server方面的著作,包括Amazon畅销书Accelerated SOL Server 2008(中文版即将由人民邮电出版社出版),他还是ASPToday网站的撰稿人。可以通过vvwwfat-belly com与他联系。 目录 封面 -12 封底 -11 扉页 -10 版权 -9 版权声明 -8 前言 -6 目录 -4 第1章 SQL Server 2008概述和安装 1 1.1 为什么选择SQL Server 2008 1 1.2 SQL Server的发展 3 1.3 硬件要求 4 1.3.1 CPU 4 1.3.2 内存 4 1.3.3 硬盘空间 5 1.3.4 操作系统要求 5 1.4 示例 5 1.5 安装 5 1.5.1 开始安装 6 1.5.2 选择要安装的功能 7 1.5.3 为实例命名 9 1.5.4 选择服务账户 10 1.5.5 选择身份验证模式 10 1.5.6 确定数据目录的位置 11 1.5.7 创建报表服务数据库 12 1.5.8 配置错误和使用情况报告 13 1.6 安全性 14 1.6.1 服务账户 14 1.6.2 身份验证模式 15 1.6.3 sa登录 19 1.7 小结 20 第2章 SSMS 21 2.1 SSMS概览 21 2.2 SSMS的选项 29 2.2.1 “环境”节点 29 2.2.2 “源代码管理”节点 31 2.2.3 “文本编辑器”节点 31 2.2.4 “查询执行”节点 33 2.2.5 “查询结果”节点 35 2.3 查询编辑器 41 2.4 小结 42 第3章 设计和创建数据库 43 3.1 数据库的定义 44 3.2 SQL Server中的预建数据库 45 3.2.1 master 45 3.2.2 tempdb 46 3.2.3 model 47 3.2.4 msdb 47 3.2.5 AdventureWorks/Adventure WorksDW 47 3.3 选择数据库系统类型 48 3.3.1 OLTP 48 3.3.2 OLAP 49 3.3.3 示例系统类型选择 49 3.4 收集数据 49 3.5 确定要存储在数据库中的信息 51 3.5.1 金融产品 52 3.5.2 客户 52 3.5.3 客户地址 52 3.5.4 股票 52 3.5.5 交易 53 3.6 外部信息和忽略的信息 53 3.7 建立关系 53 3.7.1 使用键 53 3.7.2 创建关系 55 3.7.3 关于外键的更多信息 57 3.8 规范化 59 3.8.1 每一个实体都应该有唯一的标识符 59 3.8.2 只存储与实体直接有关的信息 60 3.8.3 避免重复值或重复列 60 3.8.4 范式 60 3.8.5 非规范化 62 3.9 创建示例数据库 62 3.9.1 在SSMS中创建数据库 62 3.9.2 在SSMS中删除数据库 75 3.9.3 在查询编辑器中创建数据库 77 3.10 小结 80 第4章 安全和遵从规范 81 4.1 登录名 81 4.2 服务器登录名和数据库用户 89 4.3 角色 90 4.3.1 固定服务器角色 90 4.3.2 数据库角色 92 4.3.3 应用程序角色 92 4.4 架构 95 4.5 在解决方案中进行下去之前 96 4.6 陈述式管理框架 99 4.7 小结 104 第5章 定义表 106 5.1 什么是表 106 5.2 SQL Server数据类型 107 5.2.1 表中的数据类型 108 5.2.2 程序中的数据类型 113 5.3 列不仅仅是简单的数据存储库 113 5.3.1 默认值 113 5.3.2 生成IDENTITY值 113 5.3.3 NULL值的使用 114 5.3.4 为什么要定义允许NULL值的列 114 5.4 在SQL Server中存储图像和大型文本 115 5.5 在SSMS中创建表 115 5.6 通过查询编辑器创建表 120 5.7 创建表:使用模板 122 5.8 创建模板和修改模板 125 5.9 ALTER TABLE语句 126 5.10 定义其余的表 127 5.11 设置主键 128 5.12 创建关系 129 5.12.1 在创建时检查现有数据 131 5.12.2 强制外键约束 132 5.12.3 选择删除/更新规则 132 5.13 通过T-SQL语句建立关系 133 5.14 小结 134 第6章 创建索引和数据库关系图 135 6.1 什么是索引 135 6.1.1 索引类型 136 6.1.2 唯一性 137 6.2 确定是什么创建了好的索引 138 6.2.1 使用低维护列 138 6.2.2 主键和外键 139 6.2.3 找到指定记录 139 6.2.4 使用覆盖索引 139 6.2.5 查找信息范围 139 6.2.6 保持数据的排序 140 6.3 确定是什么导致了坏的索引 140 6.3.1 使用了不合适的列 140 6.3.2 选择了不合适的数据 141 6.3.3 包含了过多的列 141 6.3.4 表中包含的记录过少 141 6.4 针对性能对索引进行审查 141 6.5 创建索引 142 6.5.1 用表设计器创建索引 142 6.5.2 索引和统计信息 145 6.5.3 CREATE INDEX语法 145 6.5.4 在查询编辑器中创建索引:模板 148 6.5.5 在查询编辑器中创建索引:SQL代码 151 6.6 删除索引 153 6.7 在查询编辑器中修改索引 154 6.8 当索引不存在时 155 6.9 为数据库生成关系图 156 6.9.1 数据库关系图基础 156 6.9.2 SQL Server数据库关系图工具 157 6.9.3 默认的数据库关系图 158 6.9.4 数据库关系图工具条 160 6.10 小结 162 第7章 数据库的备份、还原和维护 163 7.1 事务日志 164 7.2 备份策略 166 7.3 当可能发生错误时 167 7.4 让数据库脱机 168 7.5 备份数据 169 7.5.1 使用T-SQL备份数据库 174 7.5.2 使用T-SQL进行日志备份 180 7.6 还原数据库 182 7.6.1 使用SSMS还原数据 183 7.6.2 使用T-SQL进行还原 185 7.7 分离和附加数据库 189 7.7.1 使用SSMS进行分离和附加操作 189 7.7.2 使用T-SQL进行分离和附加操作 193 7.8 为数据库生成SQL脚本 195 7.9 维护数据库 201 7.10 创建数据库维护计划 201 7.11 设置数据库邮件 213 7.12 修改维护计划 221 7.13 小结 224 第8章 操作数据 225 8.1 T-SQL的INSERT命令的语法 225 8.2 SQL命令INSERT 226 8.2.1 默认值 229 8.2.2 使用NULL值 229 8.3 DBCC CHECKIDENT 232 8.4 列约束 234 8.5 同时插入多条记录 238 8.6 检索数据 239 8.7 使用SSMS检索数据 240 8.8 SELECT语句 241 8.9 指定列 243 8.10 第一批搜索 243 8.11 改变输出的显示 245 8.12 限制搜索:WHERE的使用 247 8.12.1 SET ROWCOUNT n 249 8.12.2 TOP n 250 8.12.3 TOP n PERCENT 251 8.13 字符串函数 251 8.14 顺序!顺序! 253 8.15 LIKE运算符 254 8.16 生成数据:SELECT INTO 256 8.17 谁能添加、删除或选取数据 257 8.18 更新数据 261 8.18.1 UPDATE命令 262 8.18.2 在查询编辑器中更新数据 263 8.19 事务 266 8.19.1 BEGIN TRAN 267 8.19.2 COMMIT TRAN 268 8.19.3 ROLLBACK TRAN 268 8.19.4 锁定数据 268 8.19.5 更新数据:使用事务 269 8.19.6 嵌套事务 270 8.20 删除数据 272 8.20.1 DELETE的语法 272 8.20.2 使用DELETE语句 272 8.21 截断表(删除表中的所有行) 274 8.22 删除表 275 8.23 小结 275 第9章 构建视图 277 9.1 为什么要构建视图 278 9.2 针对安全而使用查询 278 9.3 加密视图定义 279 9.4 创建视图:SSMS 280 9.5 使用视图来创建视图 284 9.6 CREATE VIEW语法 289 9.7 创建视图:查询编辑器窗格 290 9.8 创建视图:SCHEMABINDING 291 9.9 为视图设置索引 293 9.10 小结 295 第10章 存储过程和函数 297 10.1 什么是存储过程 298 10.2 CREATE PROCEDURE语法 298 10.3 返回一系列记录 301 10.4 创建存储过程:SSMS 301 10.5 执行存储过程的不同方法 305 10.5.1 不使用EXEC 305 10.5.2 使用EXEC 305 10.6 使用RETURN 305 10.7 控制流程 309 10.7.1 IF...ELSE 309 10.7.2 BEGIN...END 310 10.7.3 WHILE...BREAK语句 310 10.7.4 CASE语句 312 10.8 综合应用 314 10.9 用户定义函数 316 10.9.1 标量函数 316 10.9.2 表值函数 317 10.9.3 创建用户定义函数时要考虑的事项 317 10.10 小结 319 第11章 T-SQL基础 320 11.1 使用多个表 320 11.2 变量 325 11.3 临时表 326 11.4 聚合 328 11.4.1 COUNT/COUNT_BIG 329 11.4.2 SUM 329 11.4.3 MAX/MIN 330 11.4.4 AVG 330 11.5 分组数据 331 11.6 HAVING 332 11.7 独特值 333 11.8 函数 333 11.8.1 日期和时间函数 334 11.8.2 字符串函数 336 11.8.3 系统函数 340 11.9 RAISERROR 343 11.10 错误处理 347 11.11 @@ERROR 347 11.12 TRY...CATCH 348 11.13 小结 351 第12章 高级T-SQL 352 12.1 子查询 352 12.1.1 IN 354 12.1.2 EXISTS 354 12.1.3 了结未了之事 355 12.2 APPLY运算符 356 12.2.1 CROSS APPLY 357 12.2.2 OUTER APPLY 358 12.3 公用表表达式 358 12.4 透视数据 361 12.4.1 PIVOT 361 12.4.2 UNPIVOT 363 12.5 排名函数 363 12.5.1 ROW_NUMBER 364 12.5.2 RANK 366 12.5.3 DENSE_RANK 366 12.5.4 NTILE 367 12.6 SQL Server中的PowerShell 367 12.7 小结 371 第13章 触发器 372 13.1 什么是触发器 372 13.2 DML触发器 373 13.3 针对DML触发器的CREATE TRIGGER语法 374 13.4 为什么不使用约束 375 13.5 对逻辑表进行删除和插入 376 13.6 创建DML FOR触发器 377 13.7 检查特定的列 380 13.7.1 使用UPDATE() 380 13.7.2 使用COLUMNS_UPDATED() 384 13.8 DDL触发器 387 13.8.1 DDL_DATABASE_LEVEL_EVENTS 387 13.8.2 删除DDL触发器 389 13.8.3 EVENTDATA() 389 13.9 小结 392 第14章 SQL Server 2008 Reporting Services 393 14.1 Reporting Services的架构 394 14.2 配置Reporting Services 395 14.3 使用报表设计器构建第一个报表 400 14.4 小结 406 前言   本书针对那些想成为开发人员、数据库管理员或者兼为两者,但对SQL Server 2008还不熟悉的读者。无论你是否拥有数据库知识,是否了解桌面数据库(如Microsoft Access),甚至是否具有服务器(如Oracle)的背景,本书都能为你提供SQL Server 2008入门和运行的知识。.   从现在开始,本书将使你的基础知识得以扩展,让你很快从初学者成长为合格的专业开发人员。本书面向广大开发人员,从喜欢使用图形界面的程序员,到希望成为SQL Server 2008编程语言Transact SQL(T-SQL)高手的程序员。本书将尽可能贴近实际地演示、说明和展开叙述每一种使用SQL Server 2008的方法,以便你能够判断哪种方式最适合自己。   本书包含大量的示例,以使你了解SQL Server的各个领域是如何工作的,以及怎样才能把技术应用到自己的工作中。你将学习完成某项任务的最佳方法,你甚至能学会在面临两个或更多的选择时,如何做出正确的决策。只要学习完本书,你就能游刃有余地设计和创建坚实可靠的数据库解决方案。   读者对象   本书适用的对象是刚开始使用SQL Server 2008的开发人员,或立志成为数据库管理人员的读者。本书在结构安排上兼顾了这两类读者。   本书的结构   本书将帮助你决定购买SQL Server 2008的哪种版本,为你展示如何安装和配置SQL Server 2008,并阐释如何使用图形用户界面工具SSMS(SQL Server Management Studio)。你将使用该工具完成一个功能完备的数据库示例,该数据库根据本书中介绍的设计方案,利用图形的和基于代码的练习创建而成。然后,你将学习数据库安全方面的知识,并了解如何实施安全可靠的数据库设置。只要备份了数据库,你就可以学习如何操作数据。先从简单的代码编写技术入手,逐渐过渡到更加复杂的技术。最后的任务是在数据库上创建和生成报表。本书会贯穿始终地说明每一个细节,告知你正在发生什么,并确保随着对本书阅读的深入,你将在从之前章节中获取的知识上,不断提高。你将以一种有条理、有组织的方式发展构筑自己的专业知识。..   必要准备   要学习本书,你必须有SQL Server 2008开发版本的完整版或评估版。此外,如果想要为特定的Windows登录更改安全设置,有Windows Vista旗舰版或商业版将十分理想,但并非必须如此。   代码下载   可以通过出版社网站下载本书的示例代码 。   联系作者   可以通过发邮件到robin@fat-belly.com来联系Robin Dewson,也可以通过他的网站(http://www. fat-belly.com)与他取得联系。   致谢   这里,要再次感谢许许多多的人:感谢热心的Damian Fisher,多谢你教我打鼓;感谢Andrew和host-it Internet Solutions(我的ISP)的所有人,谢谢你们容忍我在SQL Server和DotNetNuke上喋喋不休的争辩;感谢我的老板Bill Cotton和Aubrey Lomas,以及在Lehman Brothers的同事Andrew O’Donnell,还有优秀的数据库管理员Andrew Harding;感谢我大学时的好朋友Robert McMillan(Toad),时隔多年,我们才又取得了联系;还要感谢Simon Collier,我们每周打乒乓球,你总把我打得无还手之力;感谢Bedford Blues橄榄球俱乐部的所有人,你们让我每个周六都激动不已。   由于许许多多的原因,我必须感谢Red Gate Software的几个人,他们是Tony Davis和Richard Collins。多年来,在我的SQL Server工作中,Tony Davis一直是那么出色,而Richard Collins安排了Apress和Red Gate的合作。此外,还要感谢SalarO的Salar Golestanian,他制作了精美的皮肤,我把它们用在我的网站建设上。   同样,要感谢我的岳母Jean,多谢她极为出色地处理需要解决的事情,并让我的妻子保持头脑清醒。还要感谢我已故的岳父David,对我们全家来说,他是一个十分英明的人。   当然,还要感谢Apress的全体人员,特别是为本书提供帮助的Kylie Johnston和Jonathan Gennick,以及Paul Carlstroem和Gary Cornell。   最后,还得感谢Barr夫妇,多谢他们配制的苏格兰另类民族饮料。...    媒体评论   “本书是SQL Server数据库初学者的明智选择。它不仅很好地介绍了SQL Server的主要特性,还深入浅出地阐述了数据库开发和设计的一般性概念。”.   ——Amazon读者评论..   “即使是我这种原本对SQL Server一无所知的人,在开始读这本书后,也会兴趣陡增,热情高涨,满怀信心地靠它从新手变为专家。相信你的成效一定比我更大。”   ——Amazon读者评论...
pdf
发布资源于 8 年前

SQL Server 2005基础教程--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server 2005基础教程 基本信息 原书名: Beginning SQL Server 2005 for Developers: From Novice to Professional 原出版社: Apress 作者: (美)Robin Dewson    译者: 董明 丛书名: 图灵程序设计丛书·数据库系列 出版社:人民邮电出版社 ISBN:7115154392 上架时间:2006-11-22 出版日期:2006 年1
pdf
发布资源于 8 年前

MySQL技术内幕(第4版)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 MySQL技术内幕(第4版) 基本信息 原书名: MySQL (4th Edition) 原出版社: Addison-Wesley Professional 作者: (美)Paul DuBois    译者: 杨晓云 王建桥 杨涛 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115255952 上架时间:2011-7-6 出版日期:2011 年7月 开本:16开 页码:886 版次:4-1 主编推荐     通过阅读由杜波依斯编著的《MySQL技术内幕(第4版)》,可以高效地掌握MySQL的使用方法,从而高效地完成自己的工作。你将会学到怎样把信息资料录入数据库,怎样构造出查询语句以迅速获得有关问题的答案。     即使不是程序员,也可以学习和使用SQL。本书内容的重点之一就是介绍SQL的工作原理。但熟悉SQL的语法并不代表你掌握了SQL的使用技巧,所以本书的另一个重点就是介绍MySQL的独特功能及其用法。 内容简介     《MySQL技术内幕(第4版)》介绍了MySQL的基础知识及其有别于其他数据库系统的独特功能,包括SQL的工作原理和MySQL API的相关知识;讲述了如何将MySQL与Perl或PHP等语言结合起来,为数据库查询结果生成动态Web页面,如何编写MySQL数据访问程序;详细讨论了数据库管理和维护、数据目录的组织和内容、访问控制、安全连接等。附录还提供了软件的安装信息,罗列了MySQL数据类型、函数、变量、语法、程序、API等重要细节。     《MySQL技术内幕(第4版)》是一部全面的MySQL指南,对数据库系统感兴趣的读者都能从中获益。 作者简介     Paul DuBois  Sun 公司MySQL文档团队的技术作者、开源社区和MySQL社区活跃的技术专家,同时也是一名数据库管理员。他曾参与过MySQL在线文档的编写工作。除本书外,他还著有MySQL and Perl for the Web、MySQL Cookbook、Using csh and tcsh以及Software Portability with imake等书。 目录 封面 -24 封底 -23 扉页 -22 版权 -21 版权声明 -20 前言 -18 致谢 -8 目录 -6 第一部分 MySQL基础知识 1 第1章 MySQL和SQL 入门 2 1.1 MySQL的用途 2 1.2 示例数据库 4 1.2.1 “美国历史研究会”场景 5 1.2.2 考试记分项目 7 1.2.3 关于示例数据库的说明 7 1.3 数据库基本术语 7 1.3.1 数据库的组织结构 8 1.3.2 数据库查询语言 10 1.3.3 MySQL的体系结构 10 1.4 MySQL 11 1.4.1 如何获得示例数据库 12 1.4.2 最低配置要求 12 1.4.3 如何建立和断开与服务器的连接 13 1.4.4 执行SQL语句 15 1.4.5 创建数据库 17 1.4.6 创建数据表 18 1.4.7 如何添加新的数据行 33 1.4.8 将sampdb数据库重设为原来的状态 36 1.4.9 检索信息 37 1.4.10 如何删除或更新现有的数据行 64 1.5 与客户程序MySQL交互的技巧 66 1.5.1 简化连接过程 67 1.5.2 减少输入查询命令时的打字动作 69 1.6 后面各章的学习计划 72 第2章 使用SQL管理数据 73 2.1 MySQL服务器的SQL模式 73 2.2 MySQL标识符语法和命名规则 74 2.3 SQL语句中的字母大小写问题  77 2.4 字符集支持 78 2.4.1 字符集的设定 79 2.4.2 确定可供选用的字符集和当前设置 80 2.4.3  Unicode支持 81 2.5  数据库的选定、创建、删除和变更 82 2.5.1 数据库的选定 82 2.5.2 数据库的创建 82 2.5.3 数据库的删除 83 2.5.4 数据库的变更 83 2.6 数据表的创建、删除、索引和变更 84 2.6.1 存储引擎的特征 84 2.6.2 创建数据表 90 2.6.3 删除数据表 101 2.6.4 为数据表编制索引 101 2.6.5 改变数据表的结构 106 2.7 获取数据库的元数据 108 2.7.1 用SHOW语句获取元数据 109 2.7.2 从INFORMATION_SCHEMA数据库获取元数据 110 2.7.3 从命令行获取元数据 112 2.8 利用联结操作对多个数据表进行检索 113 2.8.1 内联结 114 2.8.2 避免歧义:如何在联结操作中给出数据列的名字 116 2.8.3 左联结和右联结(外联结) 116 2.9 用子查询进行多数据表检索 120 2.9.1 子查询与关系比较操作符 121 2.9.2 IN和NOT IN子查询 122 2.9.3 ALL、ANY和SOME子查询 123 2.9.4 EXISTS和NOT EXISTS子查询 124 2.9.5 与主查询相关的子查询 124 2.9.6 FROM子句中的子查询 124 2.9.7 把子查询改写为联结查询 125 2.10 用UNION语句进行多数据表检索 126 2.11 使用视图 129 2.12 涉及多个数据表的删除和更新操作 133 2.13 事务处理 134 2.13.1 利用事务来保证语句的安全执行 135 2.13.2 使用事务保存点 139 2.13.3 事务的隔离性 139 2.13.4 事务问题的非事务解决方案 140 2.14 外键和引用完整性 143 2.14.1 外键的创建和使用 144 2.14.2 如果不能使用外键该怎么办 149 2.15 使用FULLTEXT索引 150 2.15.1 全文搜索:自然语言模式 151 2.15.2 全文搜索:布尔模式 153 2.15.3 全文搜索:查询扩展模式 154 2.15.4 配置全文搜索引擎 155 第3章 数据类型 156 3.1 数据值的类别 157 3.1.1 数值 157 3.1.2 字符串值 158 3.1.3 日期/时间值 166 3.1.4 坐标值 166 3.1.5 布尔值 166 3.1.6 空值NULL 166 3.2 MySQL的数据类型 166 3.2.1 数据类型概述 167 3.2.2 数据表中的特殊列类型 168 3.2.3 指定列默认值 169 3.2.4 数值数据类型 170 3.2.5 字符串数据类型 176 3.2.6 日期/时间数据类型 189 3.2.7 空间数据类型 196 3.3 MySQL如何处理非法数据值 197 3.4 序列 199 3.4.1 通用AUTO_INCREMENT属性 199 3.4.2 与特定存储引擎有关的AUTO_INCREMENT属性 201 3.4.3 使用AUTO_INCREMENT数据列时的要点 203 3.4.4 使用AUTO_INCREMENT机制时的注意事项 204 3.4.5 如何在不使用AUTO_INCREMENT的情况下生成序列编号 205 3.5 表达式求值和类型转换 207 3.5.1 表达式的编写 207 3.5.2 类型转换 213 3.6 数据类型的选用 220 3.6.1 数据列将容纳什么样的数据 222 3.6.2 数据是否都在某个特定的区间内 224 3.6.3 与挑选数据类型有关的问题是相互影响的 225 第4章 存储程序 227 4.1 复合语句和语句分隔符 228 4.2 存储函数和存储过程 229 4.2.1 存储函数和存储过程的权限 231 4.2.2 存储过程的参数类型 232 4.3 触发器 233 4.4 事件 234 4.5 存储程序和视图的安全性 236 第5章 查询优化 237 5.1 使用索引 237 5.1.1 索引的优点 238 5.1.2 索引的缺点 240 5.1.3 挑选索引 241 5.2 MySQL的查询优化程序 243 5.2.1 查询优化器的工作原理 244 5.2.2 用EXPLAIN 语句检查优化器操作 247 5.3 为提高查询效率而挑选数据类型 252 5.4 有效加载数据 255 5.5 调度和锁定问题 258 5.5.1 改变语句的执行优先级 259 5.5.2 使用延迟插入 259 5.5.3 使用并发插入 260 5.5.4 锁定级别与并发性 260 5.6 系统管理员所完成的优化 261 5.6.1 使用MyISAM键缓存 263 5.6.2 使用查询缓存 264 5.6.3 硬件优化 265 第二部 分 MySQL的编程接口 267 第6章 MySQL程序设计 268 6.1 为什么要自己编写MySQL程序 268 6.2 MySQL应用程序可用的API 271 6.2.1 C API 272 6.2.2 Perl DBI API 272 6.2.3 PHP API 274 6.3 如何挑选API 275 6.3.1 执行环境 275 6.3.2 性能 276 6.3.3 开发时间 278 6.3.4 可移植性 280 第7章 用C语言编写MySQL程序 281 7.1 编译和链接客户程序 282 7.2 连接到服务器 284 7.3 出错消息和命令行选项的处理 287 7.3.1 出错检查 287 7.3.2 实时获取连接参数 290 7.3.3 给MySQL客户程序增加选项处理功能 301 7.4 处理SQL语句 305 7.4.1 处理修改数据行的语句 306 7.4.2 处理有结果集的语句 307 7.4.3 一个通用的语句处理程序 310 7.4.4 另一种语句处理方案 311 7.4.5 mysql_store_result()与mysql_use_result()函数的对比 312 7.4.6 使用结果集元数据 314 7.4.7 对特殊字符和二进制数据进行编码 319 7.5 交互式语句执行程序 322 7.6 怎样编写具备SSL支持的客户程序 323 7.7 嵌入式服务器库的使用 327 7.7.1 编写内建了服务器的应用程序 328 7.7.2 生成应用程序可执行二进制文件 330 7.8 一次执行多条语句 331 7.9 使用服务器端预处理语句 333 第8章 使用Perl DBI编写MySQL程序 343 8.1 Perl脚本的特点 343 8.2 Perl DBI概述 344 8.2.1 DBI数据类型 344 8.2.2 一个简单的DBI脚本 345 8.2.3 出错处理 349 8.2.4 处理修改数据行的语句 352 8.2.5 处理返回结果集的语句 353 8.2.6 在语句字符串引用特殊字符 361 8.2.7 占位符与预处理语句 363 8.2.8 把查询结果绑定到脚本变量 365 8.2.9 设定连接参数 366 8.2.10 调试 369 8.2.11 使用结果集的元数据 372 8.2.12 实现事务处理 376 8.3 DBI脚本实战 377 8.3.1 生成美国历史研究会会员名录 377 8.3.2 发出会费催交通知 382 8.3.3 会员记录项的编辑修改 387 8.3.4 寻找志趣相同的会员 392 8.3.5 把会员名录放到网上 393 8.4 用DBI开发Web应用 396 8.4.1 配置Apache服务器使用CGI脚本 397 8.4.2 CGI.pm模块简介 398 8.4.3 从Web脚本连接MySQL服务器 404 8.4.4 一个基于Web的数据库浏览器 406 8.4.5 考试记分项目:考试分数浏览器 410 8.4.6 美国历史研究会:寻找志趣相同的会员 413 第9章 用PHP编写MySQL程序 418 9.1 PHP概述 419 9.1.1 一个简单的PHP脚本 421 9.1.2 利用PHP库文件实现代码封装 424 9.1.3 简单的数据检索页面 428 9.1.4 处理语句结果 431 9.1.5 测试查询结果里的NULL值 434 9.1.6 使用预处理语句 434 9.1.7 利用占位符来处理带引号的数据值 435 9.1.8 出错处理 437 9.2 PHP脚本实战 438 9.2.1 考试分数的在线录入 438 9.2.2 创建一个交互式在线测验 449 9.2.3 美国历史研究会:会员个人资料的在线修改 454 第三部分 MySQL的系统管理 461 第10章 MySQL系统管理简介 462 10.1 MySQL组件 462 10.2 常规管理 463 10.3 访问控制与安全性 464 10.4 数据库的维护、备份和复制 464 第11章 MySQL的数据目录 466 11.1 数据目录的位置 466 11.2 数据目录的层次结构 468 11.2.1 MySQL服务器如何提供对数据的访问 468 11.2.2 MySQL数据库在文件系统里是如何表示的 469 11.2.3 数据表在文件系统里的表示方式 470 11.2.4 视图和触发器在文件系统里的表示方式 471 11.2.5 SQL语句与数据表文件操作的对应关系 472 11.2.6 操作系统对数据库对象的命名规则有何影响 472 11.2.7 影响数据表最大长度的因素 474 11.2.8 数据目录的结构对系统性能的影响 475 11.2.9 MySQL状态文件和日志文件 477 11.3 重新安置数据目录的内容 479 11.3.1 重新安置工作的具体方法 479 11.3.2 重新安置注意事项 480 11.3.3 评估重新安置的效果 480 11.3.4 重新安置整个数据目录 481 11.3.5 重新安置各个数据库 481 11.3.6 重新安置各个数据表 482 11.3.7 重新安置InnoDB共享表空间 482 11.3.8 重新安置状态文件和日志文件 482 第12章 MySQL数据库系统的日常管理 484 12.1 安装MySQL软件后的初始安防设置 484 12.1.1 为初始MySQL账户设置口令 485 12.1.2 为第二个服务器设置口令 489 12.2 安排MySQL服务器的启动和关停 489 12.2.1 在Unix上运行MySQL服务器 489 12.2.2 在Windows上运行MySQL服务器 493 12.2.3 指定服务器启动选项 495 12.2.4 关闭服务器 497 12.2.5 当你未能连接至服务器时重新获得服务器的控制 497 12.3 对MySQL服务器的连接监听情况进行控制 499 12.4 管理MySQL用户账户 500 12.4.1 高级MySQL账户管理操作 501 12.4.2 对账户授权 503 12.4.3 查看账户的权限 510 12.4.4 撤销权限和删除用户 510 12.4.5 改变口令或重新设置丢失的口令 511 12.5 维护日志文件 512 12.5.1 出错日志 514 12.5.2 常规查询日志 515 12.5.3 慢查询日志 515 12.5.4 二进制日志和二进制日志索引文件 516 12.5.5 中继日志和中继日志索引文件 517 12.5.6 日志数据表的使用 518 12.5.7 日志管理 519 12.6 调整MySQL服务器 524 12.6.1 查看和设置系统变量的值 525 12.6.2 通用型系统变量 528 12.6.3 查看状态变量的值 530 12.7 存储引擎的配置 531 12.7.1 为MySQL服务器挑选存储引擎 531 12.7.2 配置MyISAM存储引擎 533 12.7.3 配置InnoDB存储引擎 536 12.7.4 配置Falcon存储引擎 541 12.8 启用或者禁用LOAD DATA语句的LOCAL能力 541 12.9 国际化和本地化问题 542 12.9.1 设置MySQL服务器的地理时区 542 12.9.2 选择用来显示出错信息的语言 544 12.9.3 配置MySQL服务器的字符集支持 544 12.10 运行多个服务器 545 12.10.1 运行多个服务器的问题 545 12.10.2 配置和编译不同的服务器 547 12.10.3 指定启动选项的决策 548 12.10.4 用于服务器管理的mysqld_multi 549 12.10.5 在Windows系统上运行多个MySQL服务器 550 12.11 升 级MySQL 553 第13章 访问控件和安全 555 13.1 内部安全性:防止未经授权的文件系统访问 555 13.1.1 如何偷取数据 556 13.1.2 保护你的MySQL安装 557 13.2 外部安全性:防止未经授权的网络访问 562 13.2.1 MySQL权限表的结构和内容 562 13.2.2 服务器如何控制客户访问 568 13.2.3 一个关于权限的难题 572 13.2.4 应该回避的权限数据表风险 575 13.3 加密连接的建立 577 第14章 MySQL数据库的维护、备份和复制 582 14.1 数据库预防性维护工作的基本原则 582 14.2  在MySQL服务器运行时维护数据库 583 14.2.1 以只读方式或读/写方式锁定一个或多个数据表 584 14.2.2 以只读方式锁定所有的数据库 586 14.3 预防性维护 587 14.3.1 充分利用MySQL服务器的自动恢复能力 587 14.3.2 定期进行预防性维护 588 14.4 制作数据库备份 589 14.4.1 用mysqldump程序制作文本备份 590 14.4.2 制作二进制数据库备份 593 14.4.3 备份InnoDB或Faclcon数据表 595 14.5 把数据库复制到另一个服务器 596 14.5.1 使用一个备份文件来复制数据库 596 14.5.2 把数据库从一个服务器复制到另一个 597 14.6 数据表的检查和修复 598 14.6.1 用服务器检查和修复数据表 599 14.6.2 用mysqlcheck程序检查和修复数据表 599 14.6.3 用myisamchk程序检查和修复数据表 600 14.7 使用备份进行数据恢复  603 14.7.1 恢复整个数据库 603 14.7.2 恢复数据表 604 14.7.3 重新执行二进制日志文件里的语句 605 14.7.4 InnoDB存储引擎的自动恢复功能 606 14.8 设置复制服务器 607 14.8.1 复制机制的工作原理 607 14.8.2 建立主从复制关系 609 14.8.3 二进制日志的格式 611 14.8.4 使用复制机制制作备份 612 第四部分 附录 613 附录A 获得并安装有关软件 614 附录B 数据类型指南 630 附录C 操作符与函数用法指南 643 附录D 系统变量、状态变量和用户变量使用指南 705 附录E SQL语法指南 746 附录F MySQL程序指南 823 附录G API指南 887 附录H Perl DBI API指南 930 附录I PHP API指南 953 前言 无论是在商业、科研和教育等方面的传统性应用项目里,还是作为因特网搜索引擎的后端支持,RDBMS(Relational Database Management System,关系数据库管理系统)在许多场合都是一种极其重要的工具。良好的数据库系统对于管理和访问信息资源来说至关重要,但很多企事业单位都没有足够的财力建立起自己的数据库系统。从历史上看,数据库系统一直是价格昂贵的产品,无论是软件本身还是后续的技术支持,供货商从来都是漫天要价。此外,为了获得令人满意的性能表现,数据库引擎往往对计算机硬件要求很高,而这又将使数据库系统的运营成本大大增加。 计算机硬件和软件在最近几年里的发展已经使这种情况得到了改善。小型桌面系统和服务器的价格越来越低,性能越来越高,而为它们编写高性能操作系统正成为一种潮流。这些操作系统有的可以从因特网免费获得,有的可以通过价格低廉的CD获得。它们包括BSD Unix操作系统的几种变体(如FreeBSD、NetBSD、OpenBSD等)以及各种各样的Linux发行版本(如Fedora、Debian、Gentoo、SuSE等)。 免费的操作系统因诸如GNU C编译器gcc之类的免费开发工具的发展而日臻完善。让任何人都能得到想要的软件,这正是开源运动的一部分。开源项目已经为我们提供了很多重要的软件产品,如因特网上使用范围最广的Web服务器Apache,以及广泛应用的通用脚本语言Perl、Python和Ruby,还有非常便于编写动态Web页面的PHP语言等。与此形成鲜明对比的是,如果决定采用某种专有的商业化解决方案,就不得不忍受供货商漫天要价,而且还极有可能根本看不到它的源代码。 开源运动也使免费的数据库软件和数据库系统越来越容易获得。例如MySQL就是一种免费的数据库系统,它是一种客户/服务器模式的关系数据库管理系统,最初起源于欧洲的斯堪的纳维亚半岛。MySQL由以下组件构成:一个SQL服务器、一些用来访问该服务器的客户程序、一套用来对数据库进行管理的软件工具,以及供用户自己编写程序的编程接口。 MySQL起源于Michael Widenius(外号Monty)在1979年为瑞典的TcX公司开发的一套名为UNIREG的数据库工具。到了1994年,TcX公司开始寻求一种能够用来开发Web应用的数据库服务器。TcX公司对几种商业化的服务器进行了测试,对它们在处理TcX公司的大数据表时的速度都不太满意。该公司还测试了mSQL,它缺少某些必要的功能。因此,Monty开始开发一种新的服务器。因为mSQL有一些免费的软件工具,所以新服务器的编程接口被有意设计成与mSQL所使用的编程接口非常相似。采用相似的编程接口将大大减少把那些免费的软件工具移植到MySQL的工作量。 到了1995年,Detron HB公司的David Axmark开始在因特网上推广和发行TcX公司研发的MySQL。David为MySQL编写了许多文档,增加了利用GNU组织的configure工具进行安装配置的功能。适用于Linux和Solaris系统的MySQL 3.11.1的二进制版本于1996年面世。如今,MySQL不仅能够在许多种计算机平台上运行,还同时提供二进制版本和源代码版本。MySQL在开源许可证和商业许可证下的发布、技术支持、监控服务和培训工作以前由MySQL AB公司专门负责。Sun公司在2008年收购了MySQL AB公司,但保持了MySQL的开源特色(Sun公司的许多产品现在都可以在开源许可证下获得和使用)。 早期的MySQL广受欢迎的主要原因是它的速度和简单性,但因为缺少诸如事务处理(transaction)和外键支持(foreign key support)之类的高级功能,所以也有一些批评的声音。MySQL的开发和完善工作从未停止,发展至今,事务处理、外键支持、复制(replication)、子查询、存储过程、视图和触发器等功能都已被添至其中。这些功能让MySQL进入了企业级数据库软件的行列。结果,许多原来只考虑大型数据库系统而对MySQL不屑一顾的用户开始认真评估MySQL了。 MySQL的可移植性非常好,它可以运行在商业化操作系统(如Mac OS X、HP-UX和Windows)以及包括桌面电脑和企业级服务器的硬件平台上。此外,MySQL的运行性能绝不逊色于任何一种数据库系统,即使面对容纳着几十亿条数据记录的大型数据库,它也能游刃有余。在商业领域里,MySQL的地盘一直在扩大,这是因为许多公司的老板发现,与购买商业化许可证和技术支持服务相比,只需花一点零头就可以满足数据库处理需求。 未来我们将可以在功能强大但价格低廉的硬件设备上运行免费的操作系统,将有越来越多的人和商业机构在各种各样的硬件系统上拥有强大的计算能力和其他功能,MySQL则在其中起着重要作用。获得强大计算能力的经济成本的门槛正变得越来越低,大型数据库解决方案对普通用户和企业来说也已经不再是可望不可及的了。在过去,高性能的RDBMS只能出现在广大中小企业的梦想里,可现在,只需付出极低的成本和代价就能享用到这些东西。这一点对个人用户而言就更加突出了。就拿我本人来说吧,我有一台苹果笔记本电脑,在它的Mac OS X操作系统上,我同时使用着MySQL以及Perl、Apache和PHP。这使我能够随时随地工作,而这一解决方案的总成本只是笔记本电脑的价钱而已。 为什么要选用MySQL 如果你正在寻求一种完全免费或者价格比较低廉的数据库管理系统,可以从MySQL、PostgreSQL和SQLite等软件中选择一个。在对MySQL和其他数据库系统进行评估之前,首先要弄清楚什么因素对自己最重要。你需要从运行性能、技术支持、特色功能(例如与SQL的兼容程度和可扩展性等)、许可证条件、购买价格等多方面进行全面的考虑。由此判断,MySQL在以下方面有比较吸引人的优势。 运行速度。MySQL的运行速度相当快,MySQL开发人员相信它是目前最快的数据库系统。你可以在MySQL网站http://www.mysql.com/why-mysql/benchmarks/上的性能比较主页上查到有关数据。 易使用。MySQL是一种简单易用的高性能数据库系统,与其他大型数据库系统相比,MySQL的安装和管理工作要容易得多。 查询语言支持。MySQL支持SQL语言,SQL是各种现代数据库系统的首选查询语言。 功能丰富。MySQL是多线程的,允许多个客户同时与服务器建立连接。每个客户都可以同时打开并使用多个数据库。你可以通过好几种办法(如命令行客户程序、Web浏览器、GUI客户程序等)对MySQL数据库进行交互式访问,在输入查询命令后立刻看到查询结果。此外,MySQL还准备了C、Perl、Java、PHP、Python和Ruby等多种语言的编程接口。你还可以通过支持ODBC(Open Database Connectivity,数据库开放连接,一种由微软公司开发的数据库通信协议)功能和.NET的应用程序来访问MySQL数据库。也就是说,你既可以选用现成的客户程序来访问MySQL数据库,也可以根据具体的应用来编写相关软件。 优异的联网和安防性能。MySQL是完全网络化的数据库系统,用户可以从因特网上的任意地点去访问它,因此你完全可以把你的数据拿出来与任何地方的任何人共享。同时,MySQL还具备完善的访问控制机制,这就将那些不应该看到你数据的人拒之门外。此外,为了提供更进一步的安防措施,MySQL还支持使用SSL(Secure Socket Layer,安全套接字层)协议的加密连接。 可移植性。MySQL既能够运行在多种版本的Unix和Linux操作系统上,也能够运行在Windows和NetWare系统上。MySQL可以运行在各种硬件设备上,包括高端服务器。 短小精悍。与某些数据库系统巨大的硬盘空间消耗量相比,MySQL发行版本的硬盘占用量相对要小得多。 成本低廉。MySQL是一个开源项目,只要遵守GNU组织的GPL(General Public License)许可证条款,就可以任意使用。这意味着MySQL在大多数情况下都是免费的。其次,如果是喜欢或需要正规安排或是不想接受GPL许可证约束的组织,还有商业许可证可供选择。 来源广泛。MySQL很容易获得,只要你有Web浏览器,就能从许多地方下载它。如果你想知道某个组件的工作原理,对它的某个算法感到好奇,或者想进行安全检查,你完全可以通过源代码来钻研它。如果你不喜欢它的某个组件,也完全可以自行加以修改。如果你自认为发现了一个bug,可以报告给相关开发人员。 MySQL的技术支持怎么样?这个问题问得好,不能提供支持的数据库系统没什么用。本书就是一种支持,希望它可以满足你在数据库方面的需要(本书既然是第4版了,就表明它能做到这一点)。你还可以利用其他一些MySQL的相关资源。 MySQL的发行版本都带有《MySQL参考手册》(MySQL Reference Manual),有在线版和印刷版。MySQL用户对这本手册都给予了很高的评价。这一点非常重要,因为如果没有人知道如何使用,再好的软件产品也会贬值。 如果你想得到正规的培训或者专业的技术支持,可以报名参加Sun公司开设的培训课程,或者与该公司签订技术支持和跟踪服务合同。 MySQL社区有一些非常活跃的邮件列表,任何人都能订阅。这些邮件列表有很多专家级的参与者,许多MySQL开发人员都是它的常客。作为提供技术支持的电子资源,它们被很多订阅者认为是物有所值。 MySQL大家庭(包括开发人员和普通用户在内)是一个团结互助的群体。贴在邮件列表上的求助帖子通常在几分钟内就会得到回复。如果有人报告说发现了一个bug并得到确认,开发人员就会马上发布一个修补方案并经由因特网迅速传遍整个社区。与此形成鲜明对照的是,某些大厂商提供的技术支持服务令人困惑,那种不得其门而入的感觉实在让人着急上火。你遇到过这样的情况吗?我遇到过。 如果你正打算挑选一种数据库产品,那么MySQL绝对是理想的候选。使用MySQL既无风险,也不需要花费金钱。如果你遇到了问题,还可以通过邮件列表寻求帮助。当然了,做这样的评估必定会花费一些时间,但无论你原来计划使用哪种数据库产品,反正都要花时间评估。与很多其他的数据库产品相比,安装和测试MySQL的时间肯定少得多。 如果已经在运行其他RDBMS,该怎么办 如果你已经在使用某种数据库系统,但又颇受限制,那就绝对应该给MySQL一个机会。也许你觉得自己现有系统的性能不太好,也许它是一个专有产品而你又不想吊死在一棵树上,也许你想更换现有的硬件设备而现有的软件系统却不支持,也许你现有的软件都是二进制代码而你更希望得到一种能够提供源代码的系统,也许你只是嫌它花钱太多……这一切都是你应该给MySQL一个机会的理由。你可以先通过本书熟悉一下MySQL的功能,再到MySQL邮件列表上提几个问题,然后再根据具体情况慎重抉择。 要明确的是,尽管所有主要的数据库引擎都支持SQL语言,但每种引擎支持不同的“方言”。请查阅本书关于MySQL所支持的SQL“方言”以及相关数据类型的章节。你也许会发现它们与你目前使用的RDBMS所支持的SQL版本区别太大,因而需要付出巨大的努力才能把你的应用程序迁移到MySQL系统上来。 当然,作为评估工作的一部分,应该先通过几个例子看看效果。这会让你在评估时获得宝贵的实际体验。MySQL的研发人员一直在努力让MySQL符合SQL语言标准,其效果之一就是让数据库应用程序迁移道路上的障碍随着时间的推移而不断减少,所以你的迁移工作很可能会比预期的容易许多。 MySQL提供的软件工具 MySQL的发行版本都附带以下几种工具程序。 一个SQL服务器。运转整个MySQL的引擎,对MySQL数据库的访问和操作都要通过它才能实现。 客户程序和工具程序。其中包括一个供你直接提交查询并查看其结果的交互式客户程序以及几个用来对数据库站点进行管理和维护的工具程序。有一个工具程序用来监控MySQL服务器,另外几个工具程序则负责数据的导入、备份、数据表问题检查等。 一个供你自行开发应用程序的客户端库。这个函数库是用C语言写的,所以你可以用C语言来编写客户程序。此外,这个函数库还提供了一些供其他语言(如Perl、PHP和Ruby)使用的第三方接口。 除MySQL本身提供的软件外,有很多聪明人也使用MySQL编写一些小程序来提高工作效率,并把自己的成果拿出来与大家分享。在这些第三方工具软件里,有些能帮助你更加得心应手地使用MySQL,还有一些把MySQL的功能进一步扩展到Web站点建设等方面中。 本书能让你学到哪些东西 通过阅读本书,可以高效地掌握MySQL的使用方法,从而高效地完成自己的工作。你将会学到怎样把信息资料录入数据库,怎样构造出查询语句以迅速获得有关问题的答案。 即使不是程序员,也可以学习和使用SQL。本书内容的重点之一就是介绍SQL的工作原理。但熟悉SQL的语法并不代表你掌握了SQL的使用技巧,所以本书的另一个重点就是介绍MySQL的独特功能及其用法。 你将学习如何把MySQL与其他软件工具结合起来。本书还将介绍如何通过MySQL与Perl或PHP语言来为数据库的查询结果生成动态Web页面,以及如何自行编写MySQL数据库访问程序。自行编写的程序会大大拓展MySQL的功能,满足应用项目的具体要求。 对于那些负责MySQL安装的人员,本书将为他们介绍有关职责及具体工作流程。你将学会如何建立用户账户,如何备份数据库,以及如何保证数据库的安全。 本书各章内容 本书内容分四部分。第一部分集中讨论数据库应用方面的概念。第二部分的重点是如何使用MySQL编写你们自己的程序。第三部分的目标读者是数据库管理员。第四部分是几个参考附录。 第一部分:MySQL基础知识 第1章主要包括MySQL的用途与用法、交互式MySQL客户程序的使用方法、SQL基础知识和MySQL的常用功能。 如今,各种主流的RDBMS都能识别和理解SQL语言,但各种数据库引擎所使用的SQL语言彼此有着细微的差异。第2章重点介绍使MySQL有别于其他数据库系统的特色功能。 第3章主要包括MySQL为存储信息而提供的数据类型、各种类型的特点和局限性、它们的使用时机和使用方法,以及如何在相似的数据类型中作出选择,还有表达式的求值办法和各类型之间的转换机制等。 第4章讨论如何编写和使用存储在服务器端的SQL程序,包括各种存储函数、存储过程、触发器和事件。 第5章讨论如何使查询有效地运行。 第二部分:MySQL的编程接口 第6章介绍MySQL提供的几种API(Application Programming Interface,应用程序编程接口)以及本书所涉及的几种API之间的详细比较。 第7章讲述如何利用MySQL的C客户端库所提供的API来编写C语言程序。 第8章探讨如何利用DBI模块编写Perl脚本,包括独立的命令行脚本和用于网站的CGI脚本。 第9章介绍如何利用PHP脚本语言和PHP数据对象(PDO)的数据库访问扩展来编写用来访问MySQL数据库的动态Web页面。 第三部分:MySQL的系统管理 第10章介绍数据库管理员的工作职责,以及如何让数据库站点成功运行。 第11章详细介绍MySQL数据子目录(即MySQL用来存放各种数据库文件、日志文件和状态文件的地方)的组织布局和内容。 第12章阐述如何在操作系统开启和关闭时正确完成MySQL服务器的开启和关闭,如何在MySQL系统里建立用户账户,如何维护日志文件,如何配置存储引擎,如何优化数据库服务器,以及如何运行多个服务器,等等。 第13章介绍如何提高MySQL的安防水平以抵御各种入侵和破坏(可能来自数据库服务器主机的其他用户和网络客户端),如何配置你的MySQL服务器以支持SSL上的安全连接。 第14章阐释如何通过预防性措施来降低灾难的发生几率,如何备份数据库,如何在灾难真的发生时(即使采取了预防性措施)尽快恢复系统的运转。 第四部分:附录 附录A介绍如何获得并安装本书所提到的主要工具和示例数据库文件。 附录B详细说明MySQL数据类型。 附录C探讨在SQL语句中用来编写表达式的操作符和函数。 附录D介绍 MySQL服务器维护的各个变量和SQL语句变量的用法。 附录E描述MySQL支持的每个SQL语句。 附录F介绍MySQL发行版本所提供的程序。 说明 附录G、H、I需要上网获取。先访问www.informit.com/title/9780672329388,注册后可获取它们。也可以访问www.kitebird.com/mysql-book来获取它们 。 附录G介绍MySQL C客户端库所提供的数据类型和函数。 附录H讨论Perl DBI模块提供的方法和属性。 附录I介绍PDO扩展为在PHP中支持MySQL而提供的方法。 如何阅读本书 阅读本书的任何地方时,都应该同时尝试示例。这意味着你一定要先在计算机上安装MySQL,再安装示例数据库sampdb的有关文件,本书的许多示例都要用到sampdb数据库。获得和安装有关组件的办法与步骤可以在附录A里查到。 如果你是一位MySQL数据库系统或SQL语言的新手,请从本书的第1章开始学习。第1章介绍了MySQL与SQL的基本概念和使用入门,对加快本书后续章节的学习有很大帮助。然后再前进到第2章、第3章和第4章去学习如何描述和使用你自己的数据。这样,你就能有针对性地探索各种MySQL功能了。 即使你已经具备了一些SQL知识,也应该从第2章和第3章入手。不同的RDBMS系统所实现的SQL功能也不同,你应该首先弄清楚MySQL与你所熟悉的其他RDBMS系统有何区别。 如果你已经有了一些MySQL方面的经验但还需要进一步了解某些特定操作的原理,请把本书当做一本参考大全并根据需要有选择地查阅。你将发现书后的各个附录非常有价值。 如果你想编写能访问MySQL数据库的程序,请从第6章开始去学习有关API的章节。如果你想为自己的数据库开发一些便于使用的基于Web的前端访问程序,或者想为自己的数据库网站开发一些后端程序来增添动态内容,请阅读第8章和第9章。 如果要对MySQL和自己正在使用的RDBMS进行比较评估,本书的几个部分将有所帮助。如果想了解MySQL与你现有的SQL系统有何异同,请阅读本书第一部分中专门讨论数据类型和SQL语法的章节;如果你打算自己开发应用程序,请阅读第二部分中讨论编程的章节;如果你想了解MySQL需要何种级别的数据库管理功能,请阅读第三部分中有关管理的章节。如果你现在还没使用数据库,但正在对MySQL和其他数据库系统进行比较以作出选择,这些内容对你也将有很大的帮助。 书中涉及的软件及其版本 本书的第1版主要围绕MySQL 3.22版展开讨论并简要地介绍MySQL 3.23版。第2版把讨论范围扩大到了MySQL 4.0系列和MySQL 4.1系列的第一个发行版本。第3版讨论MySQL 4.1和MySQL 5.0中最早的几个发行版本。 本书是第4版,讨论的是MySQL 5.0。具体而言,本书将讨论MySQL 5.0和5.1版,以及MySQL 6.0中最早发行的几个版本。本书的大部分内容仍适用于5.0和更早的版本,但我们不会特别指出特定于老版本的地方。 MySQL 5.0系列已经达到了通用阶段(即所谓的GA版),也就是说它已被认为能够稳定地运行在日常生产环境里。因为在MySQL 5.0系列的早期发行版本里有大量的修改,所以建议大家尽量选择最新的版本。在我编写本书的时候,5.0系列的最新版本是5.0.64。MySQL 5.1系列现处于备选版开发(Candidate Development)阶段,应该很快就会达到通用阶段。如果你想试试诸如事件调度器或XML支持之类的功能,你将需要MySQL 5.1。 如果你正在使用的MySQL版本早于5.0,本书讨论的以下几项功能将不可用。 MySQL 5.0中增加的存储函数和过程、视图、触发器、脚本输入处理、真正的VARCHAR类型以及INFORMATION_SCHEMA。 MySQL 5.1增加的事件调度器、分区、日志数据表和XML支持。 如果需要了解老版本,请访问MySQL官方文档网站http://dev.mysql.com/doc/,在那里可以查到每个版本的《参考手册》。 请注意以下几个没在本书里讨论的主题。 一些MySQL Connector组件,用户可通过它们访问Java、ODBC和.NET程序。 NDB存储引擎和MySQL Cluster组件,它们用来提供以内存为介质的存储机制、高可用性和冗余。细节问题请查阅《MySQL参考手册》。 诸如MySQL Administrator和MySQL Query Brower之类的GUI(Graphical User Interface,图形化用户界面)工具。这些工具有助于在窗口环境里使用MySQL。 如果需要下载这些产品或查阅它们的文档,请访问http://www.mysql.com/products/或http://dev.mysql.com/doc/。 至于书中涉及的其他一些主要软件,目前比较常见的版本都应该可以满足书中示例的需要。(请注意:PDO数据库访问扩展必须使用PHP 5或更高版本,而在PHP 4环境下无法工作。)各主要软件的最新版本如下所示: 软件包 版本 Perl DBI模块 1.601 Perl DBD::mysql模块 4.007 PHP 5.2.6 Apache 2.0.63/2.2.8 CGI.pm 3.29 书中提到的所有软件都可以在因特网上找到。附录A介绍如何获得并在自己的系统上安装MySQL、Perl DBI、PHP和PDO、Apache、CGI.pm等软件,如何获得本书通篇使用的sampdb示例数据库(其中包含本书讲述程序设计时会用到的示例程序)。 如果读者使用的是Windows,我将假设你有Windows 2000、XP、2003或Vista之类相对较新的版本。本书里讨论的某些功能,例如命名管道和Windows服务,较早的版本(Windows 95、98或Me)不支持。 排版约定 本书的排版要求如下所示。 文件名和命令等都用Courier字体表示。 命令中需要由读者输入的部分用Courier加粗表示。 命令中需要由读者替换为自己选择的内容的部分用Courier斜体字表示。 在需要进行交互操作的例子里,我将假设你会把命令输入到终端窗口或控制台窗口。为反映出上下文环境,我将通过命令行提示符来表明所运行的命令的执行环境。比如说,对于通过mysql客户程序输入的SQL语句,相应的命令行提示符将是mysql>。对于通过命令解释器输入的命令,提示符将是%,这个提示符表示命令可以在Unix系统或者Windows系统下使用,但你们看到的提示符到底是什么要取决于命令解释器。(对Unix用户而言,命令解释器就是你的登录shell;对Windows用户而言,它是cmd.exe或command.exe程序)。#提示符的意义比较特殊,它表示命令通过su或sudo命令由Unix系统上的root用户执行,而C:\>提示符则表示Windows系统上的专用命令。 下面的例子给出了一条应该从命令解释器输入的命令。%是提示符,不需要输入。为了输入这条命令,需要依次输入粗体字字符并用你自己的用户名替换斜体字: % mysql --user=user-name sampdb 在SQL语句里,SQL关键字和函数名都用大写英文字母,而数据库、数据表、数据列的名称则全部用小写字母。 在语法描述中,方括号[]表示内容可选,可选的内容以垂直线字符|分隔。方括号内的列表是可选的,其具体内容应该是该列表里的某一个数据项。花括号{}内的列表是必不可少的,必须从该列表里选择一个数据项。 其他资源 如果你没能在本书里找到问题的答案,该怎么办呢?以下是一些软件的网站。 软件包 官方Web站点 MySQL http: //dev.mysql.com/doc/ Perl DBI http: //dbi.perl.org/ PHP http: //www.php.net / Apache http: //httpd.apache.org/ CGI.pm http: //search.cpan.org/dist/CGI.pm/ 这些网站提供的信息资源有参考手册、常见问题答疑文档(Frequently Asked-Question,FAQ)和各种邮件列表等。 参考手册。 MySQL发行版本中自带的主要文档。这些文档的格式有很多种,网上还有它们的在线版本和可下载版本。 PHP的使用手册也有好几种格式。 手册页面。DBI模块及其MySQL专用驱动程序DBD::mysql的文档可以从命令行使用perldoc命令查阅。试试perldoc DBI和perldoc DBD::mysql命令。DBI的文档侧重于基本概念,而其MySQL专用驱动程序的文档则侧重于与MySQL有关的各种具体功能。 FAQ文档。DBI、PHP、Apache各有各的FAQ文档。 邮件列表。本书所涉及的一些软件有它们各自的邮件列表。如果你打算使用某个工具软件,那最好订阅一份与之有关的邮件列表。使用邮件列表上的归档文件也是个好主意。如果你不熟悉某个软件工具,你的很多问题就可能是很多前人已经问过(并得到回答)无数次的了;你不必再提出类似的问题,因为它们的答案几乎都能在邮件列表的归档文件中搜索到。 不同的邮件列表有不同的订阅方式,下面这些URL地址可以为你提供相应的帮助。 软件包 邮件列表订阅站点 MySQL http: //lists.mysql.com / Perl DBI http: //dbi.perl.org /support/ PHP http: //www.php.net /mailing-lists.php Apache http: //httpd.apache.org /lists.html 其他网站。 除官方网站外,书中涉及的某些软件工具还另有一些提供其他信息(如示例程序的源代码和热门文章)的网站。这些网站大都可以通过官方网站上的链接找到。
pdf
发布资源于 8 年前

深入理解MySQL(MySQL核心开发人员力作)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 深入理解MySQL(MySQL核心开发人员力作) 基本信息 原书名: Expert MySQL 原出版社: Apress 作者: (美)Charles A. Bell    译者: 杨涛 王建桥 杨晓云 韩兰 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115189103 上架时间:2009-12-31 出版日期:2010 年1月 开本:16开 页码:467 版次:1-1 编辑推荐    MySQL核心开发人员力作    带你深入MySQL源代码和底层架构    身临其境,透彻掌握数据库理论与实践 内容简介    本书深入源代码,剖析了mysql数据库系统的架构,并提供了分析、集成和修改mysql源代码的专家级建议。本书分三个部分:第一部分介绍开发和修改开源系统的概念,提供探讨更高级数据库概念所需的工具和资源;第二部分讨论mysql系统,阐明如何修改mysql源码,如何将mysql系统作为嵌入式数据库系统;第三部分更深入地探讨了mysql系统,讲述数据库工作的内部机理。    本书面向mysql数据库开发人员。 作译者 作者: Charles A.Bell    Charles A.Bell,MySQL核心开发人员,目前是Sun公司高级软件工程师;同时也是弗吉尼亚联邦大学的客座教授,主要是为研究生讲授计算机科学课程。他主要从事新兴技术的研究,研究方向包括数据库系统、版本系统、语义网和敏捷软件开发等。 目录 封面 -10 封底 468 扉页 -9 版权 -8 前言 -7 目录 -4 第一部分 MySQL开发入门 1 第1章 MySQL与开源运动 2 1.1 什么是开源软件 2 1.1.1 为什么要使用开源软件 4 1.1.2 开源软件是否对商业软件构成真正的威胁 7 1.1.3 法律问题与《GNU宣言》 8 1.1.4 将开源进行到底 10 1.2 用MySQL进行开发 11 1.2.1 为什么修改MySQL 13 1.2.2 MySQL里哪些可以修改,有什么限制 14 1.2.3 MySQL的许可证问题 15 1.2.4 到底能否修改MySQL 16 1.2.5 修改MySQL的指导原则 17 1.3 实际的例子:TiVo 18 1.4 小结 19 第2章 数据库系统剖析 20 2.1 数据库系统的体系结构 20 2.2 数据库系统的类型 20 2.2.1 面向对象数据库系统 20 2.2.2 对象关系数据库系统 21 2.2.3 关系数据库系统 23 2.3 关系数据库系统的体系结构 24 2.3.1 客户端应用程序 25 2.3.2 查询接口 26 2.3.3 查询处理 27 2.3.4 查询优化器 29 2.3.5 查询的内部表示 31 2.3.6 查询的执行 32 2.3.7 文件访问 33 2.3.8 查询结果 35 2.3.9 关系数据库的体系结构小结 35 2.4 MySQL数据库系统 35 2.4.1 MySQL系统体系结构 36 2.4.2 SQL接口 37 2.4.3 解析器 38 2.4.4 查询优化器 39 2.4.5 查询的执行 40 2.4.6 查询缓存 40 2.4.7 缓存和缓冲区 42 2.4.8 通过插件式存储引擎访问文件 43 2.5 小结 50 第3章 MySQL源代码 51 3.1 预备知识 51 3.1.1 了解许可证 51 3.1.2 获得MySQL源代码 52 3.2 MySQL源代码 56 3.2.1 预备知识 57 3.2.2 main()函数 59 3.2.3 处理连接和创建线程 62 3.2.4 解析查询 69 3.2.5 优化查询的准备工作 75 3.2.6 优化查询 78 3.2.7 执行查询 80 3.2.8 辅助库 82 3.2.9 重要的类和结构 83 3.3 编程指导 88 3.3.1 总体指导 89 3.3.2 文档 89 3.3.3 函数和参数 91 3.3.4 命名约定 92 3.3.5 分隔与缩进 92 3.3.6 文档工具 93 3.3.7 保持工作记录的习惯 95 3.3.8 追踪变化 95 3.4 第一次构建系统 97 3.5 小结 100 第4章 测试驱动的MySQL开发 101 4.1 背景知识 101 4.1.1 为什么要测试 101 4.1.2 基准测试 103 4.1.3 性能分析 105 4.1.4 软件测试简介 107 4.1.5 功能测试与缺陷测试 107 4.2 MySQL测试 111 4.2.1 MySQL Test Suite 111 4.2.2 MySQL基准测试 119 4.2.3 MySQL性能分析 124 4.3 小结 126 第二部分 扩展MySQL 127 第5章 调试 128 5.1 调试介绍 128 5.2 调试技术 129 5.2.1 基本过程 129 5.2.2 内嵌调试语句 131 5.2.3 出错处理器 134 5.2.4 外部调试器 135 5.3 调试MySQL 142 5.3.1 内嵌调试语句 143 5.3.2 出错处理器 148 5.3.3 在Linux环境里调试MySQL 148 5.3.4 在Windows环境里调试MySQL 157 5.4 小结 161 第6章 嵌入式MySQL 162 6.1 构建嵌入式应用 162 6.1.1 什么是嵌入式系统 162 6.1.2 嵌入式系统的种类 163 6.1.3 嵌入式数据库系统 163 6.2 嵌入MySQL 164 6.2.1 嵌入MySQL的方法 165 6.2.2 资源要求 167 6.2.3 安全问题 167 6.2.4 嵌入MySQL的优点 167 6.2.5 嵌入MySQL的局限性 168 6.3 MySQL C API 168 6.3.1 预备知识 168 6.3.2 最常用的函数 169 6.3.3 创建嵌入式服务器 170 6.3.4 对服务器进行初始化 171 6.3.5 设置选项 172 6.3.6 连接到服务器 172 6.3.7 运行查询命令 173 6.3.8 检索查询结果 174 6.3.9 清理 175 6.3.10 与服务器断开连接并关闭服务器 175 6.3.11 汇总 175 6.3.12 出错处理 177 6.4 构建嵌入式MySQL应用程序 177 6.4.1 编译libmysqld库 177 6.4.2 调试问题如何解决 178 6.4.3 数据问题如何解决 180 6.4.4 创建基本的嵌入式服务器 180 6.4.5 出错处理问题如何解决 189 6.4.6 嵌入式服务器应用程序 189 6.5 小结 214 第7章 创建自己的存储引擎 215 7.1 MySQL插件式存储引擎概述 215 7.1.1 基本过程 217 7.1.2 需要用到的源文件 218 7.1.3 其他辅助资源 218 7.1.4 handlerton类 218 7.1.5 handler类 221 7.1.6 对MySQL存储引擎的简要分析 225 7.2 Spartan存储引擎 226 7.2.1 底层I/O类 227 7.2.2 预备知识 250 7.2.3 阶段1:生成引擎存根 251 7.2.4 阶段2:处理表 262 7.2.5 阶段3:数据的读/写 269 7.2.6 阶段4:数据的更新和删除 273 7.2.7 阶段5:数据的索引 280 7.2.8 阶段6:添加事务支持 299 7.3 小结 303 第8章 为MySQL添加函数和命令 305 8.1 添加用户定义函数 305 8.1.1 CREATE FUNCTION命令的语法 305 8.1.2 DROP FUNCTION命令的语法 306 8.1.3 创建用户定义库 306 8.1.4 添加新的用户定义函数 311 8.2 添加本机函数 315 8.2.1 在Windows平台上生成词法散列表 318 8.2.2 在Linux平台上生成词法散列表 318 8.2.3 编译和测试新的本机函数 318 8.3 添加SQL命令 319 8.4 添加到信息模式 327 8.5 小结 333 第三部分 高级数据库的内部组成 335 第9章 数据库系统的内部组成 336 9.1 查询执行 336 9.1.1 重温MySQL查询执行 336 9.1.2 什么是已编译查询 337 9.2 深入MySQL的内部 337 9.2.1 开始用MySQL做实验 338 9.2.2 注意事项 340 9.3 数据库系统内部组成实验 340 9.3.1 为什么叫实验 341 9.3.2 实验项目概述 341 9.3.3 实验项目的组成部分 342 9.3.4 在Linux平台上进行实验 343 9.3.5 在Windows平台上进行实验 343 9.4 小结 343 第10章 内部查询表示 344 10.1 查询树 344 10.1.1 查询转换 346 10.1.2 DBXP查询树 347 10.2 在MySQL里实现DBXP查询树 348 10.2.1 被添加和修改的文件 349 10.2.2 创建测试 349 10.2.3 为SELECT DBXP命令生成存根 350 10.2.4 添加查询树类 357 10.2.5 显示查询树的细节 366 10.3 小结 373 第11章 查询优化 374 11.1 查询优化器的类型 374 11.1.1 基于开销的优化器 375 11.1.2 启发式优化器 377 11.1.3 语义优化器 377 11.1.4 参数优化器 378 11.2 再次讨论启发式优化 378 11.3 DBXP查询优化器 379 11.3.1 测试设计 379 11.3.2 为SELECT DBXP命令生成存根 380 11.3.3 重要的MySQL结构和类 382 11.3.4 DBXP辅助类 385 11.3.5 修改现有代码 386 11.3.6 启发式优化器的细节 390 11.3.7 代码的编译和测试 413 11.4 小结 417 第12章 查询执行 418 12.1 回顾查询执行 418 12.1.1 投影 418 12.1.2 限制 419 12.1.3 联结 419 12.2 DBXP查询执行 429 12.2.1 测试的设计 430 12.2.2 更新SELECT DBXP命令 431 12.2.3 DBXP算法 433 12.2.4 代码的编译和测试 454 12.3 小结 457 附录 459 前言   MySQL已被公认为是世界上最流行的开源数据库产品和行业内增长最快的数据库系统之一。来自MySQL AB公司的统计报告显示,MySQL的安装数量已超过800万,每天的下载量接近5万人次。   MySQL正迅速成为系统集成商首选的数据库系统。据SD Times报上的一篇文章报道,对900多位读者进行的调查表明,MySQL在“装机量最大的数据库”榜上排名第三(www.mysql.com/why-mysql/marketshare/)。   本书对数据库系统的一些高级问题进行了探讨,对MySQL的体系结构进行了剖析,还为分析、集成和修改MySQL源代码使之用于企业级环境提供了专家级建议。在如何修改MySQL系统来满足系统集成商和教育科研机构的独特需求方面,本书提出了独到的见解。   本书结构   本书分为三个部分,每个部分对—组彼此相关的问题进行探讨,内容从MySQL和开源运动的发展,到扩展和定制MySQL系统,甚至还讲述了如何建立一个实验性查询优化器和执行引擎来替代MySQL查询引擎等。   第一部分   本书的第一部分对开发和修改各种开源系统所涉及的基本概念进行了介绍。这一部分为探讨本书后面介绍的更高级的数据库概念提供了必需的工具和资源。   与本书的其他章相比,第1章对技术性问题的探讨相对较少,多是些叙述性的内容。这一章的目的主要是让大家了解开源系统集成商都有哪些权益和责任。这一章突出介绍了MySQL的快速成长及其在开源和数据库系统市场中的重要性。此外,这一章还清晰地勾勒出了开源运动发展的脉络。   第2章对什么是数据库系统和怎样构造数据库系统等基础知识进行了介绍。对MySQL系统的剖析充分展示了现代关系数据库系统的关键组件。   第3章对MySQL软件的源代码以及如何获得和构建一个MySQL系统做了全面的介绍。主要内容包括MySQL源代码的内部机制以及编码指导原则和如何维护源代码的最佳实践。   第4章介绍了生成高质量MySQL系统扩展的一个关键方面。这一章讲解了软件测试技术以及测试大型软件系统常用的实践方法,采用几个具体示例展示了几种已被广泛接受的测试MySQL系统的方法。   第二部分   第二部分采用实际操作的方法来研究MySQL系统。这一部分介绍如何修改MySQL代码,以及如何把MySQL系统用作嵌入式数据库系统。还通过各种示例和项目向读者演示如何调试源代码,如何修改SQL命令来扩展这种语言,以及如何创建定制的存储引擎。   第5章介绍了一些调试技巧和技术,有助于保证开发工作更容易,减少不必要的错误和麻烦。在介绍各种调试技术的时候,还对它们的优缺点进行了分析和说明。   第6章指导读者掌握如何把MySQL系统嵌入企业级应用程序。这一章的示例项目将帮助读者运用学到的技巧来进行系统集成。   第7章是本书探讨MySQL代码修改问题的第一章。这一章演示了几种只需修改少量的MySQL代码就可以达到目的的技术。重点探讨MySQL的插件式存储引擎的能力,并通过有关的示例和项目构建一个示范性的存储引擎。   第8章介绍了最流行的MySQL代码修改技术。向读者展示了如何修改SQL命令以及如何建立定制的SQL命令。这一章给出了几个例子说明如何修改SQL命令以添加新参数、新函数和新命令。   第三部分   第三部分深入MySQL系统的内部去探查这个系统的工作原理。首先介绍了一些高级的数据库技术,精辟阐述了有关理论和实践,使读者能够运用所学到的知识去解决与数据库系统有关的更为复杂的问题。这一部分还给出了一些例子,介绍如何实现内部查询表示,如何实现新的查询优化器,以及如何实现新的查询执行机制。并对有关的示例和项目作了详细的讨论。第10~12章演示了如何改变MySQL系统的内部结构,以实现新的查询处理机制。这几章为如何建立和修改大型系统提供了独到的见解。   第9章介绍一些高级的数据库技术并对MySQL体系结构进行深入分析。主要内容包括查询执行、多用户问题以及编程时的注意事项等。 .  第10章讨论MySQL的内部查询表示,介绍了一个新的示例查询表示。主要讨论了如何通过修改MySQL源代码来实现新的查询表示。   第11章探讨了MySQL内部查询优化器,介绍一个示例性的新的查询优化器,这个查询优化器使用了第10章实现的新的查询表示。读者可以学会如何通过修改MySQL源代码来实现一种新的查询优化器。   第12章把前几章介绍的技术结合起来,指导读者修改MySQL系统来实现一种新的查询处理引擎技术。   附录   本书的附录列出了一份MySQL、数据库系统和开源软件的资源清单。   将本书作为讲授数据库系统内部结构的教材   介绍关系数据库理论和实践的优秀教材有很多。但是,适用于课堂教学和实验环境的资料并不多见,能帮助学生钻研数据库系统内部工作原理的资源就更少了。本书为那些通过实际动手实验来充实其数据库课程内容的教师提供了一个机会。在课堂上使用本书的方式有三种。   首先,本书可以用来增加本科生或研究生的数据库初级课程的深度。本书的第一部分和第二部分对数据库系统的一些特殊主题进行了深入的讲解。推荐将第2、3、4章和第6章的内容作为授课主题,这几章的主题可当作对更为传统的数据库理论或数据库系统课程的补充。学生动手实践和课堂项目可以从第6章和第8章节选。   本书的第一部分和第二部分内容可用来开设一门本科生和研究生的高级数据库课程,这两个部分里的每一章都适用于课堂教学,可在8~12周讲完,多出来的授课时间可以用来讨论物理存储层的实现问题或加深对存储引擎的理解。学期项目可以以第7章为基础,让学生自行构建一个存储引擎。   面向高年级本科生或研究生的数据库系统高级专题课程可以使用本书作为基本教材,并把本书的前9章内容当作课堂教学的基础。学期项目可以借鉴本书第三部分内容,让学生为一个实验性数据库平台实现它还缺少的功能,包括语言理论、查询优化器、查询执行算法的应用。   开始行动吧   本书充分考虑了各类读者的需求。不论是与数据库系统已经打过多年交道,还是只听了一门数据库理论基础课,甚至只读过Apress公司出版的某本优秀的MySQL书,相信你都可以从本书学到许多东西。如果你想了解像MySQL这样的数据库系统是如何运转的,你甚至可以从源代码入手!   致谢   Apress出版公司到处都是充满天赋而又精明强干的专业人士,我要感谢他们当中的许多人。本书的编辑Jason Gilmore和项目经理Tracy Brown Collins都有着极大的耐心和非凡的见地。正是因为他们的努力,本书才能如期完成,让我言而有信。我还要感谢本书的生产编辑Katie Stence和文字编辑Liz Welch,他们让本书的印刷效果看起来相当不错。非常感谢两位!   我还要特别感谢以下几位技术审稿人:L.M.Parker和Mikael Ronstrom,正是他们毫不松懈地严格把关才保证了本书的质量;还有Michael Kmckenberg,他保证了本书编程示例的正确性,他对MySQL独特的见解和丰富的经验让我非常佩服。可以说,我曾与精英中的精英一起合作。   最后,我还要感谢我妻子Annette无尽的耐心和理解。   
pdf
发布资源于 8 年前

MySQL必知必会(Amazon全五星评价)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 MySQL必知必会(Amazon全五星评价) 基本信息 原书名: MySQL Crash Course 原出版社: Sams 作者: (英)Ben Forta    [作译者介绍] 译者: 刘晓霞 钟鸣 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115191120 上架时间:2008-12-10 出版日期:2009 年1月 开本:32开 页码:241 版次:1-1 编辑推荐   《SQL必知必会》作者新作.    Amazon全五星评价..    学习与参考皆宜... 内容简介   mysql是世界上最受欢迎的数据库管理系统之一。书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。通过重点突出的章节,条理清晰、系统而扼要地讲述了读者应该掌握的知识,使他们不经意间立刻功力大增。   本书注重实用性,操作性很强,适用于广大软件开发和数据库管理人员学习参考。 作译者   Ben Forta是世界知名的技术作家,也是Adobe技术界最为知名的专家之一,目前担任Adobe公司的高级技术推广专家。他具有计算机行业20多年工作经验,多年来撰写了十几本技术图书,其中不少是世界畅销书,已被翻译为十几种文字。除本书外,他撰写的《正则表达式必知必会》也即将由人民邮电出版社出版。读者可以通过他的个人网站http://www.forta.com了解更多信息。 目录 封面 -10 版权 -9 前言 -8 致谢 -5 目录 -4 第1章 了解SQL 1 1.1  数据库基础 1 1.1.1  什么是数据库 2 1.1.2  表 2 1.1.3  列和数据类型 3 1.1.4  行 4 1.1.5  主键 4 1.2  什么是SQL 5 1.3  动手实践 6 1.4  小结 7 第2章 MySQL简介 8 2.1  什么是MySQL 8 2.1.1  客户机—服务器软件 8 2.1.2  MySQL版本 9 2.2  MySQL工具 10 2.2.1  mysql命令行实用程序 11 2.2.2  MySQL Adminis-trator 12 2.2.3  MySQL Query Browser 13 2.3  小结 14 第3章 使用MySQL 15 3.1  连接 15 3.2  选择数据库 16 3.3  了解数据库和表 17 3.4  小结 19 第4章 检索数据 20 4.1  SELECT语句 20 4.2  检索单个列 20 4.3  检索多个列 22 4.4  检索所有列 23 4.5  检索不同的行 24 4.6  限制结果 25 4.7  使用完全限定的表名 26 4.8  小结 27 第5章 排序检索数据 28 5.1 排序数据 28 5.2 按多个列排序 30 5.3 指定排序方向 31 5.4 小结 33 第6章 过滤数据 34 6.1 使用WHERE子句 34 6.2 WHERE子句操作符 35 6.2.1 检查单个值 36 6.2.2 不匹配检查 37 6.2.3 范围值检查 37 6.2.4 空值检查 38 6.3 小结 39 第7章 数据过滤 40 7.1 组合WHERE子句 40 7.1.1  AND操作符 40 7.1.2  OR操作符 41 7.1.3  计算次序 42 7.2  IN操作符 43 7.3  NOT操作符 44 7.4  小结 45 第8章 用通配符进行过滤 46 8.1 LIKE操作符 46 8.1.1 百分号(%)通配符 47 8.1.2 下划线(_)通配符 48 8.2 使用通配符的技巧 49 8.3 小结 50 第9章 用正则表达式进行搜索 51 9.1 正则表达式介绍 51 9.2 使用MySQL正则表达式 52 9.2.1 基本字符匹配 52 9.2.2 进行OR匹配 54 9.2.3 匹配几个字符之一 54 9.2.4 匹配范围 55 9.2.5 匹配特殊字符 56 9.2.6 匹配字符类 58 9.2.7 匹配多个实例 58 9.2.8 定位符 59 9.3 小结 61 第10章 创建计算字段 62 10.1 计算字段 62 10.2 拼接字段 63 10.3 执行算术计算 66 10.4 小结 67 第11章 使用数据处理函数 68 11.1 函数 68 11.2 使用函数 68 11.2.1  文本处理函数 69 11.2.2  日期和时间处理函数 71 11.2.3  数值处理函数 74 11.3 小结 74 第12章 汇总数据 75 12.1 聚集函数 75 12.1.1 AVG()函数 76 12.1.2 COUNT()函数 77 12.1.3 MAX()函数 78 12.1.4 MIN()函数 79 12.1.5 SUM()函数 79 12.2 聚集不同值 80 12.3 组合聚集函数 81 12.4 小结 82 第13章 分组数据 83 13.1 数据分组 83 13.2 创建分组 83 13.3 过滤分组 85 13.4 分组和排序 87 13.5 SELECT子句顺序 88 13.6 小结 89 第14章 使用子查询 90 14.1 子查询 90 14.2 利用子查询进行过滤 90 14.3 作为计算字段使用子查询 93 14.4 小结 96 第15章 联结表 97 15.1 联结 97 15.1.1 关系表 97 15.1.2 为什么要使用联结 99 15.2 创建联结 99 15.2.1 WHERE子句的重要性 100 15.2.2 内部联结 103 15.2.3 联结多个表 104 15.3 小结 105 第16章 创建高级联结 106 16.1 使用表别名 106 16.2 使用不同类型的联结 107 16.2.1 自联结 107 16.2.2 自然联结 109 16.2.3 外部联结 109 16.3 使用带聚集函数的联结 111 16.4 使用联结和联结条件 112 16.5 小结 112 第17章 组合查询 113 17.1 组合查询 113 17.2 创建组合查询 113 17.2.1 使用UNION 114 17.2.2 UNION规则 115 17.2.3 包含或取消重复的行 116 17.2.4 对组合查询结果排序 117 17.3 小结 118 第18章 全文本搜索 119 18.1 理解全文本搜索 119 18.2 使用全文本搜索 120 18.2.1 启用全文本搜索支持 120 18.2.2 进行全文本搜索 121 18.2.3 使用查询扩展 124 18.2.4 布尔文本搜索 126 18.2.5 全文本搜索的使用说明 129 18.3 小结 130 第19章 插入数据 131 19.1 数据插入 131 19.2 插入完整的行 131 19.3 插入多个行 134 19.4 插入检索出的数据 136 19.5 小结 138 第20章 更新和删除数据 139 20.1 更新数据 139 20.2 删除数据 141 20.3 更新和删除的指导原则 142 20.4 小结 143 第21章 创建和操纵表 144 21.1 创建表 144 21.1.1 表创建基础 144 21.1.2 使用NULL值 146 21.1.3  主键再介绍 147 21.1.4  使用AUTO_ INCREMENT 148 21.1.5  指定默认值 149 21.1.6  引擎类型 150 21.2 更新表 151 21.3 删除表 153 21.4 重命名表 153 21.5 小结 154 第22章 使用视图 155 22.1 视图 155 22.1.1 为什么使用视图 156 22.1.2 视图的规则和限制 157 22.2 使用视图 157 22.2.1 利用视图简化复杂的联结 157 22.2.2 用视图重新格式化检索出的数据 158 22.2.3 用视图过滤不想要的数据 159 22.2.4 使用视图与计算字段 160 22.2.5  更新视图 161 22.3 小结 162 第23章 使用存储过程 163 23.1  存储过程 163 23.2  为什么要使用存储过程 164 23.3  使用存储过程 165 23.3.1  执行存储过程 165 23.3.2  创建存储过程 165 23.3.3  删除存储过程 167 23.3.4  使用参数 167 23.3.5  建立智能存储过程 170 23.3.6  检查存储过程 173 23.4 小结 173 第24章 使用游标 174 24.1 游标 174 24.2 使用游标 174 24.2.1  创建游标 175 24.2.2  打开和关闭游标 175 24.2.3  使用游标数据 176 24.3  小结 180 第25章 使用触发器 181 25.1 触发器 181 25.2 创建触发器 182 25.3 删除触发器 183 25.4 使用触发器 183 25.4.1 INSERT触发器 183 25.4.2 DELETE触发器 184 25.4.3 UPDATE触发器 185 25.4.4 关于触发器的进一步介绍 186 25.5 小结 186 第26章 管理事务处理 187 26.1 事务处理 187 26.2 控制事务处理 189 26.2.1 使用ROLLBACK 189 26.2.2 使用COMMIT 190 26.2.3 使用保留点 191 26.2.4 更改默认的提交行为 192 26.3 小结 192 第27章 全球化和本地化 193 27.1 字符集和校对顺序 193 27.2 使用字符集和校对顺序 194 27.3 小结 196 第28章 安全管理 197 28.1 访问控制 197 28.2 管理用户 198 28.2.1 创建用户账号 199 28.2.2 删除用户账号 200 28.2.3 设置访问权限 200 28.2.4 更改口令 203 28.3 小结 204 第29章 数据库维护 205 29.1 备份数据 205 29.2 进行数据库维护 206 29.3 诊断启动问题 207 29.4 查看日志文件 207 29.5 小结 208 第30章 改善性能 209 30.1 改善性能 209 30.2 小结 211 附录A MySQL入门 212 附录B 样例表 214 附录C MySQL语句的语法 220 附录D MySQL数据类型 224 附录E MySQL保留字 228 索引 232 前言   MySQL已经成为世界上最受欢迎的数据库管理系统之一。无论是用在小型开发项目上,还是用来构建那些声名显赫的网站,MySQL都证明了自己是个稳定、可靠、快速、可信的系统,足以胜任任何数据存储业务的需要。.   本书基于我的一本畅销书Sams Teach Yourself SQL in 10 Minutes(中文版《SQL必知必会》,人民邮电出版社出版),那本书堪称全世界用得最多的一本SQL教程,重点讲解读者必须知道的东西,条理清晰,系统而扼要。但是,即使是那样一本广为使用的成功的书,也还存在着以下这些局限性。   由于要面向所有主要的数据库管理系统(DBMS),我不得不把针对具体DBMS的内容一再压缩。   为了简化SQL的讲解,我必须(尽可能)只写各种主要的DBMS通用的SQL语句。这要求我不得不舍弃一些更好的、针对具体DBMS的解决方案。   虽然基本的SQL在不同的DBMS间具有较好的可移植性,但是高级的SQL显然不是这样的。因此,那本书里无法详细讲解比较高级的内容,如触发器、游标、存储过程、访问控制、事务等。   于是就有了这本书。本书沿用了前一本书业已成功的教程模式和组织结构,除了MySQL以外,不在其他内容上过多纠缠。书从简单的数据检索开始,逐步进入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。通过重点突出的章节,条理清晰、系统而扼要地让读者学到应该学到的知识,使他们不经意间立刻功力大增。   请先到第1章开始学习。读者会立刻体会到MySQL提供的所有好处。   读者对象   本书的读者对象是这样一些人:   他没有学过SQL;   他刚开始用MySQL,并希望一举成功;   他想迅速地、尽可能多地学会使用MySQL;   他希望学习怎样在自己的应用程序开发中使用MySQL;   他希望通过使用MySQL轻松快速地提高工作效率,而不用劳烦他人帮忙。..   配套网站   本书有一个配套网站,网址是:http://forta.com/books/0672327120/。   读者可以通过该网站访问如下内容:   表格创建和表格填充的脚本,可用来创建书中使用的样例表;   在线支持论坛;   在线勘误(如果发现了勘误的话); .  或许他会感兴趣的其他书。   本书约定   本书使用不同的字体区分代码和一般正文内容,对于重要的概念也采用特殊的字体。   键入的文本和屏幕上显示出的文本用等宽代码字体表示。如:It looks like this to mimic the way text looks on your screen.   一行代码最前面如果出现箭头表示该行代码较长,书中一行放不下。读者录入时需要把这一行的内容紧接着上一行输入。   说明:表示跟上下文的内容相关的一些有意思的信息。   提示:提供建议,教读者用容易的办法完成某项任务。   注意:向读者提示可能出现的问题,避免不必要的麻烦。   新术语,提供新的基本词汇的清晰定义。   表示读者自己键入的代码。通常出现在程序清单的旁边。   表示运行MySQL代码后得到的结果,通常出现在程序清单之后。   告诉读者这是作者对输入或输出的逐行分析。...    媒体评论   “此书使我获益匪浅,书的内容和版式都堪称完美,期待作者的下一部著作!”   ——Raymond Camden,BroadChoice公司软件开发副总裁 ...    书摘   第1章了解SQL   1.1数据库基础   你正在阅读本书,这表明你需要以某种方式与数据库打交道。在深入学习MySQL及其SQL语言的实现之前,应该对数据库及数据库技术的某些基本概念有所了解。   你可能还没有意识到,其实你自己一直在使用数据库。每当你从自己的电子邮件地址簿里查找名字时,你就在使用数据库。……
pdf
发布资源于 8 年前

MySQL 5权威指南(第3版)--随书源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《MySQL 5权威指南(第3版)》的随书源代码 对应的书籍资料见: MySQL 5权威指南(第3版) 基本信息 原书名: The Definitive Guide to MySQL 5, Third Edition 原出版社: Apress 作者: (美)Michael Kofler 译者: 杨晓云 王建桥 杨涛 等 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:711515337X 上架时间:2006-11-27 出版日期:2006 年12月 开本:16开 页码:662 版次:3-1 内容简介   本书全面深入地介绍了mysql的功能,主要内容包括mysql、php、apache、perl等组件的安装与功能简介,mysql等一些重要系统管理工具和用户操作界面的使用,mysql数据库系统设计的基础知识与用不同语言设计mysql数据库的过程,以及sql语法、工具、选项、api应用指南,最大限度地帮助读者更快地学习和掌握mysql数据库系统的设计和使用。本书覆盖了mysql 5.0,讨论了新的程序设计接口(如php 5里的mysqli)和新的系统管理工具。    本书是mysql数据库管理员和开发人员的必备参考书。 作译者   Michael Kofler 在奥地利格拉茨技术大学获得计算机科学博士学位。他写了很多非常成功的计算机图书,内容涉及Visual Basic、Linux、Mathematica和Maple等多种程序没计语言和软件。Kofler还是Definitive Guide to Excel VBA第2版的作者。 目录 封面 -23 封底 -22 扉页 -21 版权 -20 版权声明 -19 译者序 -18 前言 -16 目录 -11 第一部分 入门 1 第1章 什么是MySQL 2 1.1 什么是数据库 2 1.1.1 关系、数据库系统、服务器和客户 2 1.1.2 关系数据库系统与面向对象数据库系统 3 1.1.3 数据表、记录、字段、查询、SQL、索引和键 3 1.2 MySQL 4 1.3 MySQL的不足 6 1.4 MySQL的版本编号 7 1.4.1 Alpha、Beta、Gamma、Production(Generally Available) 8 1.4.2 按版本编号排列的MySQL功能表 8 1.5 MySQL的许可证 10 1.5.1 GPL许可证下的权利和义务 10 1.5.2 开源许可证下的MySQL软件 10 1.5.3 商用许可证下的MySQL软件 11 1.5.4 MySQL客户软件开发库(Connector/ODBC、Connector/J等)的商用许可证 12 1.5.5 PHP项目的客户许可证问题——F(L)OSS特例 12 1.5.6 MySQL软件的版本名称 13 1.5.7 MySQL软件的技术支持合同 14 1.6 MySQL软件的替代品 14 1.7 小结 15 第2章 测试环境 16 2.1 是Windows还是UNIX/Linux 16 2.1.1 MySQL应用现状(因特网上的数据库服务器) 16 2.1.2 开发环境 17 2.2 在Windows系统上安装MySQL和相关软件 17 2.2.1 安装Apache 2.0 18 2.2.2 安装MySQL 5.0 19 2.2.3 安装PHP 5.0 22 2.2.4 安装Perl 23 2.3 在SUSE Linux 9.3系统上安装MySQL和相关软件 25 2.3.1 安装Apache 2、PHP 5和Perl 25 2.3.2 安装MySQL 5.0 27 2.4 在Red Hat Enterprise Linux 4系统上安装MySQL和相关软件 29 2.4.1 安装Apache 2 29 2.4.2 安装MySQL 5 30 2.4.3 编译PHP 5 30 2.4.4 安装Perl 5.8 33 2.5 编译MySQL软件的开发者版本(Linux) 33 2.5.1 安装Bitkeeper 33 2.5.2 下载MySQL软件的开发者版本 34 2.5.3 编译MySQL 34 2.5.4 创建用来管理访问权限的mysql数据库 34 2.5.5 MySQL配置文件和Init-V脚本 34 2.5.6 启动MySQL服务器 35 2.6 配置Apache 35 2.6.1 配置文件 35 2.6.2 基本设置 36 2.6.3 对不同子目录的访问权限(.htaccess) 37 2.7 配置PHP 39 2.8 配置MySQL 41 第3章 初级案例研究:MySQL+PHP 43 3.1 概述 43 3.2 数据库的开发 44 3.2.1 启动mysql命令行解释器 44 3.2.2 创建数据库 45 3.2.3 创建数据表 46 3.2.4 为什么要避简就难 47 3.3 调查问卷 48 3.4 问卷调查结果的处理和显示 49 3.4.1 mysql界面与mysqli界面 49 3.4.2 建立与数据库的连接 49 3.4.3 对数据进行处理并把它存入数据库 49 3.4.4 显示问卷调查的结果 50 3.4.5 程序代码(results.php) 51 3.4.6 最终生成的HTML代码 52 3.5 改进意见 52 第二部分 管理工具和用户操作界面 55 第4章 mysql、mysqladmin和mysqldump 56 4.1 mysql 56 4.1.1 启动mysql 57 4.1.2 mysql的命令行选项 58 4.1.3 交互式使用mysql 59 4.1.4 UNIX/Linux环境中mysql的使用技巧 60 4.1.5 Windows环境下mysql的使用技巧 61 4.1.6 用mysql处理SQL文件 63 4.2 mysqladmin 64 4.3 mysqldump 64 第5章 MySQL Administrator和MySQL Query Browser 65 5.1 安装 65 5.2 与MySQL服务器建立连接 66 5.3 MySQL Administrator 67 5.3.1 Server Information模块(查看服务器信息) 68 5.3.2 Service Control模块(启动/停止MySQL服务器) 68 5.3.3 Startup Variables模块(配置启动参数) 68 5.3.4 User Administration模块(用户管理) 69 5.3.5 Server Connections模块(查看服务器连接信息) 71 5.3.6 Health模块(查看系统负载) 71 5.3.7 Server Logs模块(查看服务器日志) 72 5.3.8 Backup模块(制作数据库备份) 72 5.3.9 Restore模块(用备份恢复数据库) 73 5.3.10 Replication Status模块(查看镜像机制的工作状态) 74 5.3.11 Catalogs模块(对数据库和数据表进行管理) 74 5.4 MySQL Query Browser 74 5.4.1 SQL命令的输入和执行 74 5.4.2 对SELECT结果里的数据进行修改 76 5.4.3 SQL命令的历史记录和书签 77 5.4.4 一次执行多条命令(脚本) 77 5.4.5 存储过程 77 5.4.6 MySQL Help(帮助文档) 77 第6章 phpMyAdmin 78 6.1 phpMyAdmin的安装与配置 79 6.1.1 安装phpMyAdmin文件 79 6.1.2 配置phpMyAdmin 79 6.1.3 config身份验证模式 80 6.1.4 http和cookie身份验证模式 82 6.2 用户管理,保护MySQL 84 6.2.1 保护MySQL 85 6.2.2 创建新用户 86 6.3 创建和编辑数据库 88 6.3.1 创建数据库 88 6.3.2 编辑现有的数据表 89 6.3.3 设置外键规则 90 6.3.4 数据库设计方案的汇总和存档 90 6.4 查看、插入和编辑数据 91 6.5 执行SQL命令 92 6.6 导入和导出 93 6.6.1 数据库备份(SQL文件) 93 6.6.2 导出数据表(CSV文本文件) 95 6.6.3 导入数据库或数据表(SQL文件) 95 6.6.4 插入数据表数据(文本文件) 96 6.7 服务器管理 96 6.8 辅助功能 97 6.8.1 为phpMyAdmin创建数据库 97 6.8.2 SQL书签和历史记录 98 6.8.3 关联/引用关系信息的保存 98 6.8.4 创建PDF格式的数据表关联/引用关系图 100 6.8.5 格式转换(数据列内容的另类显示效果) 101 第7章 Microsoft Office和OpenOffice/StarOffice 103 7.1 安装Connector/ODBC 103 7.2 Microsoft Access 106 7.2.1 数据表的导入和导出 107 7.2.2 数据库转换器:Access→MySQL(exportsql.txt) 109 7.3 Microsoft Excel 110 7.4 安装Connector/J 112 7.4.1 Connector/J 112 7.4.2 安装 112 7.5 OpenOffice/StarOffice Base 113 7.5.1 与MySQL数据库建立连接 113 7.5.2 Table模块 114 7.5.3 Queries模块 115 7.5.4 Forms模块、Rerports模块和其他功能 116 7.6 OpenOffice/StarOffice的Data Source视图 117 7.6.1 建立数据源 118 7.6.2 数据的导入 118 第三部分 基础知识 119 第8章 数据库设计概论 120 8.1 参考读物 120 8.2 数据表类型 121 8.2.1 MyISAM数据表 121 8.2.2 InnoDB数据表 122 8.2.3 HEAP数据表 123 8.2.4 临时数据表 124 8.2.5 其他的数据表类型 124 8.2.6 数据表文件 125 8.3 MySQL数据类型 126 8.3.1 整数(xxxINT) 126 8.3.2 定点数(DECIMAL) 127 8.3.3 日期与时间(DATE、TIME、DATETIME、TIMESTAMP) 128 8.3.4 字符串(CHAR、VARCHAR、xxxTEXT) 130 8.3.5 二进制数据(xxxBLOB和BIT) 133 8.3.6 选项和属性 135 8.4 数据库设计技巧 135 8.4.1 数据库设计要求 135 8.4.2 起名字的技巧 136 8.4.3 数据库具体设计工作中的技巧 136 8.5 规范化 137 8.5.1 起点 137 8.5.2 第一范式 138 8.5.3 第二范式 139 8.5.4 第三范式 140 8.5.5 规范化理论 141 8.6 层次关系的处理 143 8.6.1 层次关系的处理难点 144 8.6.2 从数据表创建层次关系树 145 8.6.3 搜索categories数据表里的下级图书门类 147 8.6.4 搜索categories数据表里的上级图书门类 148 8.7 关系 149 8.7.1 1:1关系 149 8.7.2 1:n关系 150 8.7.3 n:m关系 151 8.8 主键和外键 151 8.8.1 主键 151 8.8.2 外键 152 8.8.3 引用一致性(外键约束条件) 153 8.9 索引 156 8.9.1 普通索引、唯一索引和主索引 157 8.9.2 全文索引 158 8.9.3 查询和索引的优化 159 8.10 视图 161 8.11 示例数据库mylibrary(图书管理) 163 8.11.1 数据库的属性 164 8.11.2 数据表的属性 164 8.12 示例数据库myforum(网上论坛) 165 8.12.1 讨论组数据库:myforum 165 8.12.2 帖子之间的层次关系 166 8.13 示例数据库exceptions(用于特殊情况的测试) 167 8.13.1 数据表testall 167 8.13.2 数据表text_text 168 8.13.3 数据表test_blob 168 8.13.4 数据表test_date 168 8.13.5 数据表test_enum 168 8.13.6 数据表test_null 168 8.13.7 数据表test_sort1 168 8.13.8 数据表test_sort2 169 8.13.9 数据表importtable1、importtable2、exporttable 169 第9章 SQL语言入门 170 9.1 简介 170 9.2 简单查询(SELECT) 171 9.2.1 确定数据表里有多少条数据记录(数据行) 172 9.2.2 确定数据表里有多少条内容不重复的数据记录(DISTINCT) 172 9.2.3 限制查询结果中的数据列个数 172 9.2.4 限制查询结果中的数据记录个数(LIMIT) 173 9.2.5 在使用LIMIT关键字确定数据表里的数据记录数(SQLCALCFOUNDROWS、FOUNDROWS()) 173 9.3 对查询结果进行排序(ORDER BY) 174 9.3.1 选择一种排序方式 174 9.3.2 试用不同的排序方式 175 9.4 筛选数据记录(WHERE,HAVING) 176 9.5 涉及多个数据表的关联查询(LEFT/RIGHT JOIN) 177 9.5.1 两个数据表的关联 178 9.5.2 3个或更多个数据表的关联 179 9.6 合并查询结果(UNION) 181 9.7 分组查询,统计函数(GROUP BY) 181 9.7.1 统计函数 182 9.7.2 统计函数GROUP_CONCAT() 183 9.7.3 对多个数据列进行GROUP BY查询 184 9.7.4 GROUP BY...WITH ROLLUP 184 9.8 修改数据(INSERT、UPDATE和DELETE) 185 9.8.1 备份数据 185 9.8.2 插入数据记录(INSERT) 186 9.8.3 修改数据记录(UPDATE) 188 9.8.4 删除数据记录(DELETE) 188 9.9 创建数据表、数据库和索引 190 9.9.1 创建数据库(CREATE DATABASE) 190 9.9.2 创建数据表(CREATE TABLE) 191 9.9.3 创建索引(CREATE INDEX) 192 9.9.4 变更数据表的结构(ALTER TABLE) 192 9.9.5 删除数据库和数据表(DROP) 193 9.9.6 自动修改数据表设计(默许的数据列修改) 193 9.9.7 SHOW命令 194 9.9.8 INFORMATION_SCHEMA数据表家族 195 第10章 SQL解决方案 197 10.1 字符串 197 10.1.1 基本函数 197 10.1.2 改变字符集 198 10.1.3 设置客户端字符集 199 10.1.4 模板匹配 200 10.2 日期和时间 201 10.2.1 日期和时间的语法 201 10.2.2 与日期和时间有关的计算 202 10.2.3 UNIX时间戳 204 10.2.4 地理时区 206 10.3 ENUM和SET数据类型 208 10.3.1 ENUM 208 10.3.2 SET 209 10.4 变量与条件表达式(IF、CASE) 209 10.4.1 变量 210 10.4.2 IF查询 211 10.4.3 CASE分支 211 10.5 在数据表间复制数据 212 10.5.1 利用复制操作创建新数据表 212 10.5.2 把数据复制到现有数据表 213 10.6 统计报表 213 10.6.1 涉及titles、languages和cate-gories数据表的统计报表 214 10.6.2 月度查询统计报表 215 10.7 子查询 216 10.7.1 语法变体 216 10.7.2 示例 218 10.8 保证数据的一致性 219 10.8.1 找出没有作者的图书 219 10.8.2 找出无效的出版公司引用:1:n关系中的无效记录 219 10.8.3 找出作者与图书之间的无效链接(n:m关系) 220 10.9 找出冗余的数据记录 221 10.10 数据表设计方案的改进 221 10.11 对前n条或后n条记录进行处理 223 10.11.1 数据查询(SELECT) 223 10.11.2 修改现有记录(UPDATE和DELETE) 224 10.11.3 把全部讨论线程删除到只剩下最新的500个线程 224 10.12 以随机方式选择数据记录 225 10.12.1 通用方法:RAND()函数 225 10.12.2 自备随机数的数据表 225 10.12.3 利用id数据列选择随机记录 226 10.13 全文索引 226 10.13.1 基础知识 227 10.13.2 图书检索 229 10.13.3 论坛文章检索 231 10.14 锁定 232 10.14.1 语法 232 10.14.2 GETLOCK和RELEASE LOCK函数 233 10.15 事务 233 10.15.1 为什么要使用事务 233 10.15.2 事务的控制 234 10.15.3 事务机制的工作流程 235 10.15.4 事务与锁定 237 10.15.5 事务的隔离模式 238 10.15.6 出错处理 240 第11章 访问权限与信息安全 241 11.1 简介 241 11.1.1 客户与MySQL服务器之间的连接 241 11.1.2 访问管理 242 11.2 急救 246 11.2.1 保护MySQL安装 246 11.2.2 创建新的数据库和用户 247 11.2.3 授予创建个人数据库的权限 248 11.2.4 忘记root密码情况的处理 249 11.3 访问控制机制的内部工作原理 250 11.3.1 两级访问控制 250 11.3.2 权限 250 11.3.3 mysql数据库 253 11.3.4 user数据表 254 11.3.5 user.Host数据列 257 11.3.6 db数据表和host数据表 260 11.3.7 tablespriv和columnspriv数据表 261 11.3.8 procs_priv数据表 263 11.4 访问权限的设置工具 263 11.4.1 使用GRANT和REVOKE命令改变访问权限 263 11.4.2 使用SHOW GRANT命令查看访问权限 265 11.4.3 使用mysqladmin程序改变密码 265 11.5 MySQL 4.1版本开始的安全密码验证 265 11.5.1 升级客户端函数库 266 11.5.2 old-passwords模式 266 11.5.3 同时使用旧的和新的密码的操作 266 11.6 建立连接的问题 267 11.6.1 连接困难的可能原因 267 11.6.2 错误检查的更多方法 270 11.7 系统安全性 270 11.7.1 系统级安全措施 270 11.7.2 重要数据存储的安全保护 271 11.7.3 与MySQL服务器有关的安全风险 271 11.7.4 不要使用root或Administrator权限来运行MySQL服务器 271 11.7.5 网络安全与防火墙 272 第12章 GIS函数 273 12.1 GIS数据格式 273 12.1.1 地理坐标的表示方法 273 12.1.2 Well-Known Text和Well- Known Binary(OpenGIS) 274 12.2 MySQL的GIS实现 275 12.2.1 数据类型 275 12.2.2 简单的几何函数 277 12.2.3 空间分析函数 279 12.2.4 为几何数据创建索引 281 12.3 SQL示例(冰川数据库) 281 12.3.1 创建数据表 282 12.3.2 插入数据 282 12.3.3 查询数据 282 12.4 SQL示例(opengeodb数据库) 284 12.4.1 数据来源和导入 285 12.4.2 导入 285 12.4.3 对圆形地理区域进行搜索 286 第13章 存储过程和触发器 288 13.1 为什么要使用存储过程和触发器 288 13.1.1 存储过程 288 13.1.2 触发器 289 13.2 初识SP 289 13.2.1 MySQL命令解释器:mysql程序 290 13.2.2 MySQL Query Browser 291 13.3 SP的实现 292 13.4 SP的管理 293 13.4.1 创建、编辑和删除SP 293 13.4.2 信息安全问题 295 13.4.3 SP的备份和恢复 295 13.5 SP的语法和语言元素 296 13.5.1 基本语法规则 296 13.5.2 调用SP(CALL) 297 13.5.3 参数和返回值 298 13.5.4 命令的封装(BEGIN -END) 299 13.5.5 分支 301 13.5.6 循环 301 13.5.7 出错处理(出错处理句柄) 302 13.5.8 光标 304 13.6 SP应用示例 306 13.6.1 增加新的图书门类 306 13.6.2 增加一本新图书 307 13.6.3 确定父门类 308 13.6.4 按层次结构生成图书门类清单 309 13.7 触发器 311 13.7.1 创建触发器 311 13.7.2 删除触发器 312 13.7.3 实现细节和管理工具 312 13.7.4 功能局限性 312 13.7.5 触发器应用示例 313 第14章 管理与服务器配置 314 14.1 基础知识 314 14.1.1 MySQL数据库系统的管理工具 314 14.1.2 设置root密码 315 14.1.3 MySQL服务器配置文件 316 14.1.4 重新启动MySQL服务器 316 14.1.5 MySQL服务器的基本配置 317 14.1.6 目录 317 14.1.7 通信设置 317 14.1.8 默认的数据表格式 318 14.1.9 新数据表的默认字符集和排序方式 318 14.1.10 地理时区 318 14.1.11 出错消息的显示语言 319 14.1.12 SQL模式 319 14.2 备份 321 14.2.1 备份数据库(mysqldump) 321 14.2.2 用备份恢复数据库(mysql) 324 14.2.3 快速备份(mysqlhotcopy) 325 14.3 数据库的迁移 327 14.4 导出和导入文本文件 329 14.4.1 文本文件里的特殊字符 329 14.4.2 字符串、数值、日期/时间、BLOB和NULL值 330 14.4.3 用LOAD DATA INFILE命令导入 330 14.4.4 用mysqlimport工具导入 333 14.4.5 用SELECT ... INTO OUTFILE命令导出 333 14.4.6 用mysqldump程序导出 335 14.4.7 用mysql程序的批处理模式导出 335 14.5 日志 337 14.5.1 为什么要使用日志 337 14.5.2 缺点与不足 338 14.5.3 变更日志(update log) 338 14.5.4 出错日志、登录日志和慢查询日志 340 14.5.5 日志文件的管理 342 14.6 镜像机制 342 14.6.1 简介 342 14.6.2 建立镜像机制的主控系统 344 14.6.3 建立镜像机制的从属系统 346 14.6.4 用LOAD DATA命令建立镜像机制 348 14.6.5 内部镜像机制 348 14.6.6 客户端编程 350 14.7 管理MyISAM数据表 351 14.7.1 myisamchk程序 351 14.7.2 myisamchk程序的使用方法 352 14.7.3 速度优化与内存使用情况 352 14.7.4 对MyISAM数据表进行压缩和优化 353 14.7.5 修复受损的MyISAM数据表 353 14.7.6 压缩MyISAM数据表(myisampack程序) 354 14.8 InnoDB数据表的管理 354 14.8.1 表空间的管理 354 14.8.2 日志文件 359 14.9 MySQL服务器的优化 362 14.9.1 优化内存管理 363 14.9.2 查询缓存区 364 14.10 ISP数据库管理 366 14.10.1 ssh工具 366 14.10.2 phpMyAdmin工具 366 14.10.3 实现自定义的PHP脚本 366 14.10.4 自定义:Perl脚本 367 第四部分 程序设计 369 第15章 PHP 370 15.1 mysql功能模块 370 15.1.1 连接MySQL服务器 371 15.1.2 执行SQL命令 372 15.1.3 处理SELECT查询结果 373 15.1.4 事务 376 15.1.5 出错处理与查找 376 15.2 mysqli的类、方法和属性 377 15.2.1 选择编程接口:mysql还是mysqli 377 15.2.2 有效性测试 378 15.2.3 构成mysqli接口的类 378 15.2.4 连接MySQL服务器 378 15.2.5 执行SQL命令 380 15.2.6 处理SELECT查询结果(mysqli_result()方法) 380 15.2.7 一次执行多条SQL命令 382 15.2.8 带参数的SQL命令(预处理语句) 382 15.2.9 事务 385 15.3 把数据库功能打包为一个类 385 15.3.1 使用单独的密码文件提高安全性 385 15.3.2 使用MyDb类实现安全和方便 386 15.4 把SELECT查询结果显示为一个表格 389 15.5 字符串、日期、时间、BLOB和NULL 390 15.5.1 字符串和BLOB 390 15.5.2 日期和时间 391 15.5.3 NULL值 392 15.6 向关联数据表插入新数据记录 393 15.7 处理来自HTML表单的输入数据 393 15.7.1 代码结构 394 15.7.2 创建HTML表单 396 15.7.3 对表单数据进行合法性检查 400 15.7.4 把表单数据存入数据库 401 15.7.5 删除一本图书 403 15.7.6 值得改进的地方 404 15.8 分页显示查询结果 404 15.8.1 代码结构 405 15.8.2 对图书作者进行搜索 407 15.8.3 对图书进行搜索 408 15.8.4 显示搜索结果 408 15.8.5 指向其他结果页面的链接 410 15.9 处理层次化数据 410 15.9.1 代码结构 411 15.9.2 显示图书门类树 413 15.9.3 插入一个或多个新图书门类 415 15.9.4 删除一个图书门类及其下级门类 416 15.9.5 搜索上级图书门类 417 15.9.6 搜索下级图书门类 418 15.10 速度优化 419 15.10.1 提高代码执行效率的基本原则 419 15.10.2 统计信息和性能指标 420 15.10.3 示例:高效地生成图书门类下拉列表 421 15.11 Unicode 424 15.12 二进制数据(BLOB)和图像 428 15.12.1 在数据库里存储图像的基础知识与编程技巧 429 15.12.2 在数据库里存储图像的程序代码 431 15.13 存储过程 434 15.14 SP Administrator 435 15.14.1 安装SP Administrator 435 15.14.2 使用SP Administrator 435 15.14.3 SP Administrator代码 436 第16章 Perl 441 16.1 编程技巧 441 16.1.1 DBI和DBD::mysql模块 441 16.1.2 与数据库建立连接 442 16.1.3 执行SQL命令 443 16.1.4 处理SELECT查询结果 445 16.1.5 字符串、BLOB、日期值、SET、ENUM和NULL 449 16.1.6 DBD::mysql模块特有的方法和属性 452 16.1.7 Unicode 453 16.1.8 事务 454 16.1.9 出错处理 454 16.2 示例:删除无效的数据记录(mylibrary) 456 16.3 CGI示例:图书管理(mylibrary) 457 16.3.1 图书检索(mylibrary-find.pl脚本) 457 16.3.2 新图书的简单输入(mylibrary-simpleinput.pl脚本) 460 16.4 CGI Unicode示例 462 16.4.1 图书检索(mylibrary-find-utf8.pl脚本) 462 16.4.2 新图书的输入(mylibrary-simpleinput-utf8.pl脚本) 463 第17章 Java(JDBC和Connector/J) 464 17.1 基础知识 464 17.1.1 Java的安装 464 17.1.2 Connector/J的安装 466 17.2 程序设计技巧 468 17.2.1 第一个示例 469 17.2.2 与MySQL服务器建立连接 470 17.2.3 连接MySQL服务器时可能遇到的问题 472 17.2.4 执行SQL命令 473 17.2.5 处理SELECT查询结果 474 17.2.6 预处理语句 478 17.2.7 事务 479 17.2.8 批处理命令 479 17.2.9 二进制数据(BLOB)的处理 480 第18章 C语言 483 18.1 MySQL C API(libmysqlclient) 483 18.2 Hello,World 483 18.2.1 对系统的基本要求 483 18.2.2 入门级示例 484 18.2.3 编译与链接 485 18.2.4 Makefile 486 18.2.5 以静态方式绑定MySQL API函数 486 18.3 与MySQL服务器建立连接 487 18.3.1 处理MySQL配置文件my.cnf 488 18.3.2 处理命令行选项 488 18.4 执行SQL命令 489 18.4.1 简单的SQL命令 489 18.4.2 一次执行多条SQL命令 490 18.4.3 预处理语句 493 18.4.4 字符集设置(Unicode) 497 18.5 处理二进制数据和特殊字符 498 18.6 出错处理 500 第19章 Visual Basic 6/VBA 501 19.1 基础知识和术语 501 19.2 Connector/ODBC选项 503 19.3 ADO程序设计与Visual Basic 6/VBA 504 19.4 与MySQL服务器建立连接 506 19.4.1 与MySQL服务器建立连接:使用DSN 506 19.4.2 与MySQL服务器建立连接(不使用DSN) 506 19.4.3 ADO程序设计技巧 509 19.4.4 示例:给titles数据表增加一个authors数据列 514 19.4.5 示例:添加一本新图书 517 19.4.6 示例:把图像文件存入和读出BLOB数据列 519 19.5 转换器:从Microsoft SQL Server到MySQL 521 19.5.1 mssql2mysql脚本的特点 521 19.5.2 对系统的要求 521 19.5.3 缺陷与不足 521 19.5.4 使用方法 522 19.5.5 设置有关参数 522 19.6 VBMySQLDirect 523 19.6.1 安装 524 19.6.2 应用 524 19.6.3 示例 524 第20章 Visual Basic .NET和C# 526 20.1 ADO .NET与MySQL之间的通信 526 20.1.1 通过Connector/Net连接数据库 527 20.1.2 用ODBC数据泵连接数据库 530 20.2 编程技巧 532 20.2.1 执行SQL命令(MySql-Command对象) 532 20.2.2 带参数的SQL命令(MySql - Parameter对象) 533 20.2.3 处理离散的SELECT查询结果(ExecuteScalar()方法) 535 20.2.4 读取SELECT查询结果(MySqlDataReader对象) 535 20.2.5 DataSet、DataTable和MySqlDataAdapter对象 537 20.2.6 辅助函数 540 20.2.7 出错处理 540 20.2.8 Windows.Form和ASP .NET控件 540 20.2.9 事务 542 20.3 示例:把新图书记录存入mylibrary数据库 542 20.4 示例:把图像文件存入和读出一个BLOB数据列 544 第五部分 参考资料 547 第21章 SQL语法指南 548 21.1 语法 548 21.1.1 对象命名规则 548 21.1.2 区分字母大小写 549 21.1.3 字符串 549 21.1.4 字符集和排序方式 550 21.1.5 数值 550 21.1.6 数值和字符串的自动转换 550 21.1.7 日期和时间 551 21.1.8 二进制数据 551 21.1.9 二进制数值 551 21.1.10 注释语句 551 21.1.11 SQL命令末尾的分号 552 21.2 操作符 552 21.2.1 算术操作符与位操作符 553 21.2.2 比较操作符 553 21.2.3 使用LIKE操作符进行模式匹配 553 21.2.4 使用REGEXP操作符进行模式匹配 554 21.2.5 二进制字符串比较 554 21.2.6 逻辑操作符 555 21.3 变量和常数 555 21.3.1 变量赋值 555 21.3.2 使用和查看变量 555 21.3.3 全局级系统变量与会话级系统变量 556 21.3.4 SET PASSWORD命令 556 21.3.5 结构化变量 556 21.3.6 常数 557 21.4 MySQL数据类型 557 21.5 SQL命令汇总表(按功能分类) 559 21.6 SQL命令指南(按字母表顺序排列) 561 21.7 SQL函数指南 596 21.7.1 算术函数 596 21.7.2 比较函数、测试函数、分支函数 597 21.7.3 类型转换(投射) 597 21.7.4 字符串处理 597 21.7.5 日期/时间函数 600 21.7.6 GROUP BY函数 604 21.7.7 其他函数 605 21.8 GIS数据类型与GIS函数 606 21.9 与存储过程和触发器有关的语言元素 608 第22章 MySQL工具和选项 610 22.1 概述 610 22.2 通用选项和配置文件 610 22.2.1 通用选项 610 22.2.2 设置配置文件的选项 612 22.2.3 内存量的表示方法 613 22.2.4 环境变量(系统变量) 613 22.2.5 选项设置规则 614 22.3 mysqld程序(服务器) 614 22.3.1 基本选项 615 22.3.2 与日志和镜像功能有关的选项 617 22.3.3 InnoDB配置选项 618 22.3.4 其他选项 620 22.4 mysqld_safe脚本(启动MySQL服务器) 620 22.5 mysqlinstalldb脚本(安装mysql数据库) 621 22.6 mysqlfixprivileges脚本(更新mysql数据库) 622 22.7 mysqlfixextensions脚本(重命名MyISAM文件) 622 22.8 mysql程序(SQL命令解释器) 622 22.9 mysqladmin程序(日常管理) 624 22.10 mysqldump程序(数据的备份/导出) 625 22.11 mysqlimport程序(文本导入、批量导入) 628 22.12 mysqlshow程序(查看信息) 628 22.13 myisamchk程序(修复MyISAM文件) 629 22.14 myisampack程序(压缩MyISAM文件) 630 第23章 MySQL API应用指南 632 23.1 PHP API(mysql接口) 632 23.2 PHP API(mysqli接口) 635 23.2.1 mysqli类 636 23.2.2 mysqli_result类 637 23.2.3 mysqli_stmt类 638 23.3 Perl DBI 638 23.3.1 常用的变量名 638 23.3.2 与MySQL服务器建立连接 639 23.3.3 执行SQL命令、处理SELECT查询结果 640 23.3.4 出错处理 642 23.3.5 辅助函数 642 23.3.6 DBD::mysql驱动程序中的MySQL专用扩展模块 642 23.4 JDBC(Connector/J) 644 23.4.1 与MySQL服务器建立连接 644 23.4.2 执行SQL命令 644 23.4.3 处理SELECT查询结果(ResultSet类) 646 23.4.4 事务 647 23.5 ADO .NET(Connector/Net) 647 23.5.1 与MySQL服务器建立连接 647 23.5.2 执行SQL命令与处理SELECT查询结果 648 23.5.3 利用DataSet/DataTable类修改数据 649 23.5.4 事务 650 23.6 C API 650 23.6.1 数据结构 650 23.6.2 连接与管理 652 23.6.3 执行SQL命令及处理SELECT查询结果 654 23.6.4 预处理语句 656 第六部分 附录 657 附录A 术语解释 658 译者序   MySQL是使用最广泛的开源数据库系统,它正在数据库市场上重演Linux在操作系统领域逐步取得成功的故事。PHP或Perl语言与MySQL相结合的数据库系统解决方案正被越来越多的网站所采用,其中又以LAMP模式(“Linux + Apache + MySQL + Perl或PHP”组合方式)最为流行。MySQL的突出优点包括:   ·适用面广。可以在Windows、Linux、Mac OS X及各种UNIX操作系统上运行,可以用C、C++、C#、Java、Perl、PHP、Python、Visual Basic和Visual Basic.NET等多种程序设计语言来开发MySQL应用程序。在Linux领域里,以MySQL作为后端数据库引擎的应用项目越来越多:它可以帮助人们更有效率地管理各种日志数据以及电子邮件、MP3文件、地址名单之类的数据。在Windows领域里,借助于ODBC接口,MySQL也能完成类似的任务(在许多场合下,MySQL提供了更好的技术基础)。   ·性能优异,运行稳定。MySQL是一种功能非常强大的关系数据库系统,它的安全性和稳定性足以满足许多应用项目的要求。美国航空航天局、美国洛斯?阿拉莫斯国家实验室(数据量高达7TB)、Yahoo!、Lycos、索尼、铃木、维基百科等大公司和大机构都采用了MySQL来建立它们的后端数据库。从这个意义上讲,选择MySQL就等于是让自己与这些优秀的公司站在了同一条起跑线上。此外,MySQL对硬件性能的要求不那么苛刻,这一点对小公司或个人用户来说特别有优势。   ·性价比高。MySQL是一个开源软件产品,采用GPL许可证发行,所以绝大多数MySQL应用项目都可以免费获得和使用MySQL软件。如果用户的MySQL项目不符合GPL许可证的有关规定,只须支付一些合理的费用就可以获得商业许可证和各种可选的技术支持服务合同。   ·技术支持丰富而且易于获得。因特网上有着丰富的MySQL资源。   与其他的开源数据库系统相比,MySQL不仅在性能指标方面高出一截,在应用范围和实际装机容量方面也远远领先于竞争对手。MySQL比其他数据库系统接受过更全面的测试,有着更齐全的文档,有MySQL经验的开发人员也相对更多一些。不过,MySQL目前还无法在所有的方面与一些老牌的商业化数据库系统抗衡。万一用户的项目必须用到某些MySQL尚不支持的功能,请在项目的前期可行性研究阶段做出判断和取舍。   本书是一部MySQL领域的名著,新版在第2版的基础上进行了大量的改写。大部分改动是根据MySQL软件从4.1版到5.0版的变化而做出的。围绕着MySQL相关领域做出的改动也有不少,其中包括新的程序设计接口(如PHP 5里的mysqli接口)和新的系统管理工具。本书从面向应用和面向示例两方面对MySQL数据库系统进行了全面系统的介绍,读者无须具备SQL编程或数据库设计经验,而书中的示例数据库和示例程序能够帮助那些打算自行开发一个数据库应用软件的读者打下坚实的基础。不过,因为本书没有足够的篇幅从入门开始对每一个论题进行探讨,所以书中有些内容(尤其是与编程有关的内容)需要读者具备相应的基础知识才能从中获得最大收益。   与任何一种现代数据库产品一样,MySQL的实际应用还需要涉及硬件设备、操作系统、网络与通信等许多方面。这些领域每天都有新的技术和改进诞生。   本书主要由杨晓云、王建桥、杨涛、李东梅翻译,参加翻译工作的还有范精明、许玉新、俞渭明、韩兰、张玉亭、李菘、张雁东、李京山、张立和、张勇、韩文光、孙殿刚、韩东升、陈丽芬、张异宝、卫健、李江卫、丁文学、张斌和汪艳华等同志。   因为译者水平有限,所以书中可能会有一些错误和疏漏,希望能够得到读者的谅解和指正。    前言   MySQL是使用最广泛的开源数据库系统,这主要有以下几个原因:   ·MySQL很快。   ·MySQL很稳定。   ·MySQL很容易学习。   ·MySQL可以在各种主流的操作系统(Windows、Linux、Mac OS X和各种UNIX版本)上运行。   ·MySQL应用软件可以用多种程序设计语言(如C、C++、C#、Java、Perl、PHP、Python、Visual Basic和Visual Basic.NET等)来编写。   ·网上有详尽的MySQL文档,与MySQL有关的书籍也非常多。   ·有许多应用项目都允许用户免费使用MySQL来开发(在遵守GPL许可证制度的前提下)。   ·虽然也有许多商业化的应用软件不受GPL许可证的约束,但只需支付一些合理的费用就可以获得商业许可证和各种可选的技术支持服务合同。   MySQL正在数据库市场上重演Linux在操作系统领域逐步取得成功的故事。PHP或Perl语言与MySQL相结合的数据库系统解决方案被越来越多的网站所采用。其中又以“Linux + Apache + MySQL + Perl或PHP”的组合方式最为流行,这种组合被人们称为LAMP模式。MySQL并不仅仅适用于小型网站,连Yahoo!、Slashdot和美国航空航天局等数据量非常大的公司和机构也在使用它。   本书内容   本书面向应用和面向示例对MySQL数据库系统进行了全面系统的介绍。读者无需具备SQL编程或数据库设计的经验。   本书的入门部分将从如何在运行Windows和Linux操作系统的计算机上安装MySQL、Apache、PHP和Perl等软件组件的具体步骤开始展开讨论。此外,还将介绍如何安装需要与MySQL配合使用的其他组件。在此基础上的第一个示例将向大家演示MySQL和PHP的基本用法。   本书的第二部分将对mysql、mysqladmin、mysqldump、MySQL Administrator、MySQL Query Browser和phpMyAdmin等几个最为重要的系统管理工具和用户操作界面进行介绍,最后一个程序特别适合使用Web浏览器以离线方式来完成各种系统管理工作的情况。在这一部分还将专门用一章的篇幅来讨论如何通过Microsoft Office、Sun StarOffice和OpenOffice访问MySQL数据库。   本书的第三部分为读者准备了大量有关数据库语言SQL、数据库系统的设计思路、存储过程、MySQL的访问控制系统和多种系统管理工作(如备份、日志和镜像等)的背景资料。   本书的第四部分将重点介绍PHP语言,其中有一章内容很长,读者可以学到许多程序设计方面的技巧。将通过一系列示例程序来演示如何利用mysql和mysqli(PHP 5里新增加的软件工具)程序提供的操作界面去完成各项系统管理任务;还将介绍其他几种程序设计语言,将在专门的章节里对Perl、Java、C、Visual Basic 6以及Visual Basic.NET和C#等语言进行讨论。   本书的主要内容将以参考资料篇(第五部分)作为结束,将对MySQL所支持的各种SQL命令、常见MySQL系统管理工具的功能选项及几种重要的程序设计语言(PHP、Perl、C、Java、ADO .NET)所提供的接口函数进行总结。   最后是附录,其内容涉及术语解释(附录A),对书里提到的各个示例文件的介绍(附录B,有关文件都可以从www.apress.com网站下载),以及帮助大家进一步掌握MySQL的参考读物和建议(附录C)。   我们相信,本书里的示例数据库和示例程序能够帮助那些打算自行开发一个数据库应用软件的读者打下一个坚实的基础。在这里,预祝大家能够从中获得乐趣和成功。   本书(第3版)新增内容 .  本书在第2版的基础上进行了大量的改写。大部分改动反映了MySQL服务器从4.1版到5.0版的变化。围绕着MySQL相关领域做出的改动也有不少,其中包括新的程序设计接口(如PHP 5里的mysqli)和新的系统管理工具。最为重要的新增内容如下所示。   MySQL从4.1到5.0的变化   ·增加对Unicode和其他新字符集的支持(新增和改动之处详见书中各有关内容)。   ·视图(在第8章中新增了一个小节)。   ·INFORMATION_SCHEMA数据表(在第9章中新增了一个小节)。   ·子查询(在第10章中新增了一个小节)。   ·经过改进的密码验证机制和访问控制管理方面的新增权限(第11章)。   ·GIS函数(新增的第12章)。   ·存储过程和触发器(新增的第13章)。   ·对InnoDB数据表进行维护管理的新办法(在第14章中新增了一个小节)。   ·各种新的SQL命令、函数、数据类型(新增和改动之处详见书中各有关内容,第21章对它们进行了汇总)。   ·MySQL服务器和它的各种系统管理工具的新增功能选项(新增和改动之处详见书中各有关内容,第21章对它们进行了汇总)。   相关领域中的变化   ·MySQL Administrator和MySQL Query Browser(新增的第5章)。   ·phpMyAdmin工具中的许多新增功能(新增的第6章)。   ·OpenOffice / StarOffice中的数据库接口(在第7章中新增了一节)。   ·PHP 5里的mysqli工具,这是一个面向对象的接口(新增的第15章、第23章对它们进行了汇总)。   ·C-API中的新增函数(第18章、第23章对它们进行了汇总)。   ·新的ADO .NET驱动程序集Connector/Net(第20章、第23章对它们进行了汇总)。   本书没有涉及的内容   在本书的各有关章节里,分别讨论了如何运用PHP、Perl、C、Java和Visual Basic等多种程序设计语言编写MySQL应用软件的问题。那些章节里的内容是在读者对相应的程序设计语言已经比较熟悉的假设下展开的——原因很简单:本书没有足够的篇幅从入门开始对那么多种程序设计语言进行介绍。换句话说,读者只有在自己已经熟练掌握(比如PHP语言)的前提下才能从专门讨论PHP编程技巧的有关章节里获得最大的收益。   示例程序、源代码   书中所有示例程序的源代码都可以通过www.turingbook.com和www.apress.com网站下载。   在这本书里,读者会在一些比较长的示例程序清单的开头看到一个如下所示的注释行,它给出了该示例文件在上述网站上的文件名,比如:   出于节约篇幅的考虑,在书中有时只给出了整段程序代码中最精彩的片段。   软件版本问题   MySQL本身以及各种工具程序、程序设计语言和相关函数库的功能会随着它们各自的每一个新版本的出现而发生变化——这些变化每个星期都有可能发生。下面这份清单是笔者在编写这本书时使用的各种软件的版本明细(对这些软件名称的解释详见书中的适当位置)。   Apache:2.n版。   Connector/J:3.1.7版和3.2.0版。   Connector/ODBC(以前叫做MyODBC):3.51.11版。   gcc:3.3版。   Java:1.4.2版和1.5.0版。   Linux:本书中的MySQL工具和其他程序都已经在Windows和Linux环境下通过了测试。我们的Linux测试环境使用的是Red Hat Enterprise 4和SUSE Professional 9.2和9.3 beta发行版本。   Microsoft Office:Office 2000。   Microsoft Visual Basic、VBA、ADO:书中的Visual Basic程序是在Visual Basic 6、VBA 6和ADO 2.8环境下开发和测试的。   Microsoft Visual Basic .NET、C#、ADO.NET:与这几个方面有关的信息主要以Visual Studio 2005 beta版(即.NET Framework 2.0)为依据。   Microsoft Windows:Windows环境下的测试工作全都是在Windows XP SP2系统上完成的。从理论上讲,有关信息应该同样适用于Windows 2000和未来的Windows版本。   MySQL:5.0.3版。   OpenOffice:2.0 beta版。   Perl:5.8版。   PHP:5.0版和5.3版。   phpMyAdmin:2.6.1版。   印刷体例   ·SQL命令、SQL函数以及SQL、C、Java、PHP、Perl、Visual Basic等语言里的各种函数方法、类和关键字主要以斜体字表示(例如:SELECT、mysql_query)。   ·UNIX/Linux用户名也以斜体字表示(例如:root、mysql)。   ·菜单命令使用首字母大写字体表示(例如:File
zip
发布资源于 8 年前

MySQL 5权威指南(第3版)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 MySQL 5权威指南(第3版) 基本信息 原书名: The Definitive Guide to MySQL 5, Third Edition 原出版社: Apress 作者: (美)Michael Kofler 译者: 杨晓云 王建桥 杨涛 等 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:711515337X 上架时间:2006-11-27 出版日期:2006 年12月 开本:16开 页码:662 版次:3-1 内容简介   本书全面深入地介绍了mysql的功能,主要内容包括mysql、php、apache、perl等组件的安装与功能简介,mysql等一些重要系统管理工具和用户操作界面的使用,mysql数据库系统设计的基础知识与用不同语言设计mysql数据库的过程,以及sql语法、工具、选项、api应用指南,最大限度地帮助读者更快地学习和掌握mysql数据库系统的设计和使用。本书覆盖了mysql 5.0,讨论了新的程序设计接口(如php 5里的mysqli)和新的系统管理工具。    本书是mysql数据库管理员和开发人员的必备参考书。 作译者   Michael Kofler 在奥地利格拉茨技术大学获得计算机科学博士学位。他写了很多非常成功的计算机图书,内容涉及Visual Basic、Linux、Mathematica和Maple等多种程序没计语言和软件。Kofler还是Definitive Guide to Excel VBA第2版的作者。 目录 封面 -23 封底 -22 扉页 -21 版权 -20 版权声明 -19 译者序 -18 前言 -16 目录 -11 第一部分 入门 1 第1章 什么是MySQL 2 1.1 什么是数据库 2 1.1.1 关系、数据库系统、服务器和客户 2 1.1.2 关系数据库系统与面向对象数据库系统 3 1.1.3 数据表、记录、字段、查询、SQL、索引和键 3 1.2 MySQL 4 1.3 MySQL的不足 6 1.4 MySQL的版本编号 7 1.4.1 Alpha、Beta、Gamma、Production(Generally Available) 8 1.4.2 按版本编号排列的MySQL功能表 8 1.5 MySQL的许可证 10 1.5.1 GPL许可证下的权利和义务 10 1.5.2 开源许可证下的MySQL软件 10 1.5.3 商用许可证下的MySQL软件 11 1.5.4 MySQL客户软件开发库(Connector/ODBC、Connector/J等)的商用许可证 12 1.5.5 PHP项目的客户许可证问题——F(L)OSS特例 12 1.5.6 MySQL软件的版本名称 13 1.5.7 MySQL软件的技术支持合同 14 1.6 MySQL软件的替代品 14 1.7 小结 15 第2章 测试环境 16 2.1 是Windows还是UNIX/Linux 16 2.1.1 MySQL应用现状(因特网上的数据库服务器) 16 2.1.2 开发环境 17 2.2 在Windows系统上安装MySQL和相关软件 17 2.2.1 安装Apache 2.0 18 2.2.2 安装MySQL 5.0 19 2.2.3 安装PHP 5.0 22 2.2.4 安装Perl 23 2.3 在SUSE Linux 9.3系统上安装MySQL和相关软件 25 2.3.1 安装Apache 2、PHP 5和Perl 25 2.3.2 安装MySQL 5.0 27 2.4 在Red Hat Enterprise Linux 4系统上安装MySQL和相关软件 29 2.4.1 安装Apache 2 29 2.4.2 安装MySQL 5 30 2.4.3 编译PHP 5 30 2.4.4 安装Perl 5.8 33 2.5 编译MySQL软件的开发者版本(Linux) 33 2.5.1 安装Bitkeeper 33 2.5.2 下载MySQL软件的开发者版本 34 2.5.3 编译MySQL 34 2.5.4 创建用来管理访问权限的mysql数据库 34 2.5.5 MySQL配置文件和Init-V脚本 34 2.5.6 启动MySQL服务器 35 2.6 配置Apache 35 2.6.1 配置文件 35 2.6.2 基本设置 36 2.6.3 对不同子目录的访问权限(.htaccess) 37 2.7 配置PHP 39 2.8 配置MySQL 41 第3章 初级案例研究:MySQL+PHP 43 3.1 概述 43 3.2 数据库的开发 44 3.2.1 启动mysql命令行解释器 44 3.2.2 创建数据库 45 3.2.3 创建数据表 46 3.2.4 为什么要避简就难 47 3.3 调查问卷 48 3.4 问卷调查结果的处理和显示 49 3.4.1 mysql界面与mysqli界面 49 3.4.2 建立与数据库的连接 49 3.4.3 对数据进行处理并把它存入数据库 49 3.4.4 显示问卷调查的结果 50 3.4.5 程序代码(results.php) 51 3.4.6 最终生成的HTML代码 52 3.5 改进意见 52 第二部分 管理工具和用户操作界面 55 第4章 mysql、mysqladmin和mysqldump 56 4.1 mysql 56 4.1.1 启动mysql 57 4.1.2 mysql的命令行选项 58 4.1.3 交互式使用mysql 59 4.1.4 UNIX/Linux环境中mysql的使用技巧 60 4.1.5 Windows环境下mysql的使用技巧 61 4.1.6 用mysql处理SQL文件 63 4.2 mysqladmin 64 4.3 mysqldump 64 第5章 MySQL Administrator和MySQL Query Browser 65 5.1 安装 65 5.2 与MySQL服务器建立连接 66 5.3 MySQL Administrator 67 5.3.1 Server Information模块(查看服务器信息) 68 5.3.2 Service Control模块(启动/停止MySQL服务器) 68 5.3.3 Startup Variables模块(配置启动参数) 68 5.3.4 User Administration模块(用户管理) 69 5.3.5 Server Connections模块(查看服务器连接信息) 71 5.3.6 Health模块(查看系统负载) 71 5.3.7 Server Logs模块(查看服务器日志) 72 5.3.8 Backup模块(制作数据库备份) 72 5.3.9 Restore模块(用备份恢复数据库) 73 5.3.10 Replication Status模块(查看镜像机制的工作状态) 74 5.3.11 Catalogs模块(对数据库和数据表进行管理) 74 5.4 MySQL Query Browser 74 5.4.1 SQL命令的输入和执行 74 5.4.2 对SELECT结果里的数据进行修改 76 5.4.3 SQL命令的历史记录和书签 77 5.4.4 一次执行多条命令(脚本) 77 5.4.5 存储过程 77 5.4.6 MySQL Help(帮助文档) 77 第6章 phpMyAdmin 78 6.1 phpMyAdmin的安装与配置 79 6.1.1 安装phpMyAdmin文件 79 6.1.2 配置phpMyAdmin 79 6.1.3 config身份验证模式 80 6.1.4 http和cookie身份验证模式 82 6.2 用户管理,保护MySQL 84 6.2.1 保护MySQL 85 6.2.2 创建新用户 86 6.3 创建和编辑数据库 88 6.3.1 创建数据库 88 6.3.2 编辑现有的数据表 89 6.3.3 设置外键规则 90 6.3.4 数据库设计方案的汇总和存档 90 6.4 查看、插入和编辑数据 91 6.5 执行SQL命令 92 6.6 导入和导出 93 6.6.1 数据库备份(SQL文件) 93 6.6.2 导出数据表(CSV文本文件) 95 6.6.3 导入数据库或数据表(SQL文件) 95 6.6.4 插入数据表数据(文本文件) 96 6.7 服务器管理 96 6.8 辅助功能 97 6.8.1 为phpMyAdmin创建数据库 97 6.8.2 SQL书签和历史记录 98 6.8.3 关联/引用关系信息的保存 98 6.8.4 创建PDF格式的数据表关联/引用关系图 100 6.8.5 格式转换(数据列内容的另类显示效果) 101 第7章 Microsoft Office和OpenOffice/StarOffice 103 7.1 安装Connector/ODBC 103 7.2 Microsoft Access 106 7.2.1 数据表的导入和导出 107 7.2.2 数据库转换器:Access→MySQL(exportsql.txt) 109 7.3 Microsoft Excel 110 7.4 安装Connector/J 112 7.4.1 Connector/J 112 7.4.2 安装 112 7.5 OpenOffice/StarOffice Base 113 7.5.1 与MySQL数据库建立连接 113 7.5.2 Table模块 114 7.5.3 Queries模块 115 7.5.4 Forms模块、Rerports模块和其他功能 116 7.6 OpenOffice/StarOffice的Data Source视图 117 7.6.1 建立数据源 118 7.6.2 数据的导入 118 第三部分 基础知识 119 第8章 数据库设计概论 120 8.1 参考读物 120 8.2 数据表类型 121 8.2.1 MyISAM数据表 121 8.2.2 InnoDB数据表 122 8.2.3 HEAP数据表 123 8.2.4 临时数据表 124 8.2.5 其他的数据表类型 124 8.2.6 数据表文件 125 8.3 MySQL数据类型 126 8.3.1 整数(xxxINT) 126 8.3.2 定点数(DECIMAL) 127 8.3.3 日期与时间(DATE、TIME、DATETIME、TIMESTAMP) 128 8.3.4 字符串(CHAR、VARCHAR、xxxTEXT) 130 8.3.5 二进制数据(xxxBLOB和BIT) 133 8.3.6 选项和属性 135 8.4 数据库设计技巧 135 8.4.1 数据库设计要求 135 8.4.2 起名字的技巧 136 8.4.3 数据库具体设计工作中的技巧 136 8.5 规范化 137 8.5.1 起点 137 8.5.2 第一范式 138 8.5.3 第二范式 139 8.5.4 第三范式 140 8.5.5 规范化理论 141 8.6 层次关系的处理 143 8.6.1 层次关系的处理难点 144 8.6.2 从数据表创建层次关系树 145 8.6.3 搜索categories数据表里的下级图书门类 147 8.6.4 搜索categories数据表里的上级图书门类 148 8.7 关系 149 8.7.1 1:1关系 149 8.7.2 1:n关系 150 8.7.3 n:m关系 151 8.8 主键和外键 151 8.8.1 主键 151 8.8.2 外键 152 8.8.3 引用一致性(外键约束条件) 153 8.9 索引 156 8.9.1 普通索引、唯一索引和主索引 157 8.9.2 全文索引 158 8.9.3 查询和索引的优化 159 8.10 视图 161 8.11 示例数据库mylibrary(图书管理) 163 8.11.1 数据库的属性 164 8.11.2 数据表的属性 164 8.12 示例数据库myforum(网上论坛) 165 8.12.1 讨论组数据库:myforum 165 8.12.2 帖子之间的层次关系 166 8.13 示例数据库exceptions(用于特殊情况的测试) 167 8.13.1 数据表testall 167 8.13.2 数据表text_text 168 8.13.3 数据表test_blob 168 8.13.4 数据表test_date 168 8.13.5 数据表test_enum 168 8.13.6 数据表test_null 168 8.13.7 数据表test_sort1 168 8.13.8 数据表test_sort2 169 8.13.9 数据表importtable1、importtable2、exporttable 169 第9章 SQL语言入门 170 9.1 简介 170 9.2 简单查询(SELECT) 171 9.2.1 确定数据表里有多少条数据记录(数据行) 172 9.2.2 确定数据表里有多少条内容不重复的数据记录(DISTINCT) 172 9.2.3 限制查询结果中的数据列个数 172 9.2.4 限制查询结果中的数据记录个数(LIMIT) 173 9.2.5 在使用LIMIT关键字确定数据表里的数据记录数(SQLCALCFOUNDROWS、FOUNDROWS()) 173 9.3 对查询结果进行排序(ORDER BY) 174 9.3.1 选择一种排序方式 174 9.3.2 试用不同的排序方式 175 9.4 筛选数据记录(WHERE,HAVING) 176 9.5 涉及多个数据表的关联查询(LEFT/RIGHT JOIN) 177 9.5.1 两个数据表的关联 178 9.5.2 3个或更多个数据表的关联 179 9.6 合并查询结果(UNION) 181 9.7 分组查询,统计函数(GROUP BY) 181 9.7.1 统计函数 182 9.7.2 统计函数GROUP_CONCAT() 183 9.7.3 对多个数据列进行GROUP BY查询 184 9.7.4 GROUP BY...WITH ROLLUP 184 9.8 修改数据(INSERT、UPDATE和DELETE) 185 9.8.1 备份数据 185 9.8.2 插入数据记录(INSERT) 186 9.8.3 修改数据记录(UPDATE) 188 9.8.4 删除数据记录(DELETE) 188 9.9 创建数据表、数据库和索引 190 9.9.1 创建数据库(CREATE DATABASE) 190 9.9.2 创建数据表(CREATE TABLE) 191 9.9.3 创建索引(CREATE INDEX) 192 9.9.4 变更数据表的结构(ALTER TABLE) 192 9.9.5 删除数据库和数据表(DROP) 193 9.9.6 自动修改数据表设计(默许的数据列修改) 193 9.9.7 SHOW命令 194 9.9.8 INFORMATION_SCHEMA数据表家族 195 第10章 SQL解决方案 197 10.1 字符串 197 10.1.1 基本函数 197 10.1.2 改变字符集 198 10.1.3 设置客户端字符集 199 10.1.4 模板匹配 200 10.2 日期和时间 201 10.2.1 日期和时间的语法 201 10.2.2 与日期和时间有关的计算 202 10.2.3 UNIX时间戳 204 10.2.4 地理时区 206 10.3 ENUM和SET数据类型 208 10.3.1 ENUM 208 10.3.2 SET 209 10.4 变量与条件表达式(IF、CASE) 209 10.4.1 变量 210 10.4.2 IF查询 211 10.4.3 CASE分支 211 10.5 在数据表间复制数据 212 10.5.1 利用复制操作创建新数据表 212 10.5.2 把数据复制到现有数据表 213 10.6 统计报表 213 10.6.1 涉及titles、languages和cate-gories数据表的统计报表 214 10.6.2 月度查询统计报表 215 10.7 子查询 216 10.7.1 语法变体 216 10.7.2 示例 218 10.8 保证数据的一致性 219 10.8.1 找出没有作者的图书 219 10.8.2 找出无效的出版公司引用:1:n关系中的无效记录 219 10.8.3 找出作者与图书之间的无效链接(n:m关系) 220 10.9 找出冗余的数据记录 221 10.10 数据表设计方案的改进 221 10.11 对前n条或后n条记录进行处理 223 10.11.1 数据查询(SELECT) 223 10.11.2 修改现有记录(UPDATE和DELETE) 224 10.11.3 把全部讨论线程删除到只剩下最新的500个线程 224 10.12 以随机方式选择数据记录 225 10.12.1 通用方法:RAND()函数 225 10.12.2 自备随机数的数据表 225 10.12.3 利用id数据列选择随机记录 226 10.13 全文索引 226 10.13.1 基础知识 227 10.13.2 图书检索 229 10.13.3 论坛文章检索 231 10.14 锁定 232 10.14.1 语法 232 10.14.2 GETLOCK和RELEASE LOCK函数 233 10.15 事务 233 10.15.1 为什么要使用事务 233 10.15.2 事务的控制 234 10.15.3 事务机制的工作流程 235 10.15.4 事务与锁定 237 10.15.5 事务的隔离模式 238 10.15.6 出错处理 240 第11章 访问权限与信息安全 241 11.1 简介 241 11.1.1 客户与MySQL服务器之间的连接 241 11.1.2 访问管理 242 11.2 急救 246 11.2.1 保护MySQL安装 246 11.2.2 创建新的数据库和用户 247 11.2.3 授予创建个人数据库的权限 248 11.2.4 忘记root密码情况的处理 249 11.3 访问控制机制的内部工作原理 250 11.3.1 两级访问控制 250 11.3.2 权限 250 11.3.3 mysql数据库 253 11.3.4 user数据表 254 11.3.5 user.Host数据列 257 11.3.6 db数据表和host数据表 260 11.3.7 tablespriv和columnspriv数据表 261 11.3.8 procs_priv数据表 263 11.4 访问权限的设置工具 263 11.4.1 使用GRANT和REVOKE命令改变访问权限 263 11.4.2 使用SHOW GRANT命令查看访问权限 265 11.4.3 使用mysqladmin程序改变密码 265 11.5 MySQL 4.1版本开始的安全密码验证 265 11.5.1 升级客户端函数库 266 11.5.2 old-passwords模式 266 11.5.3 同时使用旧的和新的密码的操作 266 11.6 建立连接的问题 267 11.6.1 连接困难的可能原因 267 11.6.2 错误检查的更多方法 270 11.7 系统安全性 270 11.7.1 系统级安全措施 270 11.7.2 重要数据存储的安全保护 271 11.7.3 与MySQL服务器有关的安全风险 271 11.7.4 不要使用root或Administrator权限来运行MySQL服务器 271 11.7.5 网络安全与防火墙 272 第12章 GIS函数 273 12.1 GIS数据格式 273 12.1.1 地理坐标的表示方法 273 12.1.2 Well-Known Text和Well- Known Binary(OpenGIS) 274 12.2 MySQL的GIS实现 275 12.2.1 数据类型 275 12.2.2 简单的几何函数 277 12.2.3 空间分析函数 279 12.2.4 为几何数据创建索引 281 12.3 SQL示例(冰川数据库) 281 12.3.1 创建数据表 282 12.3.2 插入数据 282 12.3.3 查询数据 282 12.4 SQL示例(opengeodb数据库) 284 12.4.1 数据来源和导入 285 12.4.2 导入 285 12.4.3 对圆形地理区域进行搜索 286 第13章 存储过程和触发器 288 13.1 为什么要使用存储过程和触发器 288 13.1.1 存储过程 288 13.1.2 触发器 289 13.2 初识SP 289 13.2.1 MySQL命令解释器:mysql程序 290 13.2.2 MySQL Query Browser 291 13.3 SP的实现 292 13.4 SP的管理 293 13.4.1 创建、编辑和删除SP 293 13.4.2 信息安全问题 295 13.4.3 SP的备份和恢复 295 13.5 SP的语法和语言元素 296 13.5.1 基本语法规则 296 13.5.2 调用SP(CALL) 297 13.5.3 参数和返回值 298 13.5.4 命令的封装(BEGIN -END) 299 13.5.5 分支 301 13.5.6 循环 301 13.5.7 出错处理(出错处理句柄) 302 13.5.8 光标 304 13.6 SP应用示例 306 13.6.1 增加新的图书门类 306 13.6.2 增加一本新图书 307 13.6.3 确定父门类 308 13.6.4 按层次结构生成图书门类清单 309 13.7 触发器 311 13.7.1 创建触发器 311 13.7.2 删除触发器 312 13.7.3 实现细节和管理工具 312 13.7.4 功能局限性 312 13.7.5 触发器应用示例 313 第14章 管理与服务器配置 314 14.1 基础知识 314 14.1.1 MySQL数据库系统的管理工具 314 14.1.2 设置root密码 315 14.1.3 MySQL服务器配置文件 316 14.1.4 重新启动MySQL服务器 316 14.1.5 MySQL服务器的基本配置 317 14.1.6 目录 317 14.1.7 通信设置 317 14.1.8 默认的数据表格式 318 14.1.9 新数据表的默认字符集和排序方式 318 14.1.10 地理时区 318 14.1.11 出错消息的显示语言 319 14.1.12 SQL模式 319 14.2 备份 321 14.2.1 备份数据库(mysqldump) 321 14.2.2 用备份恢复数据库(mysql) 324 14.2.3 快速备份(mysqlhotcopy) 325 14.3 数据库的迁移 327 14.4 导出和导入文本文件 329 14.4.1 文本文件里的特殊字符 329 14.4.2 字符串、数值、日期/时间、BLOB和NULL值 330 14.4.3 用LOAD DATA INFILE命令导入 330 14.4.4 用mysqlimport工具导入 333 14.4.5 用SELECT ... INTO OUTFILE命令导出 333 14.4.6 用mysqldump程序导出 335 14.4.7 用mysql程序的批处理模式导出 335 14.5 日志 337 14.5.1 为什么要使用日志 337 14.5.2 缺点与不足 338 14.5.3 变更日志(update log) 338 14.5.4 出错日志、登录日志和慢查询日志 340 14.5.5 日志文件的管理 342 14.6 镜像机制 342 14.6.1 简介 342 14.6.2 建立镜像机制的主控系统 344 14.6.3 建立镜像机制的从属系统 346 14.6.4 用LOAD DATA命令建立镜像机制 348 14.6.5 内部镜像机制 348 14.6.6 客户端编程 350 14.7 管理MyISAM数据表 351 14.7.1 myisamchk程序 351 14.7.2 myisamchk程序的使用方法 352 14.7.3 速度优化与内存使用情况 352 14.7.4 对MyISAM数据表进行压缩和优化 353 14.7.5 修复受损的MyISAM数据表 353 14.7.6 压缩MyISAM数据表(myisampack程序) 354 14.8 InnoDB数据表的管理 354 14.8.1 表空间的管理 354 14.8.2 日志文件 359 14.9 MySQL服务器的优化 362 14.9.1 优化内存管理 363 14.9.2 查询缓存区 364 14.10 ISP数据库管理 366 14.10.1 ssh工具 366 14.10.2 phpMyAdmin工具 366 14.10.3 实现自定义的PHP脚本 366 14.10.4 自定义:Perl脚本 367 第四部分 程序设计 369 第15章 PHP 370 15.1 mysql功能模块 370 15.1.1 连接MySQL服务器 371 15.1.2 执行SQL命令 372 15.1.3 处理SELECT查询结果 373 15.1.4 事务 376 15.1.5 出错处理与查找 376 15.2 mysqli的类、方法和属性 377 15.2.1 选择编程接口:mysql还是mysqli 377 15.2.2 有效性测试 378 15.2.3 构成mysqli接口的类 378 15.2.4 连接MySQL服务器 378 15.2.5 执行SQL命令 380 15.2.6 处理SELECT查询结果(mysqli_result()方法) 380 15.2.7 一次执行多条SQL命令 382 15.2.8 带参数的SQL命令(预处理语句) 382 15.2.9 事务 385 15.3 把数据库功能打包为一个类 385 15.3.1 使用单独的密码文件提高安全性 385 15.3.2 使用MyDb类实现安全和方便 386 15.4 把SELECT查询结果显示为一个表格 389 15.5 字符串、日期、时间、BLOB和NULL 390 15.5.1 字符串和BLOB 390 15.5.2 日期和时间 391 15.5.3 NULL值 392 15.6 向关联数据表插入新数据记录 393 15.7 处理来自HTML表单的输入数据 393 15.7.1 代码结构 394 15.7.2 创建HTML表单 396 15.7.3 对表单数据进行合法性检查 400 15.7.4 把表单数据存入数据库 401 15.7.5 删除一本图书 403 15.7.6 值得改进的地方 404 15.8 分页显示查询结果 404 15.8.1 代码结构 405 15.8.2 对图书作者进行搜索 407 15.8.3 对图书进行搜索 408 15.8.4 显示搜索结果 408 15.8.5 指向其他结果页面的链接 410 15.9 处理层次化数据 410 15.9.1 代码结构 411 15.9.2 显示图书门类树 413 15.9.3 插入一个或多个新图书门类 415 15.9.4 删除一个图书门类及其下级门类 416 15.9.5 搜索上级图书门类 417 15.9.6 搜索下级图书门类 418 15.10 速度优化 419 15.10.1 提高代码执行效率的基本原则 419 15.10.2 统计信息和性能指标 420 15.10.3 示例:高效地生成图书门类下拉列表 421 15.11 Unicode 424 15.12 二进制数据(BLOB)和图像 428 15.12.1 在数据库里存储图像的基础知识与编程技巧 429 15.12.2 在数据库里存储图像的程序代码 431 15.13 存储过程 434 15.14 SP Administrator 435 15.14.1 安装SP Administrator 435 15.14.2 使用SP Administrator 435 15.14.3 SP Administrator代码 436 第16章 Perl 441 16.1 编程技巧 441 16.1.1 DBI和DBD::mysql模块 441 16.1.2 与数据库建立连接 442 16.1.3 执行SQL命令 443 16.1.4 处理SELECT查询结果 445 16.1.5 字符串、BLOB、日期值、SET、ENUM和NULL 449 16.1.6 DBD::mysql模块特有的方法和属性 452 16.1.7 Unicode 453 16.1.8 事务 454 16.1.9 出错处理 454 16.2 示例:删除无效的数据记录(mylibrary) 456 16.3 CGI示例:图书管理(mylibrary) 457 16.3.1 图书检索(mylibrary-find.pl脚本) 457 16.3.2 新图书的简单输入(mylibrary-simpleinput.pl脚本) 460 16.4 CGI Unicode示例 462 16.4.1 图书检索(mylibrary-find-utf8.pl脚本) 462 16.4.2 新图书的输入(mylibrary-simpleinput-utf8.pl脚本) 463 第17章 Java(JDBC和Connector/J) 464 17.1 基础知识 464 17.1.1 Java的安装 464 17.1.2 Connector/J的安装 466 17.2 程序设计技巧 468 17.2.1 第一个示例 469 17.2.2 与MySQL服务器建立连接 470 17.2.3 连接MySQL服务器时可能遇到的问题 472 17.2.4 执行SQL命令 473 17.2.5 处理SELECT查询结果 474 17.2.6 预处理语句 478 17.2.7 事务 479 17.2.8 批处理命令 479 17.2.9 二进制数据(BLOB)的处理 480 第18章 C语言 483 18.1 MySQL C API(libmysqlclient) 483 18.2 Hello,World 483 18.2.1 对系统的基本要求 483 18.2.2 入门级示例 484 18.2.3 编译与链接 485 18.2.4 Makefile 486 18.2.5 以静态方式绑定MySQL API函数 486 18.3 与MySQL服务器建立连接 487 18.3.1 处理MySQL配置文件my.cnf 488 18.3.2 处理命令行选项 488 18.4 执行SQL命令 489 18.4.1 简单的SQL命令 489 18.4.2 一次执行多条SQL命令 490 18.4.3 预处理语句 493 18.4.4 字符集设置(Unicode) 497 18.5 处理二进制数据和特殊字符 498 18.6 出错处理 500 第19章 Visual Basic 6/VBA 501 19.1 基础知识和术语 501 19.2 Connector/ODBC选项 503 19.3 ADO程序设计与Visual Basic 6/VBA 504 19.4 与MySQL服务器建立连接 506 19.4.1 与MySQL服务器建立连接:使用DSN 506 19.4.2 与MySQL服务器建立连接(不使用DSN) 506 19.4.3 ADO程序设计技巧 509 19.4.4 示例:给titles数据表增加一个authors数据列 514 19.4.5 示例:添加一本新图书 517 19.4.6 示例:把图像文件存入和读出BLOB数据列 519 19.5 转换器:从Microsoft SQL Server到MySQL 521 19.5.1 mssql2mysql脚本的特点 521 19.5.2 对系统的要求 521 19.5.3 缺陷与不足 521 19.5.4 使用方法 522 19.5.5 设置有关参数 522 19.6 VBMySQLDirect 523 19.6.1 安装 524 19.6.2 应用 524 19.6.3 示例 524 第20章 Visual Basic .NET和C# 526 20.1 ADO .NET与MySQL之间的通信 526 20.1.1 通过Connector/Net连接数据库 527 20.1.2 用ODBC数据泵连接数据库 530 20.2 编程技巧 532 20.2.1 执行SQL命令(MySql-Command对象) 532 20.2.2 带参数的SQL命令(MySql - Parameter对象) 533 20.2.3 处理离散的SELECT查询结果(ExecuteScalar()方法) 535 20.2.4 读取SELECT查询结果(MySqlDataReader对象) 535 20.2.5 DataSet、DataTable和MySqlDataAdapter对象 537 20.2.6 辅助函数 540 20.2.7 出错处理 540 20.2.8 Windows.Form和ASP .NET控件 540 20.2.9 事务 542 20.3 示例:把新图书记录存入mylibrary数据库 542 20.4 示例:把图像文件存入和读出一个BLOB数据列 544 第五部分 参考资料 547 第21章 SQL语法指南 548 21.1 语法 548 21.1.1 对象命名规则 548 21.1.2 区分字母大小写 549 21.1.3 字符串 549 21.1.4 字符集和排序方式 550 21.1.5 数值 550 21.1.6 数值和字符串的自动转换 550 21.1.7 日期和时间 551 21.1.8 二进制数据 551 21.1.9 二进制数值 551 21.1.10 注释语句 551 21.1.11 SQL命令末尾的分号 552 21.2 操作符 552 21.2.1 算术操作符与位操作符 553 21.2.2 比较操作符 553 21.2.3 使用LIKE操作符进行模式匹配 553 21.2.4 使用REGEXP操作符进行模式匹配 554 21.2.5 二进制字符串比较 554 21.2.6 逻辑操作符 555 21.3 变量和常数 555 21.3.1 变量赋值 555 21.3.2 使用和查看变量 555 21.3.3 全局级系统变量与会话级系统变量 556 21.3.4 SET PASSWORD命令 556 21.3.5 结构化变量 556 21.3.6 常数 557 21.4 MySQL数据类型 557 21.5 SQL命令汇总表(按功能分类) 559 21.6 SQL命令指南(按字母表顺序排列) 561 21.7 SQL函数指南 596 21.7.1 算术函数 596 21.7.2 比较函数、测试函数、分支函数 597 21.7.3 类型转换(投射) 597 21.7.4 字符串处理 597 21.7.5 日期/时间函数 600 21.7.6 GROUP BY函数 604 21.7.7 其他函数 605 21.8 GIS数据类型与GIS函数 606 21.9 与存储过程和触发器有关的语言元素 608 第22章 MySQL工具和选项 610 22.1 概述 610 22.2 通用选项和配置文件 610 22.2.1 通用选项 610 22.2.2 设置配置文件的选项 612 22.2.3 内存量的表示方法 613 22.2.4 环境变量(系统变量) 613 22.2.5 选项设置规则 614 22.3 mysqld程序(服务器) 614 22.3.1 基本选项 615 22.3.2 与日志和镜像功能有关的选项 617 22.3.3 InnoDB配置选项 618 22.3.4 其他选项 620 22.4 mysqld_safe脚本(启动MySQL服务器) 620 22.5 mysqlinstalldb脚本(安装mysql数据库) 621 22.6 mysqlfixprivileges脚本(更新mysql数据库) 622 22.7 mysqlfixextensions脚本(重命名MyISAM文件) 622 22.8 mysql程序(SQL命令解释器) 622 22.9 mysqladmin程序(日常管理) 624 22.10 mysqldump程序(数据的备份/导出) 625 22.11 mysqlimport程序(文本导入、批量导入) 628 22.12 mysqlshow程序(查看信息) 628 22.13 myisamchk程序(修复MyISAM文件) 629 22.14 myisampack程序(压缩MyISAM文件) 630 第23章 MySQL API应用指南 632 23.1 PHP API(mysql接口) 632 23.2 PHP API(mysqli接口) 635 23.2.1 mysqli类 636 23.2.2 mysqli_result类 637 23.2.3 mysqli_stmt类 638 23.3 Perl DBI 638 23.3.1 常用的变量名 638 23.3.2 与MySQL服务器建立连接 639 23.3.3 执行SQL命令、处理SELECT查询结果 640 23.3.4 出错处理 642 23.3.5 辅助函数 642 23.3.6 DBD::mysql驱动程序中的MySQL专用扩展模块 642 23.4 JDBC(Connector/J) 644 23.4.1 与MySQL服务器建立连接 644 23.4.2 执行SQL命令 644 23.4.3 处理SELECT查询结果(ResultSet类) 646 23.4.4 事务 647 23.5 ADO .NET(Connector/Net) 647 23.5.1 与MySQL服务器建立连接 647 23.5.2 执行SQL命令与处理SELECT查询结果 648 23.5.3 利用DataSet/DataTable类修改数据 649 23.5.4 事务 650 23.6 C API 650 23.6.1 数据结构 650 23.6.2 连接与管理 652 23.6.3 执行SQL命令及处理SELECT查询结果 654 23.6.4 预处理语句 656 第六部分 附录 657 附录A 术语解释 658 译者序   MySQL是使用最广泛的开源数据库系统,它正在数据库市场上重演Linux在操作系统领域逐步取得成功的故事。PHP或Perl语言与MySQL相结合的数据库系统解决方案正被越来越多的网站所采用,其中又以LAMP模式(“Linux + Apache + MySQL + Perl或PHP”组合方式)最为流行。MySQL的突出优点包括:   ·适用面广。可以在Windows、Linux、Mac OS X及各种UNIX操作系统上运行,可以用C、C++、C#、Java、Perl、PHP、Python、Visual Basic和Visual Basic.NET等多种程序设计语言来开发MySQL应用程序。在Linux领域里,以MySQL作为后端数据库引擎的应用项目越来越多:它可以帮助人们更有效率地管理各种日志数据以及电子邮件、MP3文件、地址名单之类的数据。在Windows领域里,借助于ODBC接口,MySQL也能完成类似的任务(在许多场合下,MySQL提供了更好的技术基础)。   ·性能优异,运行稳定。MySQL是一种功能非常强大的关系数据库系统,它的安全性和稳定性足以满足许多应用项目的要求。美国航空航天局、美国洛斯?阿拉莫斯国家实验室(数据量高达7TB)、Yahoo!、Lycos、索尼、铃木、维基百科等大公司和大机构都采用了MySQL来建立它们的后端数据库。从这个意义上讲,选择MySQL就等于是让自己与这些优秀的公司站在了同一条起跑线上。此外,MySQL对硬件性能的要求不那么苛刻,这一点对小公司或个人用户来说特别有优势。   ·性价比高。MySQL是一个开源软件产品,采用GPL许可证发行,所以绝大多数MySQL应用项目都可以免费获得和使用MySQL软件。如果用户的MySQL项目不符合GPL许可证的有关规定,只须支付一些合理的费用就可以获得商业许可证和各种可选的技术支持服务合同。   ·技术支持丰富而且易于获得。因特网上有着丰富的MySQL资源。   与其他的开源数据库系统相比,MySQL不仅在性能指标方面高出一截,在应用范围和实际装机容量方面也远远领先于竞争对手。MySQL比其他数据库系统接受过更全面的测试,有着更齐全的文档,有MySQL经验的开发人员也相对更多一些。不过,MySQL目前还无法在所有的方面与一些老牌的商业化数据库系统抗衡。万一用户的项目必须用到某些MySQL尚不支持的功能,请在项目的前期可行性研究阶段做出判断和取舍。   本书是一部MySQL领域的名著,新版在第2版的基础上进行了大量的改写。大部分改动是根据MySQL软件从4.1版到5.0版的变化而做出的。围绕着MySQL相关领域做出的改动也有不少,其中包括新的程序设计接口(如PHP 5里的mysqli接口)和新的系统管理工具。本书从面向应用和面向示例两方面对MySQL数据库系统进行了全面系统的介绍,读者无须具备SQL编程或数据库设计经验,而书中的示例数据库和示例程序能够帮助那些打算自行开发一个数据库应用软件的读者打下坚实的基础。不过,因为本书没有足够的篇幅从入门开始对每一个论题进行探讨,所以书中有些内容(尤其是与编程有关的内容)需要读者具备相应的基础知识才能从中获得最大收益。   与任何一种现代数据库产品一样,MySQL的实际应用还需要涉及硬件设备、操作系统、网络与通信等许多方面。这些领域每天都有新的技术和改进诞生。   本书主要由杨晓云、王建桥、杨涛、李东梅翻译,参加翻译工作的还有范精明、许玉新、俞渭明、韩兰、张玉亭、李菘、张雁东、李京山、张立和、张勇、韩文光、孙殿刚、韩东升、陈丽芬、张异宝、卫健、李江卫、丁文学、张斌和汪艳华等同志。   因为译者水平有限,所以书中可能会有一些错误和疏漏,希望能够得到读者的谅解和指正。    前言   MySQL是使用最广泛的开源数据库系统,这主要有以下几个原因:   ·MySQL很快。   ·MySQL很稳定。   ·MySQL很容易学习。   ·MySQL可以在各种主流的操作系统(Windows、Linux、Mac OS X和各种UNIX版本)上运行。   ·MySQL应用软件可以用多种程序设计语言(如C、C++、C#、Java、Perl、PHP、Python、Visual Basic和Visual Basic.NET等)来编写。   ·网上有详尽的MySQL文档,与MySQL有关的书籍也非常多。   ·有许多应用项目都允许用户免费使用MySQL来开发(在遵守GPL许可证制度的前提下)。   ·虽然也有许多商业化的应用软件不受GPL许可证的约束,但只需支付一些合理的费用就可以获得商业许可证和各种可选的技术支持服务合同。   MySQL正在数据库市场上重演Linux在操作系统领域逐步取得成功的故事。PHP或Perl语言与MySQL相结合的数据库系统解决方案被越来越多的网站所采用。其中又以“Linux + Apache + MySQL + Perl或PHP”的组合方式最为流行,这种组合被人们称为LAMP模式。MySQL并不仅仅适用于小型网站,连Yahoo!、Slashdot和美国航空航天局等数据量非常大的公司和机构也在使用它。   本书内容   本书面向应用和面向示例对MySQL数据库系统进行了全面系统的介绍。读者无需具备SQL编程或数据库设计的经验。   本书的入门部分将从如何在运行Windows和Linux操作系统的计算机上安装MySQL、Apache、PHP和Perl等软件组件的具体步骤开始展开讨论。此外,还将介绍如何安装需要与MySQL配合使用的其他组件。在此基础上的第一个示例将向大家演示MySQL和PHP的基本用法。   本书的第二部分将对mysql、mysqladmin、mysqldump、MySQL Administrator、MySQL Query Browser和phpMyAdmin等几个最为重要的系统管理工具和用户操作界面进行介绍,最后一个程序特别适合使用Web浏览器以离线方式来完成各种系统管理工作的情况。在这一部分还将专门用一章的篇幅来讨论如何通过Microsoft Office、Sun StarOffice和OpenOffice访问MySQL数据库。   本书的第三部分为读者准备了大量有关数据库语言SQL、数据库系统的设计思路、存储过程、MySQL的访问控制系统和多种系统管理工作(如备份、日志和镜像等)的背景资料。   本书的第四部分将重点介绍PHP语言,其中有一章内容很长,读者可以学到许多程序设计方面的技巧。将通过一系列示例程序来演示如何利用mysql和mysqli(PHP 5里新增加的软件工具)程序提供的操作界面去完成各项系统管理任务;还将介绍其他几种程序设计语言,将在专门的章节里对Perl、Java、C、Visual Basic 6以及Visual Basic.NET和C#等语言进行讨论。   本书的主要内容将以参考资料篇(第五部分)作为结束,将对MySQL所支持的各种SQL命令、常见MySQL系统管理工具的功能选项及几种重要的程序设计语言(PHP、Perl、C、Java、ADO .NET)所提供的接口函数进行总结。   最后是附录,其内容涉及术语解释(附录A),对书里提到的各个示例文件的介绍(附录B,有关文件都可以从www.apress.com网站下载),以及帮助大家进一步掌握MySQL的参考读物和建议(附录C)。   我们相信,本书里的示例数据库和示例程序能够帮助那些打算自行开发一个数据库应用软件的读者打下一个坚实的基础。在这里,预祝大家能够从中获得乐趣和成功。   本书(第3版)新增内容 .  本书在第2版的基础上进行了大量的改写。大部分改动反映了MySQL服务器从4.1版到5.0版的变化。围绕着MySQL相关领域做出的改动也有不少,其中包括新的程序设计接口(如PHP 5里的mysqli)和新的系统管理工具。最为重要的新增内容如下所示。   MySQL从4.1到5.0的变化   ·增加对Unicode和其他新字符集的支持(新增和改动之处详见书中各有关内容)。   ·视图(在第8章中新增了一个小节)。   ·INFORMATION_SCHEMA数据表(在第9章中新增了一个小节)。   ·子查询(在第10章中新增了一个小节)。   ·经过改进的密码验证机制和访问控制管理方面的新增权限(第11章)。   ·GIS函数(新增的第12章)。   ·存储过程和触发器(新增的第13章)。   ·对InnoDB数据表进行维护管理的新办法(在第14章中新增了一个小节)。   ·各种新的SQL命令、函数、数据类型(新增和改动之处详见书中各有关内容,第21章对它们进行了汇总)。   ·MySQL服务器和它的各种系统管理工具的新增功能选项(新增和改动之处详见书中各有关内容,第21章对它们进行了汇总)。   相关领域中的变化   ·MySQL Administrator和MySQL Query Browser(新增的第5章)。   ·phpMyAdmin工具中的许多新增功能(新增的第6章)。   ·OpenOffice / StarOffice中的数据库接口(在第7章中新增了一节)。   ·PHP 5里的mysqli工具,这是一个面向对象的接口(新增的第15章、第23章对它们进行了汇总)。   ·C-API中的新增函数(第18章、第23章对它们进行了汇总)。   ·新的ADO .NET驱动程序集Connector/Net(第20章、第23章对它们进行了汇总)。   本书没有涉及的内容   在本书的各有关章节里,分别讨论了如何运用PHP、Perl、C、Java和Visual Basic等多种程序设计语言编写MySQL应用软件的问题。那些章节里的内容是在读者对相应的程序设计语言已经比较熟悉的假设下展开的——原因很简单:本书没有足够的篇幅从入门开始对那么多种程序设计语言进行介绍。换句话说,读者只有在自己已经熟练掌握(比如PHP语言)的前提下才能从专门讨论PHP编程技巧的有关章节里获得最大的收益。   示例程序、源代码   书中所有示例程序的源代码都可以通过www.turingbook.com和www.apress.com网站下载。   在这本书里,读者会在一些比较长的示例程序清单的开头看到一个如下所示的注释行,它给出了该示例文件在上述网站上的文件名,比如:   出于节约篇幅的考虑,在书中有时只给出了整段程序代码中最精彩的片段。   软件版本问题   MySQL本身以及各种工具程序、程序设计语言和相关函数库的功能会随着它们各自的每一个新版本的出现而发生变化——这些变化每个星期都有可能发生。下面这份清单是笔者在编写这本书时使用的各种软件的版本明细(对这些软件名称的解释详见书中的适当位置)。   Apache:2.n版。   Connector/J:3.1.7版和3.2.0版。   Connector/ODBC(以前叫做MyODBC):3.51.11版。   gcc:3.3版。   Java:1.4.2版和1.5.0版。   Linux:本书中的MySQL工具和其他程序都已经在Windows和Linux环境下通过了测试。我们的Linux测试环境使用的是Red Hat Enterprise 4和SUSE Professional 9.2和9.3 beta发行版本。   Microsoft Office:Office 2000。   Microsoft Visual Basic、VBA、ADO:书中的Visual Basic程序是在Visual Basic 6、VBA 6和ADO 2.8环境下开发和测试的。   Microsoft Visual Basic .NET、C#、ADO.NET:与这几个方面有关的信息主要以Visual Studio 2005 beta版(即.NET Framework 2.0)为依据。   Microsoft Windows:Windows环境下的测试工作全都是在Windows XP SP2系统上完成的。从理论上讲,有关信息应该同样适用于Windows 2000和未来的Windows版本。   MySQL:5.0.3版。   OpenOffice:2.0 beta版。   Perl:5.8版。   PHP:5.0版和5.3版。   phpMyAdmin:2.6.1版。   印刷体例   ·SQL命令、SQL函数以及SQL、C、Java、PHP、Perl、Visual Basic等语言里的各种函数方法、类和关键字主要以斜体字表示(例如:SELECT、mysql_query)。   ·UNIX/Linux用户名也以斜体字表示(例如:root、mysql)。   ·菜单命令使用首字母大写字体表示(例如:File
pdf
发布资源于 8 年前

SQL入门经典(第4版)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL入门经典(第4版) 基本信息 原书名: Sams Teach Yourself SQL in 24 Hours (4th Edition) 原出版社: Sams 作者: (美)Ryan Stephens    Ron Plew    Arie D. Jones    译者: 井中月 出版社:人民邮电出版社 ISBN:9787115204301 上架时间:2009-4-2 出版日期:2009 年5月 开本:16开 页码:327 版次:4-1 编辑推荐    全球销量逾百万册的系列图书.    连续十余年打造的经典品牌    直观、循序渐进的学习教程..    掌握关键知识的最佳起点    秉承Read Less,Do More(精读多练)的教学理念    以示例引导读者完成最常见的任务... 内容简介    本书的作者都是数据库教学与应用的专家,有着丰富的经验。本书详细介绍了sql语言的基本语法、基本概念,说明了各种sql实现与ansi标准之间的差别。书中包含了大量的范例,直观地说明了如何使用sql对数据进行处理。每章后面还有针对性很强的测验与练习,能够帮助读者更好地理解和掌握学习的内容。在最后的附录里还有关于安装mysql的详细介绍、书中用到的关键sql语句、测验和练习的答案。.    本书的内容层次清晰,针对性强,非常适合初学者作为入门教材。 目录 封面 -18 封底 -17 扉页 -16 版权 -15 内容提要 -14 关于作者 -13 献词 -12 致谢 -12 前言 -11 目录 -8 第一部分 SQL概念综述 1 第1章 欢迎来到SQL世界 3 1.1 SQL定义及历史 3 1.1.1 什么是SQL 4 1.1.2 什么是ANSI SQL 4 1.1.3 新标准:SQL-2003 4 1.1.4 什么是数据库 5 1.1.5 关系型数据库 5 1.1.6 客户端/服务器技术 6 1.1.7 基于Web的数据库系统 7 1.1.8 主流数据库厂商 7 1.2 SQL会话 8 1.2.1 CONNECT 8 1.2.2 DISCONNECT和EXIT 8 1.3 SQL命令的类型 8 1.3.1 定义数据库结构 9 1.3.2 操作数据 9 1.3.3 选择数据 9 1.3.4 数据控制语言 9 1.3.5 数据管理命令 10 1.3.6 事务控制命令 10 1.4 本书使用的数据库 10 1.4.1 表命名标准 11 1.4.2 数据一瞥 11 1.4.3 表的构成 12 1.4.4 MySQL范例和练习 14 1.5 小结 14 1.6 问与答 14 1.7 实践 15 1.7.1 测验 15 1.7.2 练习 15 第二部分 建立数据库 17 第2章 定义数据结构 19 2.1 数据是什么 19 2.2 基本数据类型 19 2.2.1 定长字符串 20 2.2.2 变长字符串 20 2.2.3 大对象类型 21 2.2.4 数值类型 21 2.2.5 小数类型 22 2.2.6 整数 22 2.2.7 浮点数 23 2.2.8 日期和时间类型 23 2.2.9 直义字符串 23 2.2.10 NULL数据类型 24 2.2.11 布尔值 24 2.2.12 自定义类型 24 2.2.13 域 25 2.3 小结 25 2.4 问与答 26 2.5 实践 26 2.5.1 测验 26 2.5.2 练习 27 第3章 管理数据库对象 29 3.1 什么是数据库对象 29 3.2 什么是规划 29 3.3 表:数据的主要存储方式 31 3.3.1 列 31 3.3.2 行 32 3.3.3 CREATE TABLE语句 32 3.3.4 命名规范 33 3.3.5 ALTER TABLE命令 33 3.3.6 从现有表新建另一个表 35 3.3.7 删除表 36 3.4 完整性约束 36 3.4.1 主键约束 36 3.4.2 惟一性约束 37 3.4.3 外键约束 38 3.4.4 NOT NULL约束 38 3.4.5 检查约束 39 3.4.6 去除约束 39 3.5 小结 40 3.6 问与答 40 3.7 实践 40 3.7.1 测验 41 3.7.2 练习 41 第4章 规格化过程 42 4.1 规格化数据库 42 4.1.1 原始数据库 42 4.1.2 数据库逻辑设计 43 4.1.3 规格形式 44 4.1.4 命名规范 46 4.1.5 规格化的优点 47 4.1.6 规格化的缺点 47 4.2 去规格化数据库 48 4.3 小结 48 4.4 问与答 48 4.5 实践 49 4.5.1 测验 49 4.5.2 练习 49 第5章 操作数据 51 5.1 数据操作概述 51 5.2 用新数据填充表 51 5.2.1 把数据插入到表 52 5.2.2 给表里指定列插入数据 53 5.2.3 从另一个表插入数据 53 5.2.4 插入NULL值 55 5.3 更新现有数据 55 5.3.1 更新一列的数据 55 5.3.2 更新一条或多记录里的多个字段 56 5.4 从表里删除数据 56 5.5 小结 57 5.6 问与答 57 5.7 实践 58 5.7.1 测验 58 5.7.2 练习 59 第6章 管理数据库事务 60 6.1 什么是事务 60 6.2 控制事务 61 6.2.1 COMMIT命令 61 6.2.2 ROLLBACK命令 62 6.2.3 SAVEPOINT命令 63 6.2.4 ROLLBACK TO SAVEPOINT命令 64 6.2.5 RELEASE SAVEPOINT命令 65 6.2.6 SET TRANSACTION命令 65 6.3 事务控制与数据库性能 65 6.4 小结 66 6.5 问与答 66 6.6 实践 66 6.6.1 测验 66 6.6.2 练习 67 第三部分 从查询中获得有效的结果 69 第7章 数据库查询 71 7.1 什么是查询 71 7.2 SELECT语句 71 7.2.1 SELECT语句 72 7.2.2 FROM子句 73 7.2.3 WHERE子句 74 7.2.4 ORDER BY子句 75 7.2.5 大小写敏感性 76 7.3 简单查询的范例 77 7.3.1 统计表里的记录数量 78 7.3.2 从另一个用户表里选择数据 78 7.3.3 使用字段别名 79 7.4 小结 79 7.5 问与答 79 7.6 实践 80 7.6.1 测验 80 7.6.2 练习 80 第8章 使用操作符对数据进行分类 82 8.1 什么是SQL里的操作符 82 8.2 比较操作符 82 8.2.1 相等 83 8.2.2 不等于 83 8.2.3 小于和大于 84 8.2.4 比较操作符的组合 84 8.3 逻辑操作符 85 8.3.1 IS NULL 85 8.3.2 BETWEEN 86 8.3.3 IN 86 8.3.4 LIKE 87 8.3.5 EXISTS 88 8.3.6 ALL、SOME和ANY操作符 88 8.4 连接操作符 89 8.4.1 AND 90 8.4.2 OR 90 8.5 求反操作符 92 8.5.1 不相等 92 8.5.2 NOT BETWEEN 92 8.5.3 NOT IN 93 8.5.4 NOT LIKE 93 8.5.5 IS NOT NULL 94 8.5.6 NOT EXISTS 94 8.6 算术操作符 94 8.6.1 加法 95 8.6.2 减法 95 8.6.3 乘法 95 8.6.4 除法 96 8.6.5 算术操作符的组合 96 8.7 小结 97 8.8 问与答 97 8.9 实践 97 8.9.1 测验 97 8.9.2 练习 98 第9章 汇总查询得到的数据 100 9.1 什么是汇总函数 100 9.1.1 COUNT函数 101 9.1.2 SUM函数 103 9.1.3 AVG函数 103 9.1.4 MAX函数 104 9.1.5 MIN函数 105 9.2 小结 105 9.3 问与答 106 9.4 实践 106 9.4.1 测验 106 9.4.2 练习 107 第10章 数据排序与分组 108 10.1 为什么要对数据进行分组 108 10.2 GROUP BY子句 109 10.2.1 分组函数 109 10.2.2 对选中的数据进行分组 109 10.2.3 创建分组和使用汇总函数 109 10.2.4 以整数代表字段名称 112 10.3 GROUP BY与ORDER BY 112 10.4 HAVING子句 114 10.5 小结 115 10.6 问与答 115 10.7 实践 115 10.7.1 测验 115 10.7.2 练习 116 第11章 调整数据的外观 117 11.1 ANSI字符函数 117 11.1.1 串接 117 11.1.2 子串 118 11.1.3 TRANSLATE 118 11.2 常用字符函数 118 11.2.1 串接 118 11.2.2 TRANSLATE 119 11.2.3 REPLACE 120 11.2.4 UPPER 120 11.2.5 LOWER 120 11.2.6 SUBSTR 121 11.2.7 INSTR 122 11.2.8 LTRIM 122 11.2.9 RTRIM 123 11.2.10 DECODE 123 11.3 其他字符函数 124 11.3.1 LENGTH 124 11.3.2 IFNULL(检查NULL值) 124 11.3.3 COALESCE 125 11.3.4 LPAD 125 11.3.5 RPAD 126 11.3.6 ASCII 126 11.4 算术函数 126 11.5 转换函数 127 11.5.1 字符串转换为数字 127 11.5.2 数字转换为字符串 128 11.6 字符函数的组合使用 128 11.7 小结 129 11.8 问与答 129 11.9 实践 130 11.9.1 测验 130 11.9.2 练习 130 第12章 日期和时间 132 12.1 日期是如何存储的 132 12.1.1 日期和时间的标准数据类型 132 12.1.2 DATETIME元素 133 12.1.3 不同实现的日期类型 133 12.2 日期函数 134 12.2.1 当前日期 134 12.2.2 时区 134 12.2.3 时间与日期相加 135 12.2.4 比较日期和时间间隔 136 12.2.5 其他日期函数 137 12.3 日期转换 137 12.3.1 日期描述 138 12.3.2 日期转换为字符串 140 12.3.3 字符串转换为日期 140 12.4 小结 141 12.5 问与答 141 12.6 实践 141 12.6.1 测验 141 12.6.2 练习 141 第四部分 建立复杂的数据库查询 143 第13章 在查询里结合表 145 13.1 从多个表获取数据 145 13.2 结合的类型 146 13.2.1 结合条件的位置 146 13.2.2 等值结合 146 13.2.3 自然结合 147 13.2.4 使用表的别名 148 13.2.5 不等值结合 149 13.2.6 外部结合 150 13.2.7 自结合 151 13.2.8 结合多个主键 152 13.3 需要考虑的事项 153 13.3.1 使用基表 153 13.3.2 笛卡尔积 154 13.4 小结 155 13.5 问与答 156 13.6 实践 156 13.6.1 测验 156 13.6.2 练习 157 第14章 使用子查询定义未确定数据 158 14.1 什么是子查询 158 14.1.1 子查询与SELECT语句 159 14.1.2 子查询与INSERT语句 160 14.1.3 子查询与UPDATE语句 161 14.1.4 子查询与DELETE语句 162 14.2 嵌套的子查询 162 14.3 关联子查询 164 14.4 小结 164 14.5 问与答 165 14.6 实践 165 14.6.1 测验 165 14.6.2 练习 166 第15章 组合多个查询 168 15.1 单查询与组合查询 168 15.2 组合查询操作符 169 15.2.1 UNION 169 15.2.2 UNION ALL 171 15.2.3 INTERSECT 172 15.2.4 EXCEPT 172 15.3 组合查询里使用ORDER BY 173 15.4 组合查询里使用GROUP BY 174 15.5 获取准确的数据 175 15.6 小结 176 15.7 问与答 176 15.8 实践 176 15.8.1 测验 177 15.8.2 练习 178 第五部分 SQL性能调整 179 第16章 利用索引改善性能 181 16.1 什么是索引 181 16.2 索引是如何工作的 182 16.3 CREATE INDEX命令 182 16.4 索引的类型 183 16.4.1 单字段索引 183 16.4.2 惟一索引 183 16.4.3 组合索引 184 16.4.4 隐含索引 184 16.5 何时考虑使用索引 184 16.6 何时应该避免使用索引 185 16.7 删除索引 186 16.8 小结 186 16.9 问与答 186 16.10 实践 187 16.10.1 测验 187 16.10.2 练习 187 第17章 改善数据库性能 188 17.1 什么是SQL语句调整 188 17.2 数据库调整与SQL语句调整 189 17.3 格式化SQL语句 189 17.3.1 为提高可读性格式化SQL语句 189 17.3.2 FROM子句里的表 191 17.3.3 结合条件的次序 191 17.3.4 最严格条件 191 17.4 全表扫描 192 17.5 其他性能考虑 193 17.5.1 使用LIKE操作符和通配符 193 17.5.2 避免使用OR操作符 194 17.5.3 避免使用HAVING子句 195 17.5.4 避免大规模排序操作 195 17.5.5 使用存储过程 195 17.5.6 在批加载时关闭索引 195 17.6 性能工具 196 17.7 小结 196 17.8 问与答 196 17.9 实践 197 17.9.1 测验 197 17.9.2 练习 197 第六部分 使用SQL管理用户和安全 199 第18章 管理数据库用户 201 18.1 用户就是原因 202 18.1.1 用户的类型 202 18.1.2 谁管理用户 202 18.1.3 用户在数据库里的位置 203 18.1.4 不同规划里的用户 203 18.2 管理过程 203 18.2.1 创建用户 204 18.2.2 创建规划 205 18.2.3 删除规划 206 18.2.4 调整用户 207 18.2.5 用户会话 207 18.2.6 禁止用户访问 208 18.3 数据库用户使用的工具 208 18.4 小结 208 18.5 问与答 209 18.6 实践 209 18.6.1 测验 209 18.6.2 练习 209 第19章 管理数据库安全 211 19.1 什么是数据库安全 211 19.2 什么是权限 212 19.2.1 系统权限 212 19.2.2 对象权限 213 19.2.3 谁负责授予和撤消权限 214 19.3 控制用户访问 214 19.3.1 GRANT命令 215 19.3.2 REVOKE命令 216 19.3.3 控制对单独字段的访问 216 19.3.4 数据库账户PUBLIC 216 19.3.5 权限组 217 19.4 通过角色控制权限 217 19.4.1 CREATE ROLE语句 218 19.4.2 DROP ROLE语句 218 19.4.3 SET ROLE语句 218 19.5 小结 218 19.6 问与答 219 19.7 实践 219 19.7.1 测验 219 19.7.2 练习 220 第七部分 摘要数据结构 221 第20章 创建和使用视图及异名 223 20.1 什么是视图 223 20.1.1 使用视图来简化数据访问 224 20.1.2 使用视图作为一种安全形式 224 20.1.3 使用视图维护摘要数据 225 20.2 创建视图 225 20.2.1 从一个表创建视图 225 20.2.2 从多个表创建视图 227 20.2.3 从视图创建视图 227 20.3 WITH CHECK OPTION 228 20.4 通过视图更新数据 229 20.4.1 在视图里插入记录 229 20.4.2 从视图里删除记录 229 20.5 从视图创建表 229 20.6 视图与ORDER BY子句 230 20.7 删除视图 230 20.8 什么是异名 231 20.8.1 创建异名 231 20.8.2 删除异名 232 20.9 小结 232 20.10 问与答 232 20.11 实践 233 20.11.1 测验 233 20.11.2 练习 233 第21章 使用系统目录 234 21.1 什么是系统目录 234 21.2 如何创建系统目录 235 21.3 系统目录里包含什么内容 235 21.3.1 用户数据 236 21.3.2 安全信息 236 21.3.3 数据库设计信息 236 21.3.4 性能统计 236 21.4 不同实现里的系统目录表格 237 21.5 查询系统目录 238 21.6 更新系统目录对象 239 21.7 小结 240 21.8 问与答 240 21.9 实践 241 21.9.1 测验 241 21.9.2 练习 241 第八部分 在实际工作中应用SQL知识 243 第22章 高级SQL主题 245 22.1 光标 245 22.1.1 打开光标 246 22.1.2 从光标获取数据 246 22.1.3 关闭光标 247 22.2 存储过程和函数 247 22.3 触发器 249 22.3.1 CREATE TRIGGER语句 249 22.3.2 DROP TRIGGER语句 250 22.3.3 FOR EACH ROW语句 251 22.4 动态SQL 251 22.5 调用级接口 251 22.6 使用SQL生成SQL 252 22.7 直接SQL与嵌入SQL 252 22.8 窗口表格函数 253 22.9 使用XML 253 22.10 小结 253 22.11 问与答 254 22.12 实践 254 22.12.1 测验 254 22.12.2 练习 255 第23章 SQL扩展到企业、互联网和内部网 256 23.1 SQL与企业 256 23.1.1 后台程序 256 23.1.2 前台程序 257 23.2 访问远程数据库 258 23.2.1 ODBC 258 23.2.2 JDBC 258 23.2.3 厂商连接产品 259 23.2.4 通过Web接口访问远程数据库 259 23.3 SQL与互联网 260 23.3.1 让数据可以被全世界的顾客使用 260 23.3.2 向雇员和授权顾客提供数据 260 23.3.3 使用SQL的前台Web工具 260 23.4 SQL与内部网 260 23.5 小结 261 23.6 问与答 261 23.7 实践 261 23.7.1 测验 262 23.7.2 练习 262 第24章 标准SQL的扩展 263 24.1 各种实现 263 24.1.1 不同实现之间的区别 263 24.1.2 遵循ANSI SQL 264 24.1.3 SQL的扩展 265 24.2 扩展范例 265 24.2.1 Transact-SQL 266 24.2.2 PL/SQL 266 24.2.3 MySQL 267 24.3 交互SQL语句 267 24.4 小结 268 24.5 问与答 268 24.6 实践 269 24.6.1 测验 269 24.6.2 练习 269 第九部分 附录 271 附录A 常用SQL命令 273 A.1 SQL语句 273 A.2 SQL子句 276 附录B 使用MySQL进行练习 278 B.1 Windows安装指令 278 B.2 Linux安装指令 279 附录C 测验和练习的答案 280 附录D 本书范例的CREATE TABLE语句 314 D.1 EMPLOYEE_TBL 314 D.2 EMPLOYEE_PAY_TBL 314 D.3 CUSTOMER_TBL 314 D.4 ORDERS_TBL 315 D.5 PRODUCTS_TBL 315 附录E 书中范例的INSERT语句 316 E.1 EMPLOYEE_TBL 316 E.2 EMPLOYEE_PAY_TBL 316 E.3 CUSTOMER_TBL 317 E.4 ORDERS_TBL 318 E.5 PRODUCTS_TBL 318 附录F 额外练习 320 术语表 325
pdf
发布资源于 8 年前

SQL基础教程(第3版)(Amazon五星图书,自学与参考两相宜)--随书源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《SQL基础教程(第3版)》的随书源代码 对应的书籍资料见: SQL基础教程(第3版)(Amazon五星图书,自学与参考两相宜) 基本信息 原书名: SQL: Visual QuickStart Guide 原出版社: Peachpit Press 作者: (美)Chris Fehily 译者: 冯宇晖 贾文峰 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115213501 上架时间:2009-11-27 出版日期:2009 年12月 开本:16开 页码:343 版次:3-1 编辑推荐   Amazon五星图书,自学与参考两相宜.   任务驱动,数百实例教你掌握SQL精髓..   触类旁通,展现主流DBMS的SQL语句异同... 内容简介   本书是一本sql的入门书,介绍如何使用最常用的sql语言维护和查询数据库信息。书中介绍了各种dbms,关系模型理论,sql语法,从表中检索数据,操作符和函数,汇总和分组数据,联结,子查询,集合操作,创建、更改和删除表,索引,视图,事务和sql技巧等。本书比较了各种dbms中的sql实现,并给出大量实例代码及经验技巧。.   本书适合sql初学者,同时也可作为数据库应用开发人员和最终用户的参考书。... 作译者   Chris Fehily 知名技术作家,顾问,具有十几年的设计和开发经验,主要兴趣在编程语言和生物信息学等。 目录 封面 -13 版权声明 -12 译者序 -11 前言 -10 目录 -3 第1章 DBMS介绍 1 1.1 运行SQL程序 1 1.2 Microsoft Access 3 1.3 Microsoft SQL Server 6 1.3.1 SQL Server 2000 7 1.3.2 SQL Server 2005/2008 9 1.4 Oracle 10 1.5 IBM DB2 12 1.6 MySQL 16 1.7 PostgreSQL 17 第2章 关系模型 20 2.1 表、列和行 21 2.1.1 表 21 2.1.2 列 21 2.1.3 行 22 2.2 主键 24 2.3 外键 25 2.4 联系 26 2.4.1 一对一 27 2.4.2 一对多 27 2.4.3 多对多 28 2.5 规范化 29 2.5.1 第一范式 29 2.5.2 第二范式 30 2.5.3 第三范式 31 2.5.4 其他范式 32 2.6 示例数据库 33 2.6.1 表authors 33 2.6.2 表publishers 34 2.6.3 表titles 35 2.6.4 表titles_authors 35 2.6.5 表royalties 36 2.7 创建示例数据库 37 第3章 SQL基础 40 3.1 SQL语法 40 3.2 SQL标准和一致性 42 3.3 标识符 43 3.4 数据类型 44 3.5 字符串类型 45 3.6 二进制大型对象类型 47 3.7 精确数字类型 48 3.8 近似数字类型 49 3.9 布尔类型 50 3.10 日期和时间类型 51 3.11 时间间隔类型 53 3.12 唯一标识符 54 3.13 其他数据类型 55 3.14 空值 55 第4章 从表中检索数据 58 4.1 使用SELECT和FROM检索列 58 4.2 使用AS创建列的别名 61 4.3 使用DISTINCT消除重复的行 62 4.4 使用ORDER BY排序行 63 4.5 使用WHERE筛选行 68 4.6 使用AND、OR和NOT组合及求反条件 71 4.6.1 AND操作符 71 4.6.2 OR操作符 72 4.6.3 NOT操作符 73 4.6.4 AND、OR和NOT一起使用 74 4.7 使用LIKE匹配模式 77 4.8 使用BETWEEN进行范围筛选 81 4.9 使用IN进行列表筛选 83 4.10 使用IS NULL测试空值 85 第5章 操作符和函数 88 5.1 创建派生列 88 5.2 执行算术运算 89 5.3 确定计算的顺序 92 5.4 使用||连接串 92 5.5 使用SUBSTRING()提取子串 95 5.6 使用UPPER()和LOWER()更改串的大小写 97 5.7 使用TRIM()修整字符 99 5.8 使用CHARACTER_LENGTH()得到串长度 101 5.9 使用POSITION()查找子串 103 5.10 执行日期及时间间隔运算 105 5.11 获得当前日期和时间 106 5.12 获得用户信息 108 5.13 使用CAST()转换数据类型 109 5.14 使用CASE计算条件值 112 5.15 使用COALESCE()检查空值 115 5.16 使用NULLIF()比较表达式 116 第6章 汇总和分组数据 118 6.1 使用聚合函数 118 6.2 创建聚合表达式 119 6.3 使用MIN()查找最小值 120 6.4 使用MAX()查找最大值 120 6.5 使用SUM()计算总和 121 6.6 使用AVG()计算平均值 122 6.7 使用COUNT()统计行数 124 6.8 使用DISTINCT聚合不重复的值 125 6.9 使用GROUP BY分组行 127 6.10 使用HAVING筛选分组 132 第7章 联结 135 7.1 限定列名 135 7.2 使用AS创建表的别名 136 7.3 使用联结 137 7.4 使用JOIN或WHERE创建联结 139 7.5 使用CROSS JOIN创建交叉联结 141 7.6 使用NATURAL JOIN创建自然联结 143 7.7 使用INNER JOIN创建内联结 146 7.8 使用OUTER JOIN创建外联结 165 7.9 创建自联结 173 第8章 子查询 177 8.1 理解子查询 177 8.2 子查询语法 179 8.3 子查询和联结 179 8.4 简单子查询和相关子查询 182 8.4.1 简单子查询 183 8.4.2 相关子查询 183 8.5 在子查询中限定列名 186 8.6 子查询中的空值 187 8.7 使用子查询作为列表达式 188 8.8 使用比较操作符比较子查询的值 191 8.9 使用IN测试集合成员资格 194 8.10 使用ALL比较所有子查询的值 200 8.11 使用ANY比较某些子查询的值 202 8.12 使用EXISTS检测存在性 205 8.13 比较等价查询 209 第9章 集合操作 212 9.1 使用UNION合并行 212 9.2 使用INTERSECT查找相同行 217 9.3 使用EXCEPT查找不同行 218 第10章 插入、更新和删除行 220 10.1 显示表结构 220 10.2 使用INSERT插入行 223 10.3 使用UPDATE更新行 228 10.4 使用DELETE删除行 232 第11章 创建、更改和删除表 235 11.1 创建表 235 11.2 理解约束 236 11.3 使用CREATE TABLE创建新表 236 11.4 使用NOT NULL禁止空值 238 11.5 使用DEFAULT确定默认值 240 11.6 使用PRIMARY KEY指定主键 242 11.7 使用FOREIGN KEY指定外键 244 11.8 使用UNIQUE确保值唯一 248 11.9 使用CHECK创建检查约束 250 11.10 使用CREATE TEMPORARY TABLE创建临时表 252 11.11 使用CREATE TABLE AS利用已存在表创建新表 254 11.12 使用ALTER TABLE修改表 258 11.13 使用DROP TABLE