自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (185)
  • 收藏
  • 关注

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

“Visual Studio Help Downloader Plus”支持Visual Studio 2010/2012/2013/2015、以及未来版本的帮助文档的下载和更新

2013-04-13 11:29:48 4924 22

原创 CruiseYoung提供的带有详细书签的电子书籍目录

一、数据库书籍系列:1、Oracle数据库系列丛书:A、Oracle数据库官方系列丛书:Oracle Database 11g初学者指南:http://download.csdn.net/detail/fksec/5049879Oracle Database 11g DBA手册:http://download.csdn.net/detail/fksec/5054268Oracl

2012-08-20 21:53:43 17868 33

原创 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...

2016-09-26 09:03:05 7380 1

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

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

2015-06-29 22:38:34 2251

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

1、nssize问题

2015-05-31 05:19:04 2272

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

1、命令获取uuid1.1、windows系统中获取设备的UUID的方法:在命令提示符下输入wmic 再输入csproduct 或 csproduct list fullwmic:rootcli>csproduct list fullDescription=计算机系统产品IdentifyingNumber=*****Name=*****SKUNumber=UUID=8

2015-04-30 16:09:25 55932

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

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

2015-03-17 15:37:49 9649 2

原创 Visual Studio 2013开发环境UTF8设置

Visual Studio 2013开发环境UTF8设置

2015-02-25 10:08:28 3966

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

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

2014-12-16 17:30:35 3223 1

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

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

2014-12-16 13:30:03 5838

原创 log4cplus配置文件编写及使用

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

2014-11-27 15:19:28 15234 5

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

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

2014-11-26 16:46:47 11002

原创 将libzdb移植到msvc(Visual Studio 2013)

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

2014-11-25 11:49:08 5415 10

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

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

2014-11-11 16:09:57 10969 1

原创 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

2014-10-22 16:42:13 5309

原创 premake4 生成 rapidjson Visual Studio 2012测试工程

代码托管地址:https://github.com/miloyip/rapidjson/文档地址:http://miloyip.github.io/rapidjson/premake4 地址:切换到、rapidjson

2014-09-29 14:28:07 4102 1

原创 Visual Studio 2013编译log4cplus

如果用最新版,请下载带版本号的代码,那是没有用c++11特性的没有版本号的master是用了带c++11特性,且有两处错误,不过本人也已经解决。代码托管官方地址:https://github.com/log4cplus/log4cplus

2014-08-07 15:58:21 6285

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

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

2014-07-09 14:58:14 11205 5

原创 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

2014-07-02 11:36:56 6232 1

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

msysgit - Git for WindowsTortoiseSVN

2014-06-24 15:10:32 7109

原创 Visual Studio 2013编译ICU4C 5.31

下载了ICU,支持vs2008,工程文件在 icu/source/allinone 下,不过默认编译出来的是动态链接版本,所以需要改造成静态的,那只有修改工程配置文件啦,1.修改以下几个工程配置 Configuration Properties=>General=>Configuration Type,修改为Static library (.lib) 2.然后修改静态库的输

2014-05-20 13:41:18 4731

原创 nmake、cmake、Visual Studio编译libevent

dd

2014-05-18 12:09:31 9129

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

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

2014-05-16 13:06:24 4860 1

原创 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

2014-05-15 21:48:34 5219

原创 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

2014-05-15 11:44:15 3354

转载 用C编写Windows服务程序

Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。  当初我写第一个NT 服务时,我到 MSDN 上找例子。在那里我找到了一篇 Nigel

2012-10-15 16:25:06 1593

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

2013-02-06

数据库系统基础教程(原书第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月于斯坦福

2013-02-06

怎样成为明星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!”   ——亚马逊读者评论

2013-02-06

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

2013-02-05

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删除表 259 第12章 索引 261 12.1 使用CREATE INDEX创建索引 261 12.2 使用DROP INDEX删除索引 264 第13章 视图 265 13.1 使用CREATE VIEW创建视图 265 13.2 通过视图检索数据 269 13.3 通过视图修改数据 271 13.3.1 通过视图插入行 271 13.3.2 通过视图更新行 272 13.3.3 通过视图删除行 273 13.4 使用DROP VIEW删除视图 274 第14章 事务 275 第15章 SQL技巧 280 15.1 动态统计 280 15.2 产生序列 283 15.3 发现等差数列、递增数列和等值数列 287 15.4 限定返回行的数量 291 15.4.1 Microsoft Access 292 15.4.2 Microsoft SQL Server 293 15.4.3 Oracle 294 15.4.4 IBM DB2 295 15.4.5 MySQL 296 15.4.6 PostgreSQL 297 15.5 分配排名 298 15.6 计算修整均值 299 15.7 随机选取行 300 15.8 处理重复值 302 15.9 创建电话列表 304 15.10 检索元数据 305 15.10.1 Microsoft Access 305 15.10.2 Microsoft SQL Server 305 15.10.3 Oracle 306 15.10.4 IBM DB2 307 15.10.5 MySQL 307 15.10.6 PostgreSQL 308 15.11 处理日期 308 15.11.1 Microsoft Access 309 15.11.2 Microsoft SQL Server 310 15.11.3 Oracle 310 15.11.4 IBM DB2 311 15.11.5 MySQL 312 15.11.6 PostgreSQL 313 15.12 计算中值 315 15.13 查询极值 316 15.14 改变动态统计的中流 317 15.15 旋转结果 318 15.16 处理层次结构 320 索引 326 译者序   SQL是关系数据库编程的国际标准语言。本书系统、全面地介绍了标准SQL,并讲解了Microsoft Access、Microsoft SQL Server、Oracle、IBM DB2、MySQL、PostgreSQL等SQL实现及其与标准SQL之间的差异。.   本书结构严谨、内容丰富,给出大量实例代码及经验技巧。本书适合SQL初学者,同时也可作为数据库应用开发人员和最终用户的参考书。作为初学者,可通过学习本书快速、全面地掌握SQL;而作为数据库应用开发人员和最终用户,可以通过本书提高开发和应用关系数据库的能力。..   本书由冯宇晖、贾文峰翻译,其中文前、第1~6章、第7章前6节由贾文峰翻译,第7章7~9节及第8~15章由冯宇晖翻译,全书由冯宇晖负责统稿。限于译者的水平,译文中难免有错误与不足之处,敬请读者和同行批评指正。译者的邮箱:[email protected][email protected]。...    前言   SQL是一种标准的编程语言,用于创建、更新和检索存储在数据库中的信息。使用SQL,你可以将通常的问题(“我们的客户居住在何地?”)转化为数据库系统能够理解的语句(SELECT DISTINCT city, state FROM customers;)。你可能已经知道如何通过图形化的查询或报表工具来检索此类信息,但对于复杂的问题,或许你也意识到此类工具存在诸多限制和障碍——这时就需要SQL了。.   可以使用SQL来增加、更新、删除数据和数据库对象。所有现代关系型DBMS(数据库管理系统)都支持SQL,但不同产品的支持情况会有所不同。   本书涉及大多数流行DBMS的最新版本,并专门新增一章来介绍SQL技巧,包括最新的编程技巧提示、细微变化和高级主题,以及其他零星知识。关于SQL   SQL可以如下表述:   ·是一种编程语言;   ·容易学习;   ·是说明性语言;   ·是交互式或嵌入式语言;   ·是标准化语言;   ·用于改变数据和数据库对象;   ·不是首字母缩写词。   它是一种编程语言。SQL是一种可以用来编写程序,实现创建、修改、查询数据库的形式语言。数据库系统执行SQL程序,完成用户指定的任务,并显示结果或错误信息。编程语言有别于自然语言,它是为了特殊用途而设计的,其词汇量小、语句书写呆板且必须明确无误。如果你没有得到希望的结果,只能怪你自己的程序包含某些错误,而不是计算机错误地执行了指令(程序测试是编程的一项重要工作)。   和其他形式语言一样,SQL由一系列语法和语义规则定义。语法规则决定可以使用哪些单词和符号,以及如何将它们结合在一起。语义规则决定着语法正确的语句的真实含义。注意,SQL语句可能语法正确但语义错误。第3章会介绍SQL的语法和语义。   数据库与DBMS   数据库并不等同于用户使用的数据库软件,“Oracle是数据库”是不正确的说法。数据库软件被称作DBMS。数据库只是DBMS的一个组成部分,是数据本身;也就是说,它是一个存储结构化信息的容器(由至少一个文件组成)。除了控制数据库中数据的组织、完整性和检索,DBMS还要负责其他任务,如物理存储、安全、备份、错误处理等。   本书中可以认为DBMS是RDBMS的简写,在这里R代表关系型。关系型DBMS依照关系模型(见第2章)而不是层次模型或网状模型来组织数据。本书只讲解关系型系统,所以当书中出现DBMS时,就是指RDBMS,第一个字母R(关系型)被省略了。   它容易学习。同其他编程语言相比,SQL学起来更容易。如果以前没有写过任何程序,你会觉得从自然语言转向形式语言是很难的。不过,SQL语句读起来很像句子,容易学习。初学编程的人可能会理解SQL语句“SELECT au_fname,au_lname FROM authors ORDER BY au_lname;”的意思是“以姓氏为序列出作者的姓名”,但他们会发现,具有相同功能的C或Perl程序很难理解。   它是说明性语言。如果你从未编写过程序,那么跳过本段也不会影响你学习后面的内容。如果你用C或者PHP语言编写过程序,那意味着你有使用过程语言的经历,在编写这样的程序时需要指明得出结果所需的每个步骤。使用SQL这种说明性语言,只需描述想要的内容,而无需去管该如何做,数据库系统的优化器将决定“如何做”。因此,标准的SQL没有传统的流程控制结构,如if-then-else、while、for和goto语句。   为了说明这一点差异,本书给出了功能等同的Microsoft Access Visual Basic程序(VB属于过程语言)和SQL 程序。代码0-1显示了从包含作者信息的表中检索作者姓名的VB程序。你无需了解整个程序,但要注意它如何使用Do Until循环来显式地定义如何提取数据。代码0-2显示了如何用一条SQL语句(与约20行的VB程序形成鲜明对比)完成相同的功能。使用SQL,只需指明要完成什么工作,数据库管理系统在内部决定并执行得出结果所需的具体操作。   代码0-1这段Microsoft Access Visual Basic程序从一个包含作者信息的数据库表中获取姓名信 .  息,并将结果存放在一个数组中   Sub GetAuthorNames()   Dim db As Database   Dim rs As Recordset   Dim i As Integer   Dim au_names() As String   Set db = CurrentDb()   Set rs = db.OpenRecordset("authors")   rs.MoveLast   ReDim au_names(rs.RecordCount - 1, 1)   With rs   .MoveFirst   i = 0   Do Until .EOF   au_names(i, 0) = ![au_fname]   au_names(i, 1) = ![au_lname]   i = i + 1   .MoveNext   Loop   End With   rs.Close   db.Close   End Sub   此外,代码0-2是一个简单的SQL查询。在对简单的SQL查询添加排序、过滤、联结等常见的操作后,使用这样一条SELECT语句就可以完成的任务,使用过程代码则可能需要100多行。   代码0-2这条SQL语句完成的查询与代码0-1中Visual Basic程序完成的查询相同。Access内部的优化器可决定获取数据的最佳方式   SELECT au_fname, au_lname   FROM authors;   它是交互式或嵌入式语言。在交互式SQL环境中,用户输入的SQL命令直接发送到数据库管理系统,得到结果后立即显示。DBMS的服务器同时拥有图形和命令行工具,用于接受用户输入的SQL语句或包含SQL程序(脚本)的文本文件。   在开发数据库应用程序时,可以将SQL语句“嵌入”到编写程序所用的宿主语言(host language)中 。宿主语言通常是一种通用语言(如C++、Java或COBOL)或脚本语言(如Perl、PHP或Python)。例如,一个PHP CGI脚本可以用SQL语句来查询MySQL数据库;MySQL将查询的结果返回给PHP变量,以便进一步分析或显示在网页上。根据前面的例子,可以将SQL语句嵌入到Visual Basic程序中(代码0-3)。   代码0-3这里,Visual Basic作为嵌入式SQL的宿主语言   Sub GetAuthorNames2()   Dim db As Database   Dim rs As Recordset   Set db = CurrentDb()   Set rs = db.OpenRecordset("SELECT au_fname, au_lname FROM authors;")   ' --Do something with rs here.   rs.Close   db.Close   End Sub   本书只包括交互式SQL。一般情况下,任何可以交互使用的SQL语句,也都可以用在宿主语言中。但在DBMS、宿主语言和操作环境中,语法上略有差异。..   它是标准化语言。SQL不属于任何公司。它是一个由国际标准化组织(ISO)和国际工程协会(IEC)共同领导的国际标准工作组定义的开放标准。美国国家标准协会(ANSI)参加了这个工作组,并已批准该标准(见图0-1)。因为“ISO/IEC SQL”不常用,所以在本书中使用更常见的“ANSI SQL”。本书依据的是2003年的SQL标准,除非另外指明,否则书中的ANSI SQL、SQL:2003和SQL所指是一样的。要了解更多相关内容,参见3.2节。   所有DBMS供应商都增加了专有功能来增强这种语言。这些扩展通常是额外的命令、关键字、函数、操作符、数据类型,还有流程控制结构(如if、while和goto语句)。微软、甲骨文和IBM对标准SQL增加了相当多的功能,于是分别形成了Transact - SQL、PL/SQL和SQL PL语言,可被视为这些供应商自己的语言,而不只是SQL的超集。某个供应商的扩展通常与其他供应商的产品不兼容。本书没有介绍专有的SQL扩展,但当某供应商专有的SQL不符合书中给出的标准SQL例子时,会特别指出。   它用于改变数据和数据库对象。SQL语句分为以下3类。   ·数据操作语句(DML)用于在数据库中检索、计算、插入、编辑和删除数据。第4章至第10章介绍了数据操作语句SELECT、INSERT、UPDATE和DELETE。第14章介绍了语句START(或BEGIN)、COMMIT和ROLLBACK。   ·数据定义语句(DDL)用于创建、修改和销毁数据表、索引、视图等数据库对象。第11章至第13章介绍了数据定义语句CREATE、ALTER和DROP。   ·数据控制语句(DCL)用于授权某些用户查看、更改、删除数据或数据库对象。GRANT语句分配权限和角色(角色是一组权限的集合)。REVOKE语句用于取消权限。本书没有介绍GRANT和REVOKE,因为它们是数据库管理员的职责。书中介绍的所有DBMS(除了Access)都支持GRANT和REVOKE,但与SQL标准有一些差异。   它不是首字母缩写词。“SQL表示结构化查询语言”是一种普遍的误解。它只代表S–Q–L,不代表任何其他意思。为什么?因为ANSI就是这样解释的。官方名字是数据库语言SQL,如图0-1所示。而且,如果说SQL表示“结构化查询语言”,那会令刚开始学习SQL编程的新手感到困惑。业内人士认为“结构化查询语言”可能是SQL最糟糕的解释,因为SQL:   ·不是结构化的(无法将其分解成程序块或过程);   ·不只用于查询(它不只包含SELECT语句);   ·不是一种语言(它不满足图灵完备性,你在学习计算理论时会遇到这个概念)。   关于本书   本书将介绍如何使用SQL编程语言维护和查询数据库信息。第1章至第3章将介绍各种DBMS、关系模型和SQL语法,之后会继续沿袭读者已经熟悉的Visual QuickStart系列图书基于任务、图解式的编写风格。   尽管阅读本书不要求读者有编程经验,但希望你熟悉操作系统的文件系统,知道如何在命令行模式或shell(在较早的Windows版本里称作DOS提示符,在Mac OS X里称作Terminal)中输入命令。   本书只介绍最常用的语句,不是SQL的详尽指南。要了解更多的SQL语句知识,请参考所用DBMS文档或包含更详细SQL标准的参考书。   ?提示   ·Peter Gulutzan和Trudy Pelzer所著的SQL-99 Complete, Really (CMP Books) 完整解释了SQL-99标准。要比SQL标准看着轻松,但没有提及具体的DBMS。   ·Kevin Kline、Daniel Kline和Brand Hunt所著的SQL in a Nutshell (O’Reilly)包含了本书介绍的DBMS(除Access以外),是比较全面的SQL:2003参考书。它适合于已经有一定基础的SQL程序员。   ·Troels Arvin的“Comparison of Different SQL Implementations”解释了DBMS实现SQL各种功能的不同之处,包括源文件和其他SQL图书、文章、资源的链接。它包括了SQL:2003和与本书相同的DBMS(除Access以外),见http://troels.arvin.dk/db/rdbms。   配套站点   在www.fehily.com,你可以找到修正、更新代码和可供下载的示例数据库(见2.6节)。单击Contact链接就可以给我发对本书的问题、建议、修改及批评意见。   SQL Server 与桌面DBMS   SQL服务器DBMS在客户/服务器网络中作为服务器端,它存储数据并响应客户端的SQL请求。客户端是一个应用程序或一台向服务器发送SQL请求并接受服务器响应的计算机。服务器真正执行对数据库的操作,客户端只是接收答案。如果网络使用了客户/服务器架构,客户端就是眼前桌面上的计算机,服务器则是放在另一房间、另一座大楼甚至另一个国家的强大的专业化设备。客户/服务器的请求和响应如何传递的规则在DBMS协议和类似ODBC、JDBC和ADO.NET的接口中定义。   桌面DBMS是独立的程序,它存储数据库并执行所有SQL指令,或作为SQL服务器的客户端。桌面DBMS不能接受其他客户端的请求(或者说,不能作为SQL服务器)。   SQL服务器包括Microsoft SQL Server、Oracle、DB2、MySQL和PostgreSQL。桌面系统包括Microsoft Access和FileMaker Pro。注意,SQL server(没有大写)指的是所有供应商的SQL服务器产品,SQL Server(大写)是Microsoft的SQL服务器产品。   读者对象   本书的读者对象是数据库应用开发人员和最终用户(不是数据库设计人员或管理人员),主要适合以下人员。   ·熟悉计算机但缺乏编程经验。   ·正在自学或跟随指导老师学习SQL。   ·对数据库没有兴趣,但因为工作需要必须处理大量结构化信息。这类人包括统计人员、流行病工作者、网站编程人员、气象工作者、工程师、会计、投资者、科研人员、分析师、销售代表、金融规划和交易员、办公室文员及经理人。   ·对易用但不够强大的图形查询工具不太满意的人。   ·正从桌面数据库转到DBMS服务器(参见“SQL Server与桌面DBMS”)。   ·已经了解一些SQL,不满足于简单的SELECT语句。   ·需要创建、修改或删除表、索引和视图等数据库对象。   ·需要将SQL代码嵌入到C、Java、Visual Basic、PHP、Perl或其他宿主语言。   ·作为网站程序员,需要在网页上展示查询结果。   ·需要桌面SQL的参考书。   ·因为数据列表已经变得太大、太复杂,而无法使用电子表格管理,正从Microsoft Excel转向Microsoft Access。   本书不适合希望学习以下内容的读者。   ·如何设计数据库(尽管在第2章简述了设计概念)。   ·DBMS供应商在基本SQL语句上增加的扩展特性。   ·高级编程或管理。本书没有包含安装、权限、触发器、递归 、存储过程、复制、备份、恢复、游标、整理、字符集、翻译、XML及面向对象扩展。   排版约定   本书使用以下排版约定。楷体表示引入的新术语。英文斜体表示变量。代码体表示SQL代码和代码及一般文本里的语法,也表示可执行的代码、文件名、目录(文件夹)名、URL和命令行提示符文本。粗代码体表示SQL代码片段和结果对应正文中的解释部分。斜代码体表示SQL代码中必须使用值来取代的变量,例如必须用真实的列名取代column 。   语法约定   SQL是对行中断和每行长度都没有限制的自由形式语言。为了使代码易于阅读和维护,本书在SQL语法图解和代码中使用一致的风格。   ·每个SQL语句开始于新行。   ·每次缩进为2个字符。   ·每个语句的子句开始于新的缩进的行。   SELECT au_fname, au_lname   FROM authors   ORDER BY au_lname;   ·SQL是不区分大小写的,这意味着myname、MyName和MYNAME是同样的标识符。本书对于SQL关键字(如SELECT、NULL和CHARACTER)使用大写(见3.1节);对于用户定义的值(如表、列和别名)使用小写。(对于一些DBMS,用户定义的标识符在引用时或其他一些场合是区分大小写的,因此最安全的方法,是在SQL程序中遵照标识符的大小写规定。)   ·表0-1显示了本书在语法图中使用的特殊符号。   ·在SQL代码中所有引号是直的引号(如'和"),而不是弯曲的引号(如’和“),弯曲的引号会使代码无法运行。   ·当一行太窄而无法容纳一整行代码或输出时,将其分为两段或两段以上;箭头?表示行的继续。   表0-1语法符号   符号 说明    媒体评论   “我是个计算机教师,通常对那些计算机书没有太多好感。但这本书我忍不住要向大家推荐,我用它作SQL教材,效果很好……非常实用,例子很丰富,且知识点覆盖全面,深度也合适。”.   ——Amazon.com读者评论   “绝佳的SQL参考书。它一直在我手边,一旦遇到SQL方面的问题,我会首先寻求它的帮助。”...   ——资深计算机取证专家Jerry   

2013-02-05

SQL基础教程(第3版)(Amazon五星图书,自学与参考两相宜)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 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删除表 259 第12章 索引 261 12.1 使用CREATE INDEX创建索引 261 12.2 使用DROP INDEX删除索引 264 第13章 视图 265 13.1 使用CREATE VIEW创建视图 265 13.2 通过视图检索数据 269 13.3 通过视图修改数据 271 13.3.1 通过视图插入行 271 13.3.2 通过视图更新行 272 13.3.3 通过视图删除行 273 13.4 使用DROP VIEW删除视图 274 第14章 事务 275 第15章 SQL技巧 280 15.1 动态统计 280 15.2 产生序列 283 15.3 发现等差数列、递增数列和等值数列 287 15.4 限定返回行的数量 291 15.4.1 Microsoft Access 292 15.4.2 Microsoft SQL Server 293 15.4.3 Oracle 294 15.4.4 IBM DB2 295 15.4.5 MySQL 296 15.4.6 PostgreSQL 297 15.5 分配排名 298 15.6 计算修整均值 299 15.7 随机选取行 300 15.8 处理重复值 302 15.9 创建电话列表 304 15.10 检索元数据 305 15.10.1 Microsoft Access 305 15.10.2 Microsoft SQL Server 305 15.10.3 Oracle 306 15.10.4 IBM DB2 307 15.10.5 MySQL 307 15.10.6 PostgreSQL 308 15.11 处理日期 308 15.11.1 Microsoft Access 309 15.11.2 Microsoft SQL Server 310 15.11.3 Oracle 310 15.11.4 IBM DB2 311 15.11.5 MySQL 312 15.11.6 PostgreSQL 313 15.12 计算中值 315 15.13 查询极值 316 15.14 改变动态统计的中流 317 15.15 旋转结果 318 15.16 处理层次结构 320 索引 326 译者序   SQL是关系数据库编程的国际标准语言。本书系统、全面地介绍了标准SQL,并讲解了Microsoft Access、Microsoft SQL Server、Oracle、IBM DB2、MySQL、PostgreSQL等SQL实现及其与标准SQL之间的差异。.   本书结构严谨、内容丰富,给出大量实例代码及经验技巧。本书适合SQL初学者,同时也可作为数据库应用开发人员和最终用户的参考书。作为初学者,可通过学习本书快速、全面地掌握SQL;而作为数据库应用开发人员和最终用户,可以通过本书提高开发和应用关系数据库的能力。..   本书由冯宇晖、贾文峰翻译,其中文前、第1~6章、第7章前6节由贾文峰翻译,第7章7~9节及第8~15章由冯宇晖翻译,全书由冯宇晖负责统稿。限于译者的水平,译文中难免有错误与不足之处,敬请读者和同行批评指正。译者的邮箱:[email protected][email protected]。...    前言   SQL是一种标准的编程语言,用于创建、更新和检索存储在数据库中的信息。使用SQL,你可以将通常的问题(“我们的客户居住在何地?”)转化为数据库系统能够理解的语句(SELECT DISTINCT city, state FROM customers;)。你可能已经知道如何通过图形化的查询或报表工具来检索此类信息,但对于复杂的问题,或许你也意识到此类工具存在诸多限制和障碍——这时就需要SQL了。.   可以使用SQL来增加、更新、删除数据和数据库对象。所有现代关系型DBMS(数据库管理系统)都支持SQL,但不同产品的支持情况会有所不同。   本书涉及大多数流行DBMS的最新版本,并专门新增一章来介绍SQL技巧,包括最新的编程技巧提示、细微变化和高级主题,以及其他零星知识。关于SQL   SQL可以如下表述:   ·是一种编程语言;   ·容易学习;   ·是说明性语言;   ·是交互式或嵌入式语言;   ·是标准化语言;   ·用于改变数据和数据库对象;   ·不是首字母缩写词。   它是一种编程语言。SQL是一种可以用来编写程序,实现创建、修改、查询数据库的形式语言。数据库系统执行SQL程序,完成用户指定的任务,并显示结果或错误信息。编程语言有别于自然语言,它是为了特殊用途而设计的,其词汇量小、语句书写呆板且必须明确无误。如果你没有得到希望的结果,只能怪你自己的程序包含某些错误,而不是计算机错误地执行了指令(程序测试是编程的一项重要工作)。   和其他形式语言一样,SQL由一系列语法和语义规则定义。语法规则决定可以使用哪些单词和符号,以及如何将它们结合在一起。语义规则决定着语法正确的语句的真实含义。注意,SQL语句可能语法正确但语义错误。第3章会介绍SQL的语法和语义。   数据库与DBMS   数据库并不等同于用户使用的数据库软件,“Oracle是数据库”是不正确的说法。数据库软件被称作DBMS。数据库只是DBMS的一个组成部分,是数据本身;也就是说,它是一个存储结构化信息的容器(由至少一个文件组成)。除了控制数据库中数据的组织、完整性和检索,DBMS还要负责其他任务,如物理存储、安全、备份、错误处理等。   本书中可以认为DBMS是RDBMS的简写,在这里R代表关系型。关系型DBMS依照关系模型(见第2章)而不是层次模型或网状模型来组织数据。本书只讲解关系型系统,所以当书中出现DBMS时,就是指RDBMS,第一个字母R(关系型)被省略了。   它容易学习。同其他编程语言相比,SQL学起来更容易。如果以前没有写过任何程序,你会觉得从自然语言转向形式语言是很难的。不过,SQL语句读起来很像句子,容易学习。初学编程的人可能会理解SQL语句“SELECT au_fname,au_lname FROM authors ORDER BY au_lname;”的意思是“以姓氏为序列出作者的姓名”,但他们会发现,具有相同功能的C或Perl程序很难理解。   它是说明性语言。如果你从未编写过程序,那么跳过本段也不会影响你学习后面的内容。如果你用C或者PHP语言编写过程序,那意味着你有使用过程语言的经历,在编写这样的程序时需要指明得出结果所需的每个步骤。使用SQL这种说明性语言,只需描述想要的内容,而无需去管该如何做,数据库系统的优化器将决定“如何做”。因此,标准的SQL没有传统的流程控制结构,如if-then-else、while、for和goto语句。   为了说明这一点差异,本书给出了功能等同的Microsoft Access Visual Basic程序(VB属于过程语言)和SQL 程序。代码0-1显示了从包含作者信息的表中检索作者姓名的VB程序。你无需了解整个程序,但要注意它如何使用Do Until循环来显式地定义如何提取数据。代码0-2显示了如何用一条SQL语句(与约20行的VB程序形成鲜明对比)完成相同的功能。使用SQL,只需指明要完成什么工作,数据库管理系统在内部决定并执行得出结果所需的具体操作。   代码0-1这段Microsoft Access Visual Basic程序从一个包含作者信息的数据库表中获取姓名信 .  息,并将结果存放在一个数组中   Sub GetAuthorNames()   Dim db As Database   Dim rs As Recordset   Dim i As Integer   Dim au_names() As String   Set db = CurrentDb()   Set rs = db.OpenRecordset("authors")   rs.MoveLast   ReDim au_names(rs.RecordCount - 1, 1)   With rs   .MoveFirst   i = 0   Do Until .EOF   au_names(i, 0) = ![au_fname]   au_names(i, 1) = ![au_lname]   i = i + 1   .MoveNext   Loop   End With   rs.Close   db.Close   End Sub   此外,代码0-2是一个简单的SQL查询。在对简单的SQL查询添加排序、过滤、联结等常见的操作后,使用这样一条SELECT语句就可以完成的任务,使用过程代码则可能需要100多行。   代码0-2这条SQL语句完成的查询与代码0-1中Visual Basic程序完成的查询相同。Access内部的优化器可决定获取数据的最佳方式   SELECT au_fname, au_lname   FROM authors;   它是交互式或嵌入式语言。在交互式SQL环境中,用户输入的SQL命令直接发送到数据库管理系统,得到结果后立即显示。DBMS的服务器同时拥有图形和命令行工具,用于接受用户输入的SQL语句或包含SQL程序(脚本)的文本文件。   在开发数据库应用程序时,可以将SQL语句“嵌入”到编写程序所用的宿主语言(host language)中 。宿主语言通常是一种通用语言(如C++、Java或COBOL)或脚本语言(如Perl、PHP或Python)。例如,一个PHP CGI脚本可以用SQL语句来查询MySQL数据库;MySQL将查询的结果返回给PHP变量,以便进一步分析或显示在网页上。根据前面的例子,可以将SQL语句嵌入到Visual Basic程序中(代码0-3)。   代码0-3这里,Visual Basic作为嵌入式SQL的宿主语言   Sub GetAuthorNames2()   Dim db As Database   Dim rs As Recordset   Set db = CurrentDb()   Set rs = db.OpenRecordset("SELECT au_fname, au_lname FROM authors;")   ' --Do something with rs here.   rs.Close   db.Close   End Sub   本书只包括交互式SQL。一般情况下,任何可以交互使用的SQL语句,也都可以用在宿主语言中。但在DBMS、宿主语言和操作环境中,语法上略有差异。..   它是标准化语言。SQL不属于任何公司。它是一个由国际标准化组织(ISO)和国际工程协会(IEC)共同领导的国际标准工作组定义的开放标准。美国国家标准协会(ANSI)参加了这个工作组,并已批准该标准(见图0-1)。因为“ISO/IEC SQL”不常用,所以在本书中使用更常见的“ANSI SQL”。本书依据的是2003年的SQL标准,除非另外指明,否则书中的ANSI SQL、SQL:2003和SQL所指是一样的。要了解更多相关内容,参见3.2节。   所有DBMS供应商都增加了专有功能来增强这种语言。这些扩展通常是额外的命令、关键字、函数、操作符、数据类型,还有流程控制结构(如if、while和goto语句)。微软、甲骨文和IBM对标准SQL增加了相当多的功能,于是分别形成了Transact - SQL、PL/SQL和SQL PL语言,可被视为这些供应商自己的语言,而不只是SQL的超集。某个供应商的扩展通常与其他供应商的产品不兼容。本书没有介绍专有的SQL扩展,但当某供应商专有的SQL不符合书中给出的标准SQL例子时,会特别指出。   它用于改变数据和数据库对象。SQL语句分为以下3类。   ·数据操作语句(DML)用于在数据库中检索、计算、插入、编辑和删除数据。第4章至第10章介绍了数据操作语句SELECT、INSERT、UPDATE和DELETE。第14章介绍了语句START(或BEGIN)、COMMIT和ROLLBACK。   ·数据定义语句(DDL)用于创建、修改和销毁数据表、索引、视图等数据库对象。第11章至第13章介绍了数据定义语句CREATE、ALTER和DROP。   ·数据控制语句(DCL)用于授权某些用户查看、更改、删除数据或数据库对象。GRANT语句分配权限和角色(角色是一组权限的集合)。REVOKE语句用于取消权限。本书没有介绍GRANT和REVOKE,因为它们是数据库管理员的职责。书中介绍的所有DBMS(除了Access)都支持GRANT和REVOKE,但与SQL标准有一些差异。   它不是首字母缩写词。“SQL表示结构化查询语言”是一种普遍的误解。它只代表S–Q–L,不代表任何其他意思。为什么?因为ANSI就是这样解释的。官方名字是数据库语言SQL,如图0-1所示。而且,如果说SQL表示“结构化查询语言”,那会令刚开始学习SQL编程的新手感到困惑。业内人士认为“结构化查询语言”可能是SQL最糟糕的解释,因为SQL:   ·不是结构化的(无法将其分解成程序块或过程);   ·不只用于查询(它不只包含SELECT语句);   ·不是一种语言(它不满足图灵完备性,你在学习计算理论时会遇到这个概念)。   关于本书   本书将介绍如何使用SQL编程语言维护和查询数据库信息。第1章至第3章将介绍各种DBMS、关系模型和SQL语法,之后会继续沿袭读者已经熟悉的Visual QuickStart系列图书基于任务、图解式的编写风格。   尽管阅读本书不要求读者有编程经验,但希望你熟悉操作系统的文件系统,知道如何在命令行模式或shell(在较早的Windows版本里称作DOS提示符,在Mac OS X里称作Terminal)中输入命令。   本书只介绍最常用的语句,不是SQL的详尽指南。要了解更多的SQL语句知识,请参考所用DBMS文档或包含更详细SQL标准的参考书。   ?提示   ·Peter Gulutzan和Trudy Pelzer所著的SQL-99 Complete, Really (CMP Books) 完整解释了SQL-99标准。要比SQL标准看着轻松,但没有提及具体的DBMS。   ·Kevin Kline、Daniel Kline和Brand Hunt所著的SQL in a Nutshell (O’Reilly)包含了本书介绍的DBMS(除Access以外),是比较全面的SQL:2003参考书。它适合于已经有一定基础的SQL程序员。   ·Troels Arvin的“Comparison of Different SQL Implementations”解释了DBMS实现SQL各种功能的不同之处,包括源文件和其他SQL图书、文章、资源的链接。它包括了SQL:2003和与本书相同的DBMS(除Access以外),见http://troels.arvin.dk/db/rdbms。   配套站点   在www.fehily.com,你可以找到修正、更新代码和可供下载的示例数据库(见2.6节)。单击Contact链接就可以给我发对本书的问题、建议、修改及批评意见。   SQL Server 与桌面DBMS   SQL服务器DBMS在客户/服务器网络中作为服务器端,它存储数据并响应客户端的SQL请求。客户端是一个应用程序或一台向服务器发送SQL请求并接受服务器响应的计算机。服务器真正执行对数据库的操作,客户端只是接收答案。如果网络使用了客户/服务器架构,客户端就是眼前桌面上的计算机,服务器则是放在另一房间、另一座大楼甚至另一个国家的强大的专业化设备。客户/服务器的请求和响应如何传递的规则在DBMS协议和类似ODBC、JDBC和ADO.NET的接口中定义。   桌面DBMS是独立的程序,它存储数据库并执行所有SQL指令,或作为SQL服务器的客户端。桌面DBMS不能接受其他客户端的请求(或者说,不能作为SQL服务器)。   SQL服务器包括Microsoft SQL Server、Oracle、DB2、MySQL和PostgreSQL。桌面系统包括Microsoft Access和FileMaker Pro。注意,SQL server(没有大写)指的是所有供应商的SQL服务器产品,SQL Server(大写)是Microsoft的SQL服务器产品。   读者对象   本书的读者对象是数据库应用开发人员和最终用户(不是数据库设计人员或管理人员),主要适合以下人员。   ·熟悉计算机但缺乏编程经验。   ·正在自学或跟随指导老师学习SQL。   ·对数据库没有兴趣,但因为工作需要必须处理大量结构化信息。这类人包括统计人员、流行病工作者、网站编程人员、气象工作者、工程师、会计、投资者、科研人员、分析师、销售代表、金融规划和交易员、办公室文员及经理人。   ·对易用但不够强大的图形查询工具不太满意的人。   ·正从桌面数据库转到DBMS服务器(参见“SQL Server与桌面DBMS”)。   ·已经了解一些SQL,不满足于简单的SELECT语句。   ·需要创建、修改或删除表、索引和视图等数据库对象。   ·需要将SQL代码嵌入到C、Java、Visual Basic、PHP、Perl或其他宿主语言。   ·作为网站程序员,需要在网页上展示查询结果。   ·需要桌面SQL的参考书。   ·因为数据列表已经变得太大、太复杂,而无法使用电子表格管理,正从Microsoft Excel转向Microsoft Access。   本书不适合希望学习以下内容的读者。   ·如何设计数据库(尽管在第2章简述了设计概念)。   ·DBMS供应商在基本SQL语句上增加的扩展特性。   ·高级编程或管理。本书没有包含安装、权限、触发器、递归 、存储过程、复制、备份、恢复、游标、整理、字符集、翻译、XML及面向对象扩展。   排版约定   本书使用以下排版约定。楷体表示引入的新术语。英文斜体表示变量。代码体表示SQL代码和代码及一般文本里的语法,也表示可执行的代码、文件名、目录(文件夹)名、URL和命令行提示符文本。粗代码体表示SQL代码片段和结果对应正文中的解释部分。斜代码体表示SQL代码中必须使用值来取代的变量,例如必须用真实的列名取代column 。   语法约定   SQL是对行中断和每行长度都没有限制的自由形式语言。为了使代码易于阅读和维护,本书在SQL语法图解和代码中使用一致的风格。   ·每个SQL语句开始于新行。   ·每次缩进为2个字符。   ·每个语句的子句开始于新的缩进的行。   SELECT au_fname, au_lname   FROM authors   ORDER BY au_lname;   ·SQL是不区分大小写的,这意味着myname、MyName和MYNAME是同样的标识符。本书对于SQL关键字(如SELECT、NULL和CHARACTER)使用大写(见3.1节);对于用户定义的值(如表、列和别名)使用小写。(对于一些DBMS,用户定义的标识符在引用时或其他一些场合是区分大小写的,因此最安全的方法,是在SQL程序中遵照标识符的大小写规定。)   ·表0-1显示了本书在语法图中使用的特殊符号。   ·在SQL代码中所有引号是直的引号(如'和"),而不是弯曲的引号(如’和“),弯曲的引号会使代码无法运行。   ·当一行太窄而无法容纳一整行代码或输出时,将其分为两段或两段以上;箭头?表示行的继续。   表0-1语法符号   符号 说明    媒体评论   “我是个计算机教师,通常对那些计算机书没有太多好感。但这本书我忍不住要向大家推荐,我用它作SQL教材,效果很好……非常实用,例子很丰富,且知识点覆盖全面,深度也合适。”.   ——Amazon.com读者评论   “绝佳的SQL参考书。它一直在我手边,一旦遇到SQL方面的问题,我会首先寻求它的帮助。”...   ——资深计算机取证专家Jerry   

2013-02-05

OCA认证考试指南(1Z0-051):Oracle Database 11g SQL Fundamentals I--随书源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《OCA认证考试指南(1Z0-051):Oracle Database 11g SQL Fundamentals I 》的随书源代码 对应的书籍资料见: OCA认证考试指南(1Z0-051):Oracle Database 11g SQL Fundamentals I 基本信息 原书名: OCA Oracle Database 11g SQL Fundamentals I Exam Guide: Exam 1Z0-051 原出版社: McGraw-Hill Osborne Media 作者: (美)John Watson    Roopesh Ramklass 译者: 付勇 出版社:清华大学出版社 ISBN:9787302207429 上架时间:2009-10-23 出版日期:2009 年10月 开本:16开 页码:386 版次:1-1 内容简介   本书旨在对参加oca oracle database 11g sql fundamentals i考试的读者提供帮助。每一章都配备了练习题、自测题、实践题、本章知识点回顾和小结,从各个方面使读者对本书所学内容进行充分地消化和吸收。本书是oca认证考试最权威的辅导教程,也是oracle从业人员必备的参考书。.    本书全面覆盖了oca认证考试(1z0-051)的所有要点:    ●sql select语句    ●限制和排序数据    ●单行函数    ●转换函数和条件表达式..    ●分组函数    ●显示多个表中的数据    ●子查询    ●集合运算符    ●dml和ddl语句    ●模式对象... 作译者   John Watson供职于BPLC管理咨询公司,负责该公司在欧洲和非洲的教学和咨询工作。他曾在英国和欧洲的多家公司、政府部门和非政府组织供职,此后在南非的Oracle大学工作数年。他具有数据库和应用服务器管理的OCP认证资格,IT从业经历达25年之久,曾编撰多本技术书籍,发表多篇技术论文。 目录 封面 -12 封底 387 版权 -11 作者简介 -10 前言 -9 目录 -4 第1章 Oracle服务器技术与关系范例 1 1.1 定位服务器技术 2 1.1.1 Oracle服务器的体系结构 3 1.1.2 Oracle Application Server 4 1.1.3 Oracle Enterprise Manager 5 1.1.4 网格计算 6 1.1.5 开发工具和语言 6 1.2 理解关系结构 7 1.2.1 行和表 7 1.2.2 数据规范化 9 1.3 SQL语言概述 15 1.3.1 SQL标准 15 1.3.2 SQL命令 15 1.3.3 面向集合语言 16 1.4 使用客户工具 17 1.4.1 SQL*Plus 17 1.4.2 SQL Developer 22 1.5 创建演示模式 25 1.5.1 用户和模式 26 1.5.2 HR和OE模式 26 1.5.3 创建演示模式 29 1.6 认证小结 30 1.7 本章测试题 31 1.7.1 自测题 31 1.7.2 实验题 33 1.7.3 自测题答案 33 1.7.4 实验题答案 34 第2章 使用SQL SELECT语句检索数据 35 2.1 列出SQL SELECT语句的性能 36 2.1.1 SQL SELECT语句介绍 36 2.1.2 DESCRIBE表命令 36 2.1.3 SELECT语句的性能 40 2.2 执行基本的SELECT语句 40 2.2.1 基本SELECT语句的语法 41 2.2.2 必须遵守的规则 45 2.2.3 SQL表达式和运算符 48 2.2.4 NULL 57 2.3 认证小结 62 2.4 本章测试题 63 2.4.1 自测题 63 2.4.2 实验题 65 2.4.3 自测题答案 66 2.4.4 实验题答案 67 第3章 限定和排序数据 71 3.1 限制查询检索的行 72 3.1.1 WHERE子句 72 3.1.2 比较运算符 78 3.1.3 布尔运算符 88 3.2 排序查询检索的行 96 3.3 和符号(&)替换 101 3.3.1 替换变量 101 3.3.2 定义和验证 106 3.4 认证小结 111 3.5 本章测试题 112 3.5.1 自测题 112 3.5.2 实验题 114 3.5.3 自测题答案 114 3.5.4 实验题答案 115 第4章 单行函数 117 4.1 描述SQL中可用的不同类型的函数 118 4.1.1 定义函数 118 4.1.2 函数类型 120 4.2 在SELECT语句中使用字符、数字和日期函数 122 4.2.1 使用字符大小写转换函数 122 4.2.2 使用字符操作函数 127 4.2.3 使用数字函数 137 4.2.4 使用日期 141 4.2.5 使用日期函数 144 4.3 认证小结 151 4.4 本章测试题 152 4.4.1 自测题 152 4.4.2 实验题 154 4.4.3 自测题答案 154 4.4.4 实验题答案 155 第5章 使用转换函数和条件表达式 157 5.1 SQL中可用的各种类型的转换函数介绍 158 5.2 使用TO_CHAR、TO_NUMBER和TO_DATE转换函数 160 5.3 在SELECT语句中应用条件表达式 170 5.3.1 嵌套函数 170 5.3.2 一般函数 171 5.3.3 条件函数 177 5.4 认证小结 182 5.5 本章测试题 184 5.5.1 自测题 184 5.5.2 实验题 186 5.5.3 自测题答案 186 5.5.4 实验题答案 187 第6章 使用分组函数报告聚集数据 189 6.1 分组函数介绍 190 6.1.1 分组函数的定义 190 6.1.2 分组函数的类型和语法 191 6.2 确定可用的分组函数 193 6.2.1 使用分组函数 193 6.2.2 嵌套的分组函数 198 6.3 使用GROUP BY子句分组数据 199 6.3.1 创建数据组 200 6.3.2 GROUP BY子句 200 6.3.3 按多列分组 202 6.4 使用HAVING子句包含或者排除分组行 205 6.4.1 限制分组结果 205 6.4.2 HAVING子句 206 6.5 认证小结 209 6.6 本章测试题 210 6.6.1 自测题 210 6.6.2 实验题 212 6.6.3 自测题答案 212 6.6.4 实验题答案 214 第7章 显示多个表中的数据 215 7.1 使用同等连接和非同等连接编写SELECT语句访问多个表的数据 216 7.1.1 连接的类型 216 7.1.2 使用SQL:1999语法连接表 220 7.1.3 限定模糊的列名 221 7.1.4 NATURAL JOIN子句 222 7.1.5 自然JOIN USING子句 224 7.1.6 自然JOIN ON子句 225 7.1.7 N路连接和其他连接条件 227 7.1.8 非同等连接 229 7.2 使用自连接将表连接到自身 231 7.3 使用外连接查看不满足连接条件的数据 233 7.3.1 内连接和外连接 234 7.3.2 左外连接 234 7.3.3 右外连接 235 7.3.4 全外连接 237 7.4 生成两个或者更多表的笛卡尔乘积 239 7.5 认证小结 242 7.6 本章测试题 243 7.6.1 自测题 243 7.6.2 实验题 246 7.6.3 自测题答案 246 7.6.4 实验题答案 247 第8章 使用子查询解决问题 249 8.1 定义子查询 250 8.2 描述子查询能够解决的问题的类型 251 8.2.1 将子查询的结果集用于比较 251 8.2.2 星型转换(Star Transformation) 252 8.2.3 生成执行SELECT语句的表 253 8.2.4 生成投影值 253 8.2.5 生成传递给DML语句的行 253 8.3 列举子查询的类型 255 8.3.1 单行和多行子查询 255 8.3.2 关联子查询 256 8.4 写单行和多行子查询 258 8.5 认证小结 261 8.6 本章测试题 262 8.6.1 自测题 262 8.6.2 实验题 264 8.6.3 自测题答案 265 8.6.4 实验题答案 266 第9章 使用集合运算符 267 9.1 描述集合运算符 268 9.1.1 集合和维恩图 268 9.1.2 集合运算符的一般原则 269 9.2 使用集合运算符将多个查询合并为一个查询 271 9.2.1 UNION ALL运算符 271 9.2.2 UNION运算符 272 9.2.3 INTERSECT运算符 272 9.2.4 MINUS运算符 273 9.2.5 更复杂的示例 273 9.3 控制返回行的顺序 276 9.4 认证小结 277 9.5 本章测试题 278 9.5.1 自测题 278 9.5.2 实验题 279 9.5.3 自测题答案 280 9.5.4 实验题答案 280 第10章 操作数据 283 10.1 描述各种数据操作语言(Data Manipulation Language,DML)语句 284 10.1.1 INSERT 284 10.1.2 UPDATE 285 10.1.3 DELETE 286 10.1.4 MERGE 286 10.1.5 TRUNCATE 287 10.1.6 DML语句失败 287 10.2 在表中插入行 290 10.3 更新表中的行 294 10.4 从表中删除行 297 10.4.1 使用DELETE删除行 297 10.4.2 使用TRUNCAT删除行 299 10.4.3 MERGE 300 10.5 控制事务 300 10.5.1 数据库事务 301 10.5.2 事务控制语句 303 10.6 认证小结 307 10.7 本章测试题 309 10.7.1 自测题 309 10.7.2 实验题 311 10.7.3 自测题答案 312 10.7.4 实验题答案 314 第11章 使用DDL语句创建和管理表 315 11.1 分类主要的数据库对象 316 11.1.1 对象类型 316 11.1.2 用户和模式 317 11.1.3 命名模式对象 318 11.1.4 对象名称空间 319 11.2 回顾表结构 320 11.3 列举列可用的数据类型 321 11.4 创建简单的表 324 11.4.1 使用列规范创建表 324 11.4.2 从子查询创建表 326 11.4.3 在创建之后变更表定义 327 11.4.4 删除和切断表 327 11.5 讨论在创建表时如何创建约束 329 11.5.1 约束的类型 330 11.5.2 定义约束 332 11.6 认证小结 335 11.7 本章测试题 336 11.7.1 自测题 336 11.7.2 实验题 338 11.7.3 自测题答案 338 11.7.4 实验题答案 339 第12章 创建其他模式对象 341 12.1 创建简单视图与复杂视图 342 12.1.1 使用视图的原因 342 12.1.2 简单视图与复杂视图 345 12.1.3 创建、更改和删除视图 346 12.2 从视图中检索数据 348 12.3 创建私有和公有同义词 349 12.4 创建、维护和使用序列 352 12.4.1 创建序列 353 12.4.2 使用序列 354 12.5 创建和维护索引 358 12.5.1 索引的用途 358 12.5.2 索引类型 359 12.5.3 创建和使用索引 362 12.5.4 修改和删除索引 363 12.6 认证小结 365 12.7 本章测试题 366 12.7.1 自测题 366 12.7.2 实践题 370 12.7.3 自测题答案 370 12.7.4 实验题答案 372 附录A 本书提供的OCA考试资料 375 本书配套模拟试题 375 系统要求 376 MasterExam 376 卸载MasterExam 376 技术支持 376 LearnKey技术支持 376 术语表 377 前言   当今社会需要越来越多具有IT行业认证资格的员工。对于雇主来说,认证的好处是显著的:雇主能够确信自己的员工具备一定的竞争力。个人同样能够凭借认证资格享受到巨大好处。目前,许多雇主更希望雇用具有认证资格的技术人员,而且许多IT产品买主不愿购买未聘用相关认证人员的公司的产品。在众多的IT行业认证中,Oracle认证最受青睐。除了商业报酬的因素外,具备Oracle认证资格就意味着成为相对紧俏的Oracle专业人员群体中的一分子,也拥有了赢得可观收入的重要筹码。.   Oracle认证具有多种类别。本书涉及专门针对Oracle数据库11g版本的Oracle Database Administration认证。DBA认证级别有以下三种:Certified Associate(OCA)、Certified Professional(OCP)以及Certified Master(OCM)。取得OCA资格需要通过两种考试,本书是为第一种考试准备的书籍。取得OCP资格需要通过第三种考试。这些考试在任一Prometric考试中心都可以进行,要求在90分钟内解答60或70个问题。取得OCM资格则还需要在Oracle测试中心完成为期两天的评估,其中涉及复杂环境的模拟以及高级技术的应用。   如果最终目的是学习Oracle PL/SQL和Oracle Forms Developer课程,也可以将第一种考试内容作为起点,不过编写本书时使用的是版本10g,因为11g版本还没有发布。   在准备第一种OCA考试时,可以参加Oracle大学举办的培训课程,可以学习Oracle大学的联机辅导资料,也可以阅读本书。无论采用哪种方式,应试者都应当参考Oracle Documentation Library来了解语法的详细信息。仅凭本书就足以帮助应试者通过认证,但如果选择了其他方式,本书也是一本珍贵的参考资料。本书围绕考试目标展开讨论,还涵盖了DBA在工作中用到的大量信息。对于从事开发工作的读者,也可以将本书的主要内容作为学习Oracle公司的这些开发工具的起点:SQL、PL/SQL及Oracle Application Server自带的Internet应用程序开发工具包。   当然,也不要一厢情愿地认为,只要购得本书,将其藏于枕下,书中的知识便可源源不断地传递到脑海中。必须通读本书、完成所有练习、解决示例问题以及试验各种命令。在进一步熟悉Oracle环境后,会悟出一句金箴:在实践中求真知。   在众多场合会发现,一个几分钟便告完成的简单测试能省下数小时的思考与手册查阅时间。若有不明之处,可以构造一个示例并查看发生的情况。本书基于Windows或Linux操作系统讨论数据库,但可以在Oracle支持的任何平台上完成练习并做更深入的研究。   从此将开始您的Oracle数据库管理学习之旅,在职业生涯余下的岁月里,可以沿着这条幽静芳香的路径步入更美妙的人生境界。请尽情品味和享受学习的乐趣吧!   本书内容   本书供Oracle专业人员全面学习OCA Oracle Database 11g:SQL Fundamentals I Exam。每章围绕考试的一个重要方面铺开描述,全书缜密论述了所有OCA官方认证目标。   本书提供的OCA考试资料   本书支持网站http://www.tupwk.com.cn/downpage提供了一个MasterExam模拟考试软件,可以真实模拟Oracle Database 11g OCA认证考试。详细介绍请参考本书附录。   准备清单   本文结尾处有一份准备清单,表中列出了官方考试目标。通览此表,一开始就能衡量自己对每个目标的掌握程度,检查自己的学习进展情况,并确保将更多时间投入较为困难和感到陌生的领域。每个目标均由Oracle公司提出,在表中可以找到其所在的章节。   编排方式   每章包含多个组成部分,以便突出显示重要条目、强化学习要点,并提供具有帮助作用的应试提示。每章的组成部分如下:   “考点”突出显示考试信息和可能布设的陷阱,如下例:   “练习”分布于各个章节,是助您成功闯过考试关的实用练习,能帮您熟练掌握很可能成为考试要点的技能。不要只是泛泛地读一读,而应该能熟练地完成这些实用练习。“从做中学”是有效提高产品理解能力的途径。..   “提示”描述实际设置中最常遇到的问题,是有关认证主题和产品主题的真知灼见。它们指出了常见错误,并解决提示中谈及的问题以及根据经验推断的问题。   “考点透析”部分预测考试重点,安排在每章将近结束的位置。这些是根据多次实际考试和模拟考试的经验,以及Oracle内部团队在评判试卷的过程中总结出来的重点主题。   “小结”简明扼要地回顾了整个章节,并重申考试要点。 .  “本章知识点回顾”是相应章节的主题列表,安排在每章即将结束的位置。在考试前,可供读者进行快捷的总结性复习。   “自测题”模拟认证考试中的问题。可以在章末找到这些问题的答案和解释。在阅读完每章后做一做“自测题”,可以巩固所学的内容,并熟悉考题的结构。   “实践题”部分放在“自测题”之后,它提出独特的具有挑战性的问题,为了回答这些问题,需要理解多个概念。与其他问题相比,这些问题更复杂,内容更广泛,要求读者利用全章的知识,来解决实际环境中遇到的复杂问题。   学习指导   读完本书后,留出时间认真地复习一遍。在参试前,可能需要多次复习本书,并利用它所提供的方法来复习材料。   温习所有“本章知识点回顾”或请别人考考自已——可使用此练习为考试热身。   温习所有考点——请注意,这些考点都是根据OCA考试总结出来的。利用它们,可以集中精力应对考试。   重温自测题——正确的做法是:每读完一章就立即完成自测题来巩固所学内容,并最后将这些题目综合起来重做一遍。考试题不会像章末自测题那样按主题组合,必须做好这样的准备:刚做了一道关于A主题的题,接着就要做一道关于B主题的题。   完成练习——读完一章后要完成自测题和实践题吗?答案是十分肯定的。这些练习题涵盖了考试主题,没有什么方法比通过做练习来了解材料的效果更好。一定要弄清楚每个练习中每个步骤的来龙去脉。如对其中一些内容不甚明了,请重新阅读正文中的对应内容。   考题结构   OCA考试是多项选择题,但不一定都是有答案可选的题目。有些题目要求选择2~3个答案,有些题目要求“选择所有正确答案。”大多数题目是用文本描述的,但有些题目会有插图,比如用来说明问题的屏幕截图。   审题要仔细。有的题目要求一个答案,如果不仔细审题,可能以为所有答案都是错的或者有多个答案是正确的。在重新审题时,往往就会领会出题者的意图。   每道题的平均预留时间仅一分钟左右。拿到试卷后,要通篇浏览一遍,先做有把握的题,拿不准的就划上记号,然后回头琢磨(考试中的大多数时间都用在了这上面)。如果最后还有难题解不出,就猜一猜碰碰运气吧,猜不对,自然要丢分!   应试准备   对知识的掌握离不开学习和实践。认真学习本书的每一章,完成所有练习,并进行试验。如果仍有不清楚的地方,可以利用其他资源,必备参考资料是Oracle Documentation Library(可以从Oracle Corporation的网站上免费下载)。如果有机会去听Oracle大学课程,或者具有访问Oracle大学远程自学课程的权限,这也是很有价值的学习方式。   章末的自测题和本书支持网站http://www.tupwk.com.cn/downpage上的题目不是OCA真题(因为那会有欺骗性),而是您将面对的考题类型与格式的逼真模拟。它们涵盖了所有考试材料。在进考场的前一天,做一遍模拟题很有意义,可以再巩固一下不扎实的知识点。   本书不仅仅是应试指南:全书的主题是介绍如何使用SQL开发应用程序。如果知道了如何做这件事,就能通过考试。不要死记问题的答案——要学习解答所用问题的技术、原则和语法。...

2013-02-05

OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053) 共2部分:此为第002部分 基本信息 原书名: OCA/OCP Oracle Database 11g All-in-One Exam Guide with CD-ROM: Exams 1Z0-051, 1Z0-052, 1Z0-053 原出版社: McGraw-Hill Osborne Media 作者: (美)John Watson    Roopesh Ramklass    Bob Bryla 译者: 宁洪 吴云洁 李梦汶 出版社:清华大学出版社 ISBN:9787302242505 上架时间:2010-12-24 出版日期:2011 年1月 开本:16开 页码:829 版次:1-1 内容简介   《ocp/oca认证考试指南全册:oracle database 11g(1z0—051,120-052,120-053)》是为oca和ocp考试准备的独家权威指南。本书的每一章都提供吸引人的练习题、实践问题和本章知识点回顾以强化所学的知识。本书既是帮助读者轻松地通过oca/ocp认证考试的好帮手,也是oracle从业人员必备的参考书。    本书全面覆盖了1z0-051、1z0-052和1z0-053考试的所有要点:    ●实例管理    ●oracle网络和存储结构    ●安全性    ●sql    ●oracle恢复管理器和oracle闪回技术    ●资源管理器    ●oracle自动存储管理    ●oracle调度程序    ●自动工作负荷知识库    ●性能调整 作译者   John Watson就职于BPLC Management Consultants,负责公司欧洲和非洲的教学和咨询工作。他拥有数据库和应用服务器管理方面的OCP资格,以及长达25年的IT从业经验,曾撰著过多本技术书籍并发表了大量的技术论文。   Roopesh Ramklass是一名熟悉多种环境的Oracle专家。他创办了自己的咨询公司,作为一名独立的顾问,他围绕大量的Oracle技术设计并开发了软件和培训课程,内容涉及数据库、应用服务器和商业智能产品,拥有12年的IT从业经验。   Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. 目录 封面 -24 封底 -23 扉页 -22 版权 -21 前言 -20 目录 -10 第Ⅰ部分 Oracle Database 11g管理 1 第1章 Oracle Database 11g体系结构概述 3 1.1 Oracle产品系列 4 1.1.1 Oracle服务器系列 4 1.1.2 Oracle开发工具 7 1.1.3 Oracle应用程序 9 1.2 预备知识 9 1.2.1 Oracle概念 10 1.2.2 SQL概念 10 1.2.3 操作系统概念 11 1.3 单实例体系结构 11 1.3.1 单实例数据库体系结构 11 1.3.2 分布式系统体系结构 13 1.4 实例内存结构 15 1.4.1 数据库缓冲区缓存 16 1.4.2 日志缓冲区 17 1.4.3 共享池 18 1.4.4 大池 21 1.4.5 Java池 21 1.4.6 流池 22 1.5 实例进程结构 23 1.5.1 SMON 24 1.5.2 PMON 24 1.5.3 DBWn 24 1.5.4 LGWR 26 1.5.5 CKPT 27 1.5.6 MMON 27 1.5.7 MMNL 28 1.5.8 MMAN 28 1.5.9 ARCn 28 1.5.10 RECO 29 1.5.11 其他一些后台进程 29 1.6 数据库存储结构 32 1.6.1 物理数据库结构 32 1.6.2 逻辑数据库结构 35 1.6.3 数据字典 37 1.7 本章知识点回顾 39 1.8 自测题 39 1.9 自测题答案 41 第2章 安装和创建数据库 43 2.1 了解Oracle数据库管理工具 44 2.1.1 Oracle Universal Installer 44 2.1.2 创建数据库和升级数据库的工具 48 2.1.3 发送即席SQL的工具:SQL*Plus和SQL Developer 48 2.1.4 Oracle Enterprise Manager 52 2.1.5 其他管理工具 53 2.2 规划Oracle数据库的安装 54 2.2.1 选择操作系统 54 2.2.2 硬件和操作系统资源 55 2.2.3 Optimal Flexible Architecture 57 2.2.4 环境变量 57 2.3 使用OUI安装Oracle软件 59 2.4 使用DBCA创建数据库 62 2.4.1 实例、数据库和数据字典 62 2.4.2 使用DBCA创建一个数据库 63 2.4.3 DBCA 创建的脚本和其他文件 67 2.4.4 DBCA的其他功能 73 2.5 本章知识点回顾 74 2.6 自测题 75 2.7 自测题答案 78 第3章 实例管理 81 3.1 设置数据库初始化参数 82 3.1.1 静态参数和动态参数以及初始化参数文件 82 3.1.2 基本参数 84 3.2 描述启动和关闭数据库时的多个阶段 88 3.2.1 Database Control的启动和连接 88 3.2.2 启动数据库侦听器 90 3.2.3 启动SQL*Plus 91 3.2.4 启动和关闭数据库 92 3.3 使用警报日志和跟踪文件 100 3.4 使用数据字典和动态性能视图 101 3.4.1 数据字典视图 101 3.4.2 动态性能视图 102 3.5 本章知识点回顾 104 3.6 自测题 105 3.7 自测题答案 107 第4章 配置Oracle网络环境 109 4.1 配置和管理Oracle网络 110 4.1.1 Oracle Net和客户端-服务器范例 110 4.1.2 Oracle Net与通信协议简介 111 4.1.3 建立会话 112 4.1.4 创建侦听器 114 4.1.5 数据库注册 116 4.1.6 解析名称的技术 117 4.1.7 侦听器控制实用程序 119 4.1.8 配置服务别名 121 4.1.9 文件名和TNSADMIN环境变量 123 4.1.10 数据库链接 125 4.2 使用Oracle共享服务器体系结构 128 4.2.1 专用服务器体系结构的局限性 129 4.2.2 共享服务器体系结构 130 4.2.3 配置共享服务器 132 4.2.4 使用共享服务器的场合 132 4.3 本章知识点回顾 134 4.4 自测题 135 4.5 自测题答案 137 第5章 Oracle存储结构 139 5.1 了解表空间和数据文件 140 5.1.1 Oracle数据存储模型 140 5.1.2 段、区间、块和行 142 5.1.3 文件存储技术 144 5.2 创建和管理表空间 146 5.2.1 创建表空间 146 5.2.2 更改表空间 150 5.2.3 删除表空间 154 5.2.4 OMF 154 5.3 管理表空间中的空间 156 5.3.1 区间管理 157 5.3.2 管理段空间 158 5.4 本章知识点回顾 159 5.5 自测题 160 5.6 自测题答案 162 第6章 Oracle安全性 165 6.1 创建和管理数据库用户账户 166 6.1.1 用户账户属性 166 6.1.2 身份验证方法 170 6.1.3 创建账户 173 6.2 授予和撤销权限 176 6.2.1 系统权限 176 6.2.2 对象权限 178 6.3 创建和管理角色 182 6.3.1 创建角色并授予角色权限 182 6.3.2 预先定义的角色 183 6.3.3 启用角色 184 6.4 创建和管理配置文件 187 6.4.1 管理口令 187 6.4.2 资源限制 188 6.4.3 配置文件的创建和分配 189 6.5 数据库安全和最小权限原则 192 6.5.1 PUBLIC权限 192 6.5.2 对安全性至关重要的实例参数 193 6.6 使用标准数据库审核 197 6.6.1 审核SYSDBA活动 198 6.6.2 数据库审核 198 6.6.3 使用触发器执行基于值的审核 200 6.6.4 细粒度审核(FGA) 201 6.7 本章知识点回顾 204 6.8 自测题 205 6.9 自测题答案 208 第Ⅱ部分 SQL 211 第7章 DDL和模式对象 213 7.1 分类主要的数据库对象 214 7.1.1 对象类型 214 7.1.2 命名模式对象 215 7.1.3 对象名称空间 216 7.2 列举列可用的数据类型 217 7.3 创建简单的表 219 7.3.1 使用列规范创建表 220 7.3.2 使用子查询创建表 221 7.3.3 在创建之后更改表定义 222 7.3.4 删除和截断表 222 7.4 创建和使用临时表 225 7.5 索引 227 7.5.1 为什么说索引是必需的 227 7.5.2 索引类型 228 7.5.3 创建和使用索引 232 7.5.4 修改和删除索引 233 7.6 约束 234 7.6.1 约束类型 234 7.6.2 定义约束 236 7.6.3 约束状态 237 7.6.4 检查约束 238 7.7 视图 239 7.7.1 使用视图的原因 240 7.7.2 简单视图和复杂视图 242 7.7.3 创建、更改和删除视图 243 7.8 同义词 244 7.9 序列 246 7.9.1 创建序列 247 7.9.2 使用序列 248 7.10 本章知识点回顾 252 7.11 自测题 253 7.12 自测题答案 258 第8章 DML与并发性 261 8.1 数据操作语言(DML)语句 262 8.1.1 INSERT 262 8.1.2 UPDATE 265 8.1.3 DELETE 268 8.1.4 TRUNCATE 270 8.1.5 MERGE 271 8.1.6 DML语句失败 272 8.2 控制事务 273 8.2.1 数据库事务 273 8.2.2 执行SQL语句 274 8.2.3 事务控制:COMMIT、ROLLBACK、SAVEPOINT和SELECT FOR UPDATE 277 8.3 识别和管理PL/SQL对象 281 8.3.1 存储的与匿名的PL/SQL程序块 282 8.3.2 PL/SQL对象 282 8.4 监视和解决锁定冲突 286 8.4.1 共享锁与排他锁 287 8.4.2 排队机制 287 8.4.3 锁定争用 288 8.4.4 死锁 290 8.5 撤销概述 291 8.6 事务与撤销数据 292 8.7 管理撤销 293 8.7.1 与撤销相关的错误条件 294 8.7.2 用于撤销管理与保留保证的参数 294 8.7.3 调整与监视撤销表空间 295 8.7.4 创建和管理撤销表空间 297 8.8 本章知识点回顾 297 8.9 自测题 299 8.10 自测题答案 301 第9章 使用SQL检索、限制和排序数据 305 9.1 列出SQL SELECT语句的功能 306 9.1.1 SQL SELECT语句的介绍 306 9.1.2 DESCRIBE表命令 306 9.1.3 SELECT语句的功能 307 9.1.4 数据规范化 308 9.2 创建演示模式 311 9.2.1 HR和WEBSTORE模式 311 9.2.2 演示模式的创建 314 9.3 执行基本的SELECT语句 317 9.3.1 基本SELECT语句的语法 317 9.3.2 必须遵守的规则 318 9.3.3 SQL表达式和运算符 321 9.3.4 NULL 324 9.4 限制查询检索的行 325 9.4.1 WHERE子句 325 9.4.2 比较运算符 328 9.4.3 布尔运算符 332 9.4.4 优先规则 334 9.5 排序查询检索的行 335 9.6 &符号替换 337 9.6.1 替换变量 337 9.6.2 定义和验证 339 9.7 本章知识点回顾 342 9.8 自测题 343 9.9 自测题答案 345 第10章 单行函数与转换函数 347 10.1 描述和使用SQL中的字符、数字和日期函数 348 10.1.1 定义函数 348 10.1.2 函数类型 348 10.1.3 使用大小写转换函数 349 10.1.4 使用字符操作函数 350 10.1.5 使用数字函数 353 10.1.6 使用日期 355 10.2 描述SQL中可用的各种类型的转换函数 359 10.3 使用TO_CHAR、TO_NUMBER 和TO_DATE转换函数 361 10.4 在SELECT语句中应用条件表达式 368 10.4.1 嵌套函数 368 10.4.2 条件函数 369 10.5 本章知识点回顾 375 10.6 自测题 376 10.7 自测题答案 378 第11章 分组函数 379 11.1 分组函数 380 11.1.1 分组函数的定义 380 11.1.2 使用分组函数 381 11.2 使用GROUP BY子句分组数据 384 11.2.1 创建数据组 384 11.2.2 GROUP BY子句 385 11.2.3 按多列分组 387 11.2.4 嵌套的分组函数 388 11.3 使用HAVING子句包含或者排除分组行 389 11.3.1 限制分组结果 389 11.3.2 HAVING子句 390 11.4 本章知识点回顾 392 11.5 自测题 392 11.6 自测题答案 395 第12章 SQL联接 397 12.1 使用同等联接和非同等联接编写SELECT语句访问多个表的数据 398 12.1.1 联接的类型 398 12.1.2 使用SQL:1999语法联接表 402 12.1.3 限定模糊的列名 402 12.1.4 NATURAL JOIN子句 403 12.1.5 自然JOIN USING子句 406 12.1.6 自然JOIN ON子句 407 12.1.7 N路联接和其他联接条件 408 12.1.8 非同等联接 410 12.2 使用自联接将表联接到自身 411 12.3 使用外联接查看不满足联接条件的数据 413 12.3.1 内联接和外联接 413 12.3.2 左外联接 413 12.3.3 右外联接 415 12.3.4 全外联接 416 12.4 生成两个或者更多表的笛卡尔乘积 417 12.5 本章知识点回顾 419 12.6 自测题 420 12.7 自测题答案 422 第13章 子查询和集合运算符 425 13.1 定义子查询 426 13.2 描述子查询能够解决的问题的类型 427 13.2.1 将子查询的结果集用于比较 427 13.2.2 生成对其执行SELECT语句的表 428 13.2.3 生成投影值 428 13.2.4 生成传递给DML语句的行 428 13.3 列举子查询的类型 430 13.3.1 单行和多行子查询 430 13.3.2 关联子查询 431 13.4 写单行和多行子查询 433 13.5 描述集合运算符 434 13.5.1 集合和维恩图 434 13.5.2 集合运算符的一般原则 434 13.6 使用集合运算符将多个查询合并为一个查询 437 13.6.1 UNION ALL运算符 437 13.6.2 UNION运算符 437 13.6.3 INTERSECT运算符 438 13.6.4 MINUS运算符 439 13.6.5 更复杂的示例 439 13.7 控制返回行的顺序 440 13.8 本章知识点回顾 440 13.9 自测题 441 13.10 自测题答案 445 第Ⅲ部分 高级数据库管理 447 第14章 数据库备份和恢复配置 449 14.1 备份和恢复问题 450 14.2 失败类型 451 14.2.1 语句失败 451 14.2.2 用户进程失败 453 14.2.3 网络故障 453 14.2.4 用户错误 453 14.2.5 介质失败 455 14.2.6 实例失败 456 14.3 实例恢复 456 14.3.1 实例恢复机制 457 14.3.2 数据库不可能受到损坏 457 14.3.3 调整实例恢复 458 14.3.4 MTTR顾问程序和检查点自动调整 459 14.3.5 检查点 460 14.4 为数据库的可恢复性作准备 461 14.4.1 保护控制文件 461 14.4.2 保护联机重做日志文件 463 14.4.3 归档日志模式和归档器进程 466 14.4.4 保护归档重做日志文件 468 14.5 闪回恢复区 469 14.5.1 恢复文件 469 14.5.2 配置闪回恢复区 469 14.5.3 闪回恢复区的空间使用 470 14.6 本章知识点回顾 472 14.7 自测题 473 14.8 自测题答案 475 第15章 使用RMAN进行备份 477 15.1 备份的概念和术语 478 15.2 使用RMAN BACKUP命令创建备份 479 15.2.1 服务器管理的一致备份 479 15.2.2 服务器管理的打开状态的备份 481 15.2.3 增量备份 482 15.2.4 映像副本 486 15.2.5 保护备份 487 15.2.6 并行化备份操作 487 15.2.7 加密备份 489 15.3 配置RMAN默认值 490 15.4 管理和监视RMAN备份 491 15.4.1 LIST、REPORT和DELETE命令 491 15.4.2 归档备份 493 15.4.3 动态性能视图 493 15.4.4 交叉检查备份 494 15.5 本章知识点回顾 495 15.6 自测题 497 15.7 自测题答案 499 第16章 使用RMAN还原和恢复 501 16.1 数据恢复顾问 502 16.1.1 Health Monitor和ADR 502 16.1.2 DRA的功能和局限性 503 16.1.3 使用数据恢复顾问 504 16.2 数据库还原和恢复 507 16.3 在数据文件丢失时,使用RMAN执行完整恢复 508 16.3.1 非归档日志模式下的数据文件恢复 508 16.3.2 归档日志模式下的非关键文件恢复 509 16.3.3 在丢失关键数据文件时恢复 511 16.4 不完整恢复 512 16.5 控制文件的自动备份和还原 514 16.6 使用映像副本恢复 518 16.7 块恢复 519 16.7.1 受损块的检测 520 16.7.2 块介质恢复 520 16.7.3 BLOCK RECOVER命令 520 16.8 本章知识点回顾 521 16.9 自测题 522 16.10 自测题答案 526 第17章 高级RMAN功能 529 17.1 恢复目录 530 17.1.1 恢复目录的必要性 530 17.1.2 创建并连接到目录 531 17.1.3 虚拟专用目录 533 17.1.4 保护和重建目录 533 17.2 存储脚本 536 17.3 使用RMAN来创建数据库 537 17.4 表空间时间点恢复(TSPITR) 540 17.4.1 TSPITR方法 540 17.4.2 自动执行TSPITR 541 17.5 RMAN性能和监视 543 17.5.1 监视RMAN会话和作业 544 17.5.2 调整RMAN 547 17.5.3 为异步I/O配置RMAN 550 17.6 本章知识点回顾 551 17.7 自测题 554 17.8 自测题答案 556 第18章 用户管理的备份、还原和恢复 559 18.1 备份和恢复 560 18.2 用户管理的数据库备份 561 18.2.1 以非归档日志模式备份 561 18.2.2 以归档日志模式备份 562 18.3 备份口令和参数文件 564 18.4 不影响数据文件的介质失败 564 18.4.1 在丢失多路复用的控制文件后进行恢复 565 18.4.2 在丢失多路复用的联机重做日志文件后进行恢复 566 18.4.3 丢失临时文件后进行恢复 569 18.5 丢失数据文件后进行恢复 569 18.5.1 以非归档日志模式恢复数据文件 569 18.5.2 以归档日志模式恢复非关键的数据文件 570 18.5.3 以归档日志模式恢复关键的数据文件 571 18.6 执行用户管理的不完整恢复 571 18.7 本章知识点回顾 574 18.8 自测题 575 18.9 自测题答案 576 第19章 闪回技术 579 19.1 各种不同的闪回技术 580 19.1.1 闪回数据库 580 19.1.2 闪回查询、事务和表 580 19.1.3 闪回删除 581 19.1.4 Flashback Data Archive 581 19.1.5 使用闪回技术的时机 582 19.2 闪回数据库 582 19.2.1 闪回数据库体系结构 583 19.2.2 配置闪回数据库 584 19.2.3 监视闪回数据库 585 19.2.4 使用闪回数据库 586 19.2.5 限制生成的闪回数据量 590 19.3 Flashback Drop 591 19.3.1 实现闪回删除 592 19.3.2 使用闪回删除 593 19.3.3 管理回收站 596 19.3.4 对回收站的空间进行回收 597 19.4 闪回查询 598 19.4.1 基本的闪回查询 599 19.4.2 闪回表查询 600 19.4.3 闪回版本查询 602 19.4.4 闪回事务查询 603 19.4.5 闪回和撤销数据 608 19.5 闪回数据归档 609 19.6 本章知识点回顾 611 19.7 自测题 612 19.8 自测题答案 615 第20章 自动存储管理 619 20.1 逻辑卷管理器的作用 620 20.1.1 RAID级别 620 20.1.2 卷大小 621 20.1.3 选择RAID级别 621 20.1.4 ASM与第三方LVM的比较 621 20.2 ASM体系结构 622 20.2.1 群集同步服务 622 20.2.2 ASM磁盘和磁盘组 622 20.2.3 ASM实例 624 20.2.4 RDBMS实例 625 20.2.5 ASM文件 625 20.3 创建原始设备 626 20.4 创建、启动和停止ASM实例 627 20.5 创建ASM磁盘组 630 20.6 创建和使用ASM文件 632 20.7 ASM和RMAN 633 20.8 ASMCMD实用程序 634 20.9 本章知识点回顾 636 20.10 自测题 637 20.11 自测题答案 639 第21章 资源管理器 641 21.1 资源管理器的必要性 642 21.2 资源管理器体系结构 643 21.2.1 使用者组 643 21.2.2 资源管理器计划 644 21.2.3 资源管理器配置工具 646 21.3 管理用户和使用者组 647 21.4 资源管理器计划 648 21.4.1 CPU方法 648 21.4.2 使用比例CPU方法 653 21.4.3 活动会话池方法 654 21.4.4 限制并行程度 655 21.4.5 通过执行时间控制作业 656 21.4.6 依据空闲时间终止会话 657 21.4.7 限制撤销数据的产生 658 21.5 使用者组自动切换 659 21.6 使用者组自适应映射 660 21.7 本章知识点回顾 663 21.8 自测题 664 21.9 自测题答案 666 第22章 调度程序 669 22.1 调度程序体系结构 670 22.2 调度程序对象 671 22.2.1 作业 671 22.2.2 程序 672 22.2.3 时间表 673 22.2.4 作业类 674 22.2.5 窗口 674 22.2.6 权限 675 22.3 创建和调度作业 676 22.3.1 自包含作业 676 22.3.2 使用程序和时间表 677 22.3.3 事件驱动的作业 679 22.3.4 作业链 681 22.3.5 轻量级作业 682 22.4 使用类、窗口与Resource Manager 684 22.4.1 使用作业类 684 22.4.2 使用窗口 685 22.5 本章知识点回顾 687 22.6 自测题 688 22.7 自测题答案 690 第23章 移动和重组数据 691 23.1 SQL*Loader 692 23.2 外部表 694 23.2.1 目录 694 23.2.2 使用外部表 695 23.3 Data Pump 698 23.3.1 Data Pump的体系结构 698 23.3.2 目录和文件位置 699 23.3.3 在直接路径或外部表路径之间作出抉择 700 23.4 使用Data Pump导出和导入 700 23.4.1 功能 700 23.4.2 将Data Pump与命令行实用程序一起使用 701 23.4.3 将Data Pump与Database Control一起使用 702 23.4.4 表空间导出和导入 703 23.5 可恢复空间分配 707 23.6 段重组 710 23.6.1 行链接和行迁移 710 23.6.2 段收缩 712 23.7 本章知识点回顾 715 23.8 自测题 717 23.9 自测题答案 718 第24章 AWR与警报系统 721 24.1 自动工作负荷知识库 722 24.1.1 收集AWR统计信息 722 24.1.2 管理AWR 723 24.1.3 统计信息、指标和基准 724 24.1.4 DBMS_WORKLOAD_REPOSI TORY包 724 24.2 数据库顾问框架 726 24.2.1 自动数据库诊断监视器 726 24.2.2 顾问 728 24.2.3 自动维护作业 729 24.3 使用服务器生成的警报系统 733 24.3.1 警报条件监视和通知 733 24.3.2 设置阈值 734 24.3.3 通知系统 735 24.4 本章知识点回顾 738 24.5 自测题 739 24.6 自测题答案 740 第25章 性能调整 741 25.1 内存管理 742 25.1.1 PGA内存管理 742 25.1.2 SGA内存管理 744 25.1.3 自动内存管理 745 25.2 内存顾问 746 25.3 SQL调整顾问 749 25.3.1 SQL调整顾问的功能 749 25.3.2 通过Enterprise Manager 使用SQL Tuning Advisor 749 25.3.3 SQL Tuning Advisor API:DBMS_SQLTUNE包 754 25.4 SQL访问顾问 755 25.4.1 通过Database Control使用SQL Access Advisor 755 25.4.2 通过DBMS_ADVISOR 使用SQL Access Advisor 759 25.5 识别和修复无效对象和不可用对象 761 25.5.1 无效对象 761 25.5.2 不可用索引 763 25.6 Database Replay 766 25.6.1 捕获工作负荷 766 25.6.2 预处理工作负荷 767 25.6.3 启动重放 767 25.6.4 分析和报告 768 25.7 本章知识点回顾 771 25.8 自测题 773 25.9 自测题答案 776 第26章 全球化 779 26.1 全球化要求和功能 780 26.1.1 字符集 780 26.1.2 语言支持 781 26.1.3 地区支持 783 26.1.4 其他NLS设置 784 26.2 使用全球化支持功能 785 26.2.1 选择字符集 786 26.2.2 改变字符集 787 26.2.3 数据库中的全球化 787 26.2.4 实例级别的全球化 788 26.2.5 客户端环境设置 788 26.2.6 会话级别的全球化设置 790 26.2.7 语句级别的全球化设置 791 26.3 语言和时区 792 26.3.1 语言排序与选择 792 26.3.2 Locale Builder 794 26.3.3 使用时区 794 26.4 本章知识点回顾 796 26.5 自测题 797 26.6 自测题答案 799 第27章 智能基础结构 801 27.1 Enterprise Manager Support Workbench 802 27.1.1 自动诊断知识库 802 27.1.2 问题和事件 803 27.1.3 ADRCI 803 27.1.4 Support Workbench 804 27.2 补丁程序 806 27.2.1 补丁程序的类型 806 27.2.2 与MetaLink和Patch Advisor集成 806 27.2.3 应用补丁程序 807 27.3 本章知识点回顾 812 27.4 自测题 813 27.5 自测题答案 814 附录A 本书提供的OCA/OCP考试资料 817 术语表 819

2013-02-05

OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 对应的书籍资料见: OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053) 共2部分:此为第001部分 基本信息 原书名: OCA/OCP Oracle Database 11g All-in-One Exam Guide with CD-ROM: Exams 1Z0-051, 1Z0-052, 1Z0-053 原出版社: McGraw-Hill Osborne Media 作者: (美)John Watson    Roopesh Ramklass    Bob Bryla 译者: 宁洪 吴云洁 李梦汶 出版社:清华大学出版社 ISBN:9787302242505 上架时间:2010-12-24 出版日期:2011 年1月 开本:16开 页码:829 版次:1-1 内容简介   《ocp/oca认证考试指南全册:oracle database 11g(1z0—051,120-052,120-053)》是为oca和ocp考试准备的独家权威指南。本书的每一章都提供吸引人的练习题、实践问题和本章知识点回顾以强化所学的知识。本书既是帮助读者轻松地通过oca/ocp认证考试的好帮手,也是oracle从业人员必备的参考书。    本书全面覆盖了1z0-051、1z0-052和1z0-053考试的所有要点:    ●实例管理    ●oracle网络和存储结构    ●安全性    ●sql    ●oracle恢复管理器和oracle闪回技术    ●资源管理器    ●oracle自动存储管理    ●oracle调度程序    ●自动工作负荷知识库    ●性能调整 作译者   John Watson就职于BPLC Management Consultants,负责公司欧洲和非洲的教学和咨询工作。他拥有数据库和应用服务器管理方面的OCP资格,以及长达25年的IT从业经验,曾撰著过多本技术书籍并发表了大量的技术论文。   Roopesh Ramklass是一名熟悉多种环境的Oracle专家。他创办了自己的咨询公司,作为一名独立的顾问,他围绕大量的Oracle技术设计并开发了软件和培训课程,内容涉及数据库、应用服务器和商业智能产品,拥有12年的IT从业经验。   Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. 目录 封面 -24 封底 -23 扉页 -22 版权 -21 前言 -20 目录 -10 第Ⅰ部分 Oracle Database 11g管理 1 第1章 Oracle Database 11g体系结构概述 3 1.1 Oracle产品系列 4 1.1.1 Oracle服务器系列 4 1.1.2 Oracle开发工具 7 1.1.3 Oracle应用程序 9 1.2 预备知识 9 1.2.1 Oracle概念 10 1.2.2 SQL概念 10 1.2.3 操作系统概念 11 1.3 单实例体系结构 11 1.3.1 单实例数据库体系结构 11 1.3.2 分布式系统体系结构 13 1.4 实例内存结构 15 1.4.1 数据库缓冲区缓存 16 1.4.2 日志缓冲区 17 1.4.3 共享池 18 1.4.4 大池 21 1.4.5 Java池 21 1.4.6 流池 22 1.5 实例进程结构 23 1.5.1 SMON 24 1.5.2 PMON 24 1.5.3 DBWn 24 1.5.4 LGWR 26 1.5.5 CKPT 27 1.5.6 MMON 27 1.5.7 MMNL 28 1.5.8 MMAN 28 1.5.9 ARCn 28 1.5.10 RECO 29 1.5.11 其他一些后台进程 29 1.6 数据库存储结构 32 1.6.1 物理数据库结构 32 1.6.2 逻辑数据库结构 35 1.6.3 数据字典 37 1.7 本章知识点回顾 39 1.8 自测题 39 1.9 自测题答案 41 第2章 安装和创建数据库 43 2.1 了解Oracle数据库管理工具 44 2.1.1 Oracle Universal Installer 44 2.1.2 创建数据库和升级数据库的工具 48 2.1.3 发送即席SQL的工具:SQL*Plus和SQL Developer 48 2.1.4 Oracle Enterprise Manager 52 2.1.5 其他管理工具 53 2.2 规划Oracle数据库的安装 54 2.2.1 选择操作系统 54 2.2.2 硬件和操作系统资源 55 2.2.3 Optimal Flexible Architecture 57 2.2.4 环境变量 57 2.3 使用OUI安装Oracle软件 59 2.4 使用DBCA创建数据库 62 2.4.1 实例、数据库和数据字典 62 2.4.2 使用DBCA创建一个数据库 63 2.4.3 DBCA 创建的脚本和其他文件 67 2.4.4 DBCA的其他功能 73 2.5 本章知识点回顾 74 2.6 自测题 75 2.7 自测题答案 78 第3章 实例管理 81 3.1 设置数据库初始化参数 82 3.1.1 静态参数和动态参数以及初始化参数文件 82 3.1.2 基本参数 84 3.2 描述启动和关闭数据库时的多个阶段 88 3.2.1 Database Control的启动和连接 88 3.2.2 启动数据库侦听器 90 3.2.3 启动SQL*Plus 91 3.2.4 启动和关闭数据库 92 3.3 使用警报日志和跟踪文件 100 3.4 使用数据字典和动态性能视图 101 3.4.1 数据字典视图 101 3.4.2 动态性能视图 102 3.5 本章知识点回顾 104 3.6 自测题 105 3.7 自测题答案 107 第4章 配置Oracle网络环境 109 4.1 配置和管理Oracle网络 110 4.1.1 Oracle Net和客户端-服务器范例 110 4.1.2 Oracle Net与通信协议简介 111 4.1.3 建立会话 112 4.1.4 创建侦听器 114 4.1.5 数据库注册 116 4.1.6 解析名称的技术 117 4.1.7 侦听器控制实用程序 119 4.1.8 配置服务别名 121 4.1.9 文件名和TNSADMIN环境变量 123 4.1.10 数据库链接 125 4.2 使用Oracle共享服务器体系结构 128 4.2.1 专用服务器体系结构的局限性 129 4.2.2 共享服务器体系结构 130 4.2.3 配置共享服务器 132 4.2.4 使用共享服务器的场合 132 4.3 本章知识点回顾 134 4.4 自测题 135 4.5 自测题答案 137 第5章 Oracle存储结构 139 5.1 了解表空间和数据文件 140 5.1.1 Oracle数据存储模型 140 5.1.2 段、区间、块和行 142 5.1.3 文件存储技术 144 5.2 创建和管理表空间 146 5.2.1 创建表空间 146 5.2.2 更改表空间 150 5.2.3 删除表空间 154 5.2.4 OMF 154 5.3 管理表空间中的空间 156 5.3.1 区间管理 157 5.3.2 管理段空间 158 5.4 本章知识点回顾 159 5.5 自测题 160 5.6 自测题答案 162 第6章 Oracle安全性 165 6.1 创建和管理数据库用户账户 166 6.1.1 用户账户属性 166 6.1.2 身份验证方法 170 6.1.3 创建账户 173 6.2 授予和撤销权限 176 6.2.1 系统权限 176 6.2.2 对象权限 178 6.3 创建和管理角色 182 6.3.1 创建角色并授予角色权限 182 6.3.2 预先定义的角色 183 6.3.3 启用角色 184 6.4 创建和管理配置文件 187 6.4.1 管理口令 187 6.4.2 资源限制 188 6.4.3 配置文件的创建和分配 189 6.5 数据库安全和最小权限原则 192 6.5.1 PUBLIC权限 192 6.5.2 对安全性至关重要的实例参数 193 6.6 使用标准数据库审核 197 6.6.1 审核SYSDBA活动 198 6.6.2 数据库审核 198 6.6.3 使用触发器执行基于值的审核 200 6.6.4 细粒度审核(FGA) 201 6.7 本章知识点回顾 204 6.8 自测题 205 6.9 自测题答案 208 第Ⅱ部分 SQL 211 第7章 DDL和模式对象 213 7.1 分类主要的数据库对象 214 7.1.1 对象类型 214 7.1.2 命名模式对象 215 7.1.3 对象名称空间 216 7.2 列举列可用的数据类型 217 7.3 创建简单的表 219 7.3.1 使用列规范创建表 220 7.3.2 使用子查询创建表 221 7.3.3 在创建之后更改表定义 222 7.3.4 删除和截断表 222 7.4 创建和使用临时表 225 7.5 索引 227 7.5.1 为什么说索引是必需的 227 7.5.2 索引类型 228 7.5.3 创建和使用索引 232 7.5.4 修改和删除索引 233 7.6 约束 234 7.6.1 约束类型 234 7.6.2 定义约束 236 7.6.3 约束状态 237 7.6.4 检查约束 238 7.7 视图 239 7.7.1 使用视图的原因 240 7.7.2 简单视图和复杂视图 242 7.7.3 创建、更改和删除视图 243 7.8 同义词 244 7.9 序列 246 7.9.1 创建序列 247 7.9.2 使用序列 248 7.10 本章知识点回顾 252 7.11 自测题 253 7.12 自测题答案 258 第8章 DML与并发性 261 8.1 数据操作语言(DML)语句 262 8.1.1 INSERT 262 8.1.2 UPDATE 265 8.1.3 DELETE 268 8.1.4 TRUNCATE 270 8.1.5 MERGE 271 8.1.6 DML语句失败 272 8.2 控制事务 273 8.2.1 数据库事务 273 8.2.2 执行SQL语句 274 8.2.3 事务控制:COMMIT、ROLLBACK、SAVEPOINT和SELECT FOR UPDATE 277 8.3 识别和管理PL/SQL对象 281 8.3.1 存储的与匿名的PL/SQL程序块 282 8.3.2 PL/SQL对象 282 8.4 监视和解决锁定冲突 286 8.4.1 共享锁与排他锁 287 8.4.2 排队机制 287 8.4.3 锁定争用 288 8.4.4 死锁 290 8.5 撤销概述 291 8.6 事务与撤销数据 292 8.7 管理撤销 293 8.7.1 与撤销相关的错误条件 294 8.7.2 用于撤销管理与保留保证的参数 294 8.7.3 调整与监视撤销表空间 295 8.7.4 创建和管理撤销表空间 297 8.8 本章知识点回顾 297 8.9 自测题 299 8.10 自测题答案 301 第9章 使用SQL检索、限制和排序数据 305 9.1 列出SQL SELECT语句的功能 306 9.1.1 SQL SELECT语句的介绍 306 9.1.2 DESCRIBE表命令 306 9.1.3 SELECT语句的功能 307 9.1.4 数据规范化 308 9.2 创建演示模式 311 9.2.1 HR和WEBSTORE模式 311 9.2.2 演示模式的创建 314 9.3 执行基本的SELECT语句 317 9.3.1 基本SELECT语句的语法 317 9.3.2 必须遵守的规则 318 9.3.3 SQL表达式和运算符 321 9.3.4 NULL 324 9.4 限制查询检索的行 325 9.4.1 WHERE子句 325 9.4.2 比较运算符 328 9.4.3 布尔运算符 332 9.4.4 优先规则 334 9.5 排序查询检索的行 335 9.6 &符号替换 337 9.6.1 替换变量 337 9.6.2 定义和验证 339 9.7 本章知识点回顾 342 9.8 自测题 343 9.9 自测题答案 345 第10章 单行函数与转换函数 347 10.1 描述和使用SQL中的字符、数字和日期函数 348 10.1.1 定义函数 348 10.1.2 函数类型 348 10.1.3 使用大小写转换函数 349 10.1.4 使用字符操作函数 350 10.1.5 使用数字函数 353 10.1.6 使用日期 355 10.2 描述SQL中可用的各种类型的转换函数 359 10.3 使用TO_CHAR、TO_NUMBER 和TO_DATE转换函数 361 10.4 在SELECT语句中应用条件表达式 368 10.4.1 嵌套函数 368 10.4.2 条件函数 369 10.5 本章知识点回顾 375 10.6 自测题 376 10.7 自测题答案 378 第11章 分组函数 379 11.1 分组函数 380 11.1.1 分组函数的定义 380 11.1.2 使用分组函数 381 11.2 使用GROUP BY子句分组数据 384 11.2.1 创建数据组 384 11.2.2 GROUP BY子句 385 11.2.3 按多列分组 387 11.2.4 嵌套的分组函数 388 11.3 使用HAVING子句包含或者排除分组行 389 11.3.1 限制分组结果 389 11.3.2 HAVING子句 390 11.4 本章知识点回顾 392 11.5 自测题 392 11.6 自测题答案 395 第12章 SQL联接 397 12.1 使用同等联接和非同等联接编写SELECT语句访问多个表的数据 398 12.1.1 联接的类型 398 12.1.2 使用SQL:1999语法联接表 402 12.1.3 限定模糊的列名 402 12.1.4 NATURAL JOIN子句 403 12.1.5 自然JOIN USING子句 406 12.1.6 自然JOIN ON子句 407 12.1.7 N路联接和其他联接条件 408 12.1.8 非同等联接 410 12.2 使用自联接将表联接到自身 411 12.3 使用外联接查看不满足联接条件的数据 413 12.3.1 内联接和外联接 413 12.3.2 左外联接 413 12.3.3 右外联接 415 12.3.4 全外联接 416 12.4 生成两个或者更多表的笛卡尔乘积 417 12.5 本章知识点回顾 419 12.6 自测题 420 12.7 自测题答案 422 第13章 子查询和集合运算符 425 13.1 定义子查询 426 13.2 描述子查询能够解决的问题的类型 427 13.2.1 将子查询的结果集用于比较 427 13.2.2 生成对其执行SELECT语句的表 428 13.2.3 生成投影值 428 13.2.4 生成传递给DML语句的行 428 13.3 列举子查询的类型 430 13.3.1 单行和多行子查询 430 13.3.2 关联子查询 431 13.4 写单行和多行子查询 433 13.5 描述集合运算符 434 13.5.1 集合和维恩图 434 13.5.2 集合运算符的一般原则 434 13.6 使用集合运算符将多个查询合并为一个查询 437 13.6.1 UNION ALL运算符 437 13.6.2 UNION运算符 437 13.6.3 INTERSECT运算符 438 13.6.4 MINUS运算符 439 13.6.5 更复杂的示例 439 13.7 控制返回行的顺序 440 13.8 本章知识点回顾 440 13.9 自测题 441 13.10 自测题答案 445 第Ⅲ部分 高级数据库管理 447 第14章 数据库备份和恢复配置 449 14.1 备份和恢复问题 450 14.2 失败类型 451 14.2.1 语句失败 451 14.2.2 用户进程失败 453 14.2.3 网络故障 453 14.2.4 用户错误 453 14.2.5 介质失败 455 14.2.6 实例失败 456 14.3 实例恢复 456 14.3.1 实例恢复机制 457 14.3.2 数据库不可能受到损坏 457 14.3.3 调整实例恢复 458 14.3.4 MTTR顾问程序和检查点自动调整 459 14.3.5 检查点 460 14.4 为数据库的可恢复性作准备 461 14.4.1 保护控制文件 461 14.4.2 保护联机重做日志文件 463 14.4.3 归档日志模式和归档器进程 466 14.4.4 保护归档重做日志文件 468 14.5 闪回恢复区 469 14.5.1 恢复文件 469 14.5.2 配置闪回恢复区 469 14.5.3 闪回恢复区的空间使用 470 14.6 本章知识点回顾 472 14.7 自测题 473 14.8 自测题答案 475 第15章 使用RMAN进行备份 477 15.1 备份的概念和术语 478 15.2 使用RMAN BACKUP命令创建备份 479 15.2.1 服务器管理的一致备份 479 15.2.2 服务器管理的打开状态的备份 481 15.2.3 增量备份 482 15.2.4 映像副本 486 15.2.5 保护备份 487 15.2.6 并行化备份操作 487 15.2.7 加密备份 489 15.3 配置RMAN默认值 490 15.4 管理和监视RMAN备份 491 15.4.1 LIST、REPORT和DELETE命令 491 15.4.2 归档备份 493 15.4.3 动态性能视图 493 15.4.4 交叉检查备份 494 15.5 本章知识点回顾 495 15.6 自测题 497 15.7 自测题答案 499 第16章 使用RMAN还原和恢复 501 16.1 数据恢复顾问 502 16.1.1 Health Monitor和ADR 502 16.1.2 DRA的功能和局限性 503 16.1.3 使用数据恢复顾问 504 16.2 数据库还原和恢复 507 16.3 在数据文件丢失时,使用RMAN执行完整恢复 508 16.3.1 非归档日志模式下的数据文件恢复 508 16.3.2 归档日志模式下的非关键文件恢复 509 16.3.3 在丢失关键数据文件时恢复 511 16.4 不完整恢复 512 16.5 控制文件的自动备份和还原 514 16.6 使用映像副本恢复 518 16.7 块恢复 519 16.7.1 受损块的检测 520 16.7.2 块介质恢复 520 16.7.3 BLOCK RECOVER命令 520 16.8 本章知识点回顾 521 16.9 自测题 522 16.10 自测题答案 526 第17章 高级RMAN功能 529 17.1 恢复目录 530 17.1.1 恢复目录的必要性 530 17.1.2 创建并连接到目录 531 17.1.3 虚拟专用目录 533 17.1.4 保护和重建目录 533 17.2 存储脚本 536 17.3 使用RMAN来创建数据库 537 17.4 表空间时间点恢复(TSPITR) 540 17.4.1 TSPITR方法 540 17.4.2 自动执行TSPITR 541 17.5 RMAN性能和监视 543 17.5.1 监视RMAN会话和作业 544 17.5.2 调整RMAN 547 17.5.3 为异步I/O配置RMAN 550 17.6 本章知识点回顾 551 17.7 自测题 554 17.8 自测题答案 556 第18章 用户管理的备份、还原和恢复 559 18.1 备份和恢复 560 18.2 用户管理的数据库备份 561 18.2.1 以非归档日志模式备份 561 18.2.2 以归档日志模式备份 562 18.3 备份口令和参数文件 564 18.4 不影响数据文件的介质失败 564 18.4.1 在丢失多路复用的控制文件后进行恢复 565 18.4.2 在丢失多路复用的联机重做日志文件后进行恢复 566 18.4.3 丢失临时文件后进行恢复 569 18.5 丢失数据文件后进行恢复 569 18.5.1 以非归档日志模式恢复数据文件 569 18.5.2 以归档日志模式恢复非关键的数据文件 570 18.5.3 以归档日志模式恢复关键的数据文件 571 18.6 执行用户管理的不完整恢复 571 18.7 本章知识点回顾 574 18.8 自测题 575 18.9 自测题答案 576 第19章 闪回技术 579 19.1 各种不同的闪回技术 580 19.1.1 闪回数据库 580 19.1.2 闪回查询、事务和表 580 19.1.3 闪回删除 581 19.1.4 Flashback Data Archive 581 19.1.5 使用闪回技术的时机 582 19.2 闪回数据库 582 19.2.1 闪回数据库体系结构 583 19.2.2 配置闪回数据库 584 19.2.3 监视闪回数据库 585 19.2.4 使用闪回数据库 586 19.2.5 限制生成的闪回数据量 590 19.3 Flashback Drop 591 19.3.1 实现闪回删除 592 19.3.2 使用闪回删除 593 19.3.3 管理回收站 596 19.3.4 对回收站的空间进行回收 597 19.4 闪回查询 598 19.4.1 基本的闪回查询 599 19.4.2 闪回表查询 600 19.4.3 闪回版本查询 602 19.4.4 闪回事务查询 603 19.4.5 闪回和撤销数据 608 19.5 闪回数据归档 609 19.6 本章知识点回顾 611 19.7 自测题 612 19.8 自测题答案 615 第20章 自动存储管理 619 20.1 逻辑卷管理器的作用 620 20.1.1 RAID级别 620 20.1.2 卷大小 621 20.1.3 选择RAID级别 621 20.1.4 ASM与第三方LVM的比较 621 20.2 ASM体系结构 622 20.2.1 群集同步服务 622 20.2.2 ASM磁盘和磁盘组 622 20.2.3 ASM实例 624 20.2.4 RDBMS实例 625 20.2.5 ASM文件 625 20.3 创建原始设备 626 20.4 创建、启动和停止ASM实例 627 20.5 创建ASM磁盘组 630 20.6 创建和使用ASM文件 632 20.7 ASM和RMAN 633 20.8 ASMCMD实用程序 634 20.9 本章知识点回顾 636 20.10 自测题 637 20.11 自测题答案 639 第21章 资源管理器 641 21.1 资源管理器的必要性 642 21.2 资源管理器体系结构 643 21.2.1 使用者组 643 21.2.2 资源管理器计划 644 21.2.3 资源管理器配置工具 646 21.3 管理用户和使用者组 647 21.4 资源管理器计划 648 21.4.1 CPU方法 648 21.4.2 使用比例CPU方法 653 21.4.3 活动会话池方法 654 21.4.4 限制并行程度 655 21.4.5 通过执行时间控制作业 656 21.4.6 依据空闲时间终止会话 657 21.4.7 限制撤销数据的产生 658 21.5 使用者组自动切换 659 21.6 使用者组自适应映射 660 21.7 本章知识点回顾 663 21.8 自测题 664 21.9 自测题答案 666 第22章 调度程序 669 22.1 调度程序体系结构 670 22.2 调度程序对象 671 22.2.1 作业 671 22.2.2 程序 672 22.2.3 时间表 673 22.2.4 作业类 674 22.2.5 窗口 674 22.2.6 权限 675 22.3 创建和调度作业 676 22.3.1 自包含作业 676 22.3.2 使用程序和时间表 677 22.3.3 事件驱动的作业 679 22.3.4 作业链 681 22.3.5 轻量级作业 682 22.4 使用类、窗口与Resource Manager 684 22.4.1 使用作业类 684 22.4.2 使用窗口 685 22.5 本章知识点回顾 687 22.6 自测题 688 22.7 自测题答案 690 第23章 移动和重组数据 691 23.1 SQL*Loader 692 23.2 外部表 694 23.2.1 目录 694 23.2.2 使用外部表 695 23.3 Data Pump 698 23.3.1 Data Pump的体系结构 698 23.3.2 目录和文件位置 699 23.3.3 在直接路径或外部表路径之间作出抉择 700 23.4 使用Data Pump导出和导入 700 23.4.1 功能 700 23.4.2 将Data Pump与命令行实用程序一起使用 701 23.4.3 将Data Pump与Database Control一起使用 702 23.4.4 表空间导出和导入 703 23.5 可恢复空间分配 707 23.6 段重组 710 23.6.1 行链接和行迁移 710 23.6.2 段收缩 712 23.7 本章知识点回顾 715 23.8 自测题 717 23.9 自测题答案 718 第24章 AWR与警报系统 721 24.1 自动工作负荷知识库 722 24.1.1 收集AWR统计信息 722 24.1.2 管理AWR 723 24.1.3 统计信息、指标和基准 724 24.1.4 DBMS_WORKLOAD_REPOSI TORY包 724 24.2 数据库顾问框架 726 24.2.1 自动数据库诊断监视器 726 24.2.2 顾问 728 24.2.3 自动维护作业 729 24.3 使用服务器生成的警报系统 733 24.3.1 警报条件监视和通知 733 24.3.2 设置阈值 734 24.3.3 通知系统 735 24.4 本章知识点回顾 738 24.5 自测题 739 24.6 自测题答案 740 第25章 性能调整 741 25.1 内存管理 742 25.1.1 PGA内存管理 742 25.1.2 SGA内存管理 744 25.1.3 自动内存管理 745 25.2 内存顾问 746 25.3 SQL调整顾问 749 25.3.1 SQL调整顾问的功能 749 25.3.2 通过Enterprise Manager 使用SQL Tuning Advisor 749 25.3.3 SQL Tuning Advisor API:DBMS_SQLTUNE包 754 25.4 SQL访问顾问 755 25.4.1 通过Database Control使用SQL Access Advisor 755 25.4.2 通过DBMS_ADVISOR 使用SQL Access Advisor 759 25.5 识别和修复无效对象和不可用对象 761 25.5.1 无效对象 761 25.5.2 不可用索引 763 25.6 Database Replay 766 25.6.1 捕获工作负荷 766 25.6.2 预处理工作负荷 767 25.6.3 启动重放 767 25.6.4 分析和报告 768 25.7 本章知识点回顾 771 25.8 自测题 773 25.9 自测题答案 776 第26章 全球化 779 26.1 全球化要求和功能 780 26.1.1 字符集 780 26.1.2 语言支持 781 26.1.3 地区支持 783 26.1.4 其他NLS设置 784 26.2 使用全球化支持功能 785 26.2.1 选择字符集 786 26.2.2 改变字符集 787 26.2.3 数据库中的全球化 787 26.2.4 实例级别的全球化 788 26.2.5 客户端环境设置 788 26.2.6 会话级别的全球化设置 790 26.2.7 语句级别的全球化设置 791 26.3 语言和时区 792 26.3.1 语言排序与选择 792 26.3.2 Locale Builder 794 26.3.3 使用时区 794 26.4 本章知识点回顾 796 26.5 自测题 797 26.6 自测题答案 799 第27章 智能基础结构 801 27.1 Enterprise Manager Support Workbench 802 27.1.1 自动诊断知识库 802 27.1.2 问题和事件 803 27.1.3 ADRCI 803 27.1.4 Support Workbench 804 27.2 补丁程序 806 27.2.1 补丁程序的类型 806 27.2.2 与MetaLink和Patch Advisor集成 806 27.2.3 应用补丁程序 807 27.3 本章知识点回顾 812 27.4 自测题 813 27.5 自测题答案 814 附录A 本书提供的OCA/OCP考试资料 817 术语表 819

2013-02-05

Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Oracle SQL高级编程》的源代码 对应的书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL 原出版社: Apress 作者: (美)Karen Morton    Kerry Osborne    Robyn Sands    Riyaj Shamsudeen    Jared Still    译者: 朱浩波 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115266149 上架时间:2011-11-9 出版日期:2011 年11月 开本:16开 页码:502 版次:1-1 主编推荐     资深Oracle专家力作,OakTable团队推荐     全面、独到、翔实,题材丰富     Oracle开发人员和DBA必备 内容简介     Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习Oracle为提升语言效率而加入的支持特性,进而将两者综合考虑并在工作中加以应用。作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:     掌握Oracle数据库中独有的SQL强大特征;     读取并理解SQL执行计划;     快速分析并改进表现欠佳的SQL;     通过提示及配置文件等来控制执行计划;     在程序中优化查询而无需改动代码。     作为Oracle SQL经典著作之一,本书为SQL开发人员指明了前行的方向,赋予了他们不断开拓的动力。 作者简介     KAREN MORTON 研究人员、教育家及顾问,Fidelity信息服务公司的资深数据库管理员和性能调优专家。她从20世纪90年代初就开始使用Oracle,从事 Oracle的教学工作也已经超过10年的时间。她是Oracle ACE,也是OakTable(Oracle社区中著名的“Oracle科学家”的非正式组织)的成员,经常在技术会议上演讲。她的著作还包括 Expert Oracle Practices和Beginning Oracle SQL,博客主页是karenmorton.blogspot.com。     KERRY OSBORNE  专注于Oracle咨询的Enkitec公司的创始人之一。从1982年开始使用Oracle(第2版)。他当过开发人员,也做过DBA,目前是 Oracle ACE总监和OakTable成员。最近几年,他专注于研究Oracle内部原理以及解决性能问题。他的博客主页是 kerryosborne.oracle-guy.com。     ROBYN SANDS 思科公司的软件工程师,为思科的客户设计开发嵌入式Oracle数据库产品。从1996年开始使用Oracle,在应用开发、大型系统实现以及性能评估方面具有丰富的经验。她是OakTable的成员,同时是Expert Oracle Practices (2010年 Apress出版)一书的合著者。     RIYAJ SHAMSUDEEN 专注于性能/数据恢复/电子商务的咨询公司OraInternals的首席数据库管理员和董事长。有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。     JARED STILL 从1994年就开始使用Oracle。他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7 致谢 -6 目录 -5 第1章 SQL核心 1 1.1 SQL语言 1 1.2 数据库的接口 2 1.3 SQL*Plus 回顾 3 1.3.1 连接到数据库 3 1.3.2 配置SQL*Plus环境 4 1.3.3 执行命令 6 1.4 5 个核心的SQL语句 8 1.5 SELECT语句 8 1.5.1 FROM子句 9 1.5.2 WHERE子句 11 1.5.3 GROUP BY子句 11 1.5.4 HAVING子句 12 1.5.5 SELECT列表 12 1.5.6 ORDERBY子句 13 1.6 INSERT语句 14 1.6.1 单表插入 14 1.6.2 多表插入 15 1.7 UPDATE语句 17 1.8 DELETE语句 20 1.9 MERGE语句 22 1.10 小结 24 第2章 SQL执行 25 2.1 Oracle架构基础 25 2.2 SGA-共享池 27 2.3 库高速缓存 28 2.4 完全相同的语句 29 2.5 SGA-缓冲区缓存 32 2.6 查询转换 35 2.7 视图合并 36 2.8 子查询解嵌套 39 2.9 谓语前推 42 2.10 使用物化视图进行查询重写 44 2.11 确定执行计划 46 2.12 执行计划并取得数据行 50 2.13 SQL执行——总览 52 2.14 小结 53 第3章 访问和联结方法 55 3.1 全扫描访问方法 55 3.1.1 如何选择全扫描操作 56 3.1.2 全扫描与舍弃 59 3.1.3 全扫描与多块读取 60 3.1.4 全扫描与高水位线 60 3.2 索引扫描访问方法 65 3.2.1 索引结构 66 3.2.2 索引扫描类型 68 3.2.3 索引唯一扫描 71 3.2.4 索引范围扫描 72 3.2.5 索引全扫描 74 3.2.6 索引跳跃扫描 77 3.2.7 索引快速全扫描 79 3.3 联结方法 80 3.3.1 嵌套循环联结 81 3.3.2 排序-合并联结 83 3.3.3 散列联结 84 3.3.4 笛卡儿联结 87 3.3.5 外联结 88 3.4 小结 94 第4章 SQL是关于集合的 95 4.1 以面向集合的思维方式来思考 95 4.1.1 从面向过程转变为基于集合的思维方式 96 4.1.2 面向过程vs.基于集合的思维方式:一个例子 100 4.2 集合运算 102 4.2.1 UNION和UNION ALL 103 4.2.2 MINUS 106 4.2.3 INTERSECT 107 4.3 集合与空值 108 4.3.1 空值与非直观结果 108 4.3.2 集合运算中的空值行为 110 4.3.3 空值与GROUP BY和ORDER BY 112 4.3.4 空值与聚合函数 114 4.4 小结 114 第5章 关于问题 116 5.1 问出好的问题 116 5.2 提问的目的 117 5.3 问题的种类 117 5.4 关于问题的问题 119 5.5 关于数据的问题 121 5.6 建立逻辑表达式 126 5.7 小结 136 第6章 SQL执行计划 137 6.1 解释计划 137 6.1.1 使用解释计划 137 6.1.2 理解解释计划可能达不到目的的方式 143 6.1.3 阅读计划 146 6.2 执行计划 148 6.2.1 查看最近生成的SQL语句 149 6.2.2 查看相关执行计划 149 6.2.3 收集执行计划统计信息 151 6.2.4 标识SQL语句以便以后取回计划 153 6.2.5 深入理解DBMS_XPLAN的细节 156 6.2.6 使用计划信息来解决问题 161 6.3 小结 169 第7章 高级分组 170 7.1 基本的GROUP BY用法 171 7.2 HAVING子句 174 7.3 GROUP BY的“新”功能 175 7.4 GROUP BY的CUBE扩展 175 7.5 CUBE的实际应用 179 7.6 通过GROUPING()函数排除空值 185 7.7 用GROUPING()来扩展报告 186 7.8 使用GROUPING_ID()来扩展报告 187 7.9 GROUPING SETS与ROLLUP() 191 7.10 GROUP BY局限性 193 7.11 小结 196 第8章 分析函数 197 8.1 示例数据 197 8.2 分析函数剖析 198 8.3 函数列表 199 8.4 聚合函数 200 8.4.1 跨越整个分区的聚合函数 201 8.4.2 细粒度窗口声明 201 8.4.3 默认窗口声明 202 8.5 Lead和Lag 202 8.5.1 语法和排序 202 8.5.2 例1:从前一行中返回一个值 203 8.5.3 理解数据行的位移 204 8.5.4 例2:从下一行中返回一个值 204 8.6 First_value和Last_value 205 8.6.1 例子:使用First_value来计算最大值 206 8.6.2 例子:使用Last_value来计算最小值 207 8.7 其他分析函数 207 8.7.1 Nth_value(11gR2) 207 8.7.2 Rank 209 8.7.3 Dense_rank 210 8.7.4 Row_number 211 8.7.5 Ratio_to_report 211 8.7.6 Percent_rank 212 8.7.7 Percentile_cont 213 8.7.8 Percentile_disc 215 8.7.9 NTILE 215 8.7.10 Stddev 216 8.7.11 Listagg 217 8.8 性能调优 218 8.8.1 执行计划 218 8.8.2 谓语 219 8.8.3 索引 220 8.9 高级话题 221 8.9.1 动态SQL 221 8.9.2 嵌套分析函数 222 8.9.3 并行 223 8.9.4 PGA大小 224 8.10 组织行为 224 8.11 小结 224 第9章 Model子句 225 9.1 电子表格 225 9.2 通过Model子句进行跨行引用 226 9.2.1 示例数据 226 9.2.2 剖析Model子句 227 9.2.3 规则 228 9.3 位置和符号引用 229 9.3.1 位置标记 229 9.3.2 符号标记 230 9.3.3 FOR循环 231 9.4 返回更新后的行 232 9.5 求解顺序 233 9.5.1 行求解顺序 233 9.5.2 规则求解顺序 235 9.6 聚合 237 9.7 迭代 237 9.7.1 一个例子 238 9.7.2 PRESENTV与空值 239 9.8 查找表 240 9.9 空值 242 9.10 使用Model子句进行性能调优 243 9.10.1 执行计划 243 9.10.2 谓语前推 246 9.10.3 物化视图 247 9.10.4 并行 249 9.10.5 Model子句执行中的分区 250 9.10.6 索引 251 9.11 子查询因子化 252 9.12 小结 253 第10章 子查询因子化 254 10.1 标准用法 254 10.2 SQL优化 257 10.2.1 测试执行计划 257 10.2.2 跨多个执行的测试 260 10.2.3 测试查询改变的影响 263 10.2.4 寻找其他优化机会 266 10.2.5 将子查询因子化应用到PL/SQL中 270 10.3 递归子查询 273 10.3.1 一个CONNECT BY的例子 274 10.3.2 使用RSF的例子 275 10.3.3 RSF的限制条件 276 10.3.4 与CONNECT BY的不同点 276 10.4 复制CONNECT BY的功能 277 10.4.1 LEVEL伪列 278 10.4.2 SYS_CONNECT_BY_PATH函数 279 10.4.3 CONNECT_BY_ROOT运算符 281 10.4.4 CONNECT_BY_ISCYCLE伪列和NOCYCLE参数 284 10.4.5 CONNECT_BY_ISLEAF伪列 287 10.5 小结 291 第11章 半联结和反联结 292 11.1 半联结 292 11.2 半联结执行计划 300 11.3 控制半联结执行计划 305 11.3.1 使用提示控制半联结执行计划 305 11.3.2 在实例级控制半联结执行计划 308 11.4 半联结限制条件 310 11.5 半联结必要条件 312 11.6 反联结 312 11.7 反联结执行计划 317 11.8 控制反联结执行计划 326 11.8.1 使用提示控制反联结执行计划 326 11.8.2 在实例级控制反联结执行计划 327 11.9 反联结限制条件 330 11.10 反联结必要条件 333 11.11 小结 333 第12章 索引 334 12.1 理解索引 335 12.1.1 什么时候使用索引 335 12.1.2 列的选择 337 12.1.3 空值问题 338 12.2 索引结构类型 339 12.2.1 B-树索引 339 12.2.2 位图索引 340 12.2.3 索引组织表 341 12.3 分区索引 343 12.3.1 局部索引 343 12.3.2 全局索引 345 12.3.3 散列分区与范围分区 346 12.4 与应用特点相匹配的解决方案 348 12.4.1 压缩索引 348 12.4.2 基于函数的索引 350 12.4.3 反转键索引 353 12.4.4 降序索引 354 12.5 管理问题的解决方案 355 12.5.1 不可见索引 355 12.5.2 虚拟索引 356 12.5.3 位图联结索引 357 12.6 小结 359 第13章 SELECT以外的内容 360 13.1 INSERT 360 13.1.1 直接路径插入 360 13.1.2 多表插入 363 13.1.3 条件插入 364 13.1.4 DML错误日志 364 13.2 UPDATE 371 13.3 DELETE 376 13.4 MERGE 380 13.4.1 语法和用法 380 13.4.2 性能比较 383 13.5 小结 385 第14章 事务处理 386 14.1 什么是事务 386 14.2 事务的ACID属性 387 14.3 事务隔离级别 388 14.4 多版本读一致性 390 14.5 事务控制语句 391 14.5.1 Commit(提交) 391 14.5.2 Savepoint(保存点) 391 14.5.3 Rollback(回滚) 391 14.5.4 Set Transaction(设置事务) 391 14.5.5 Set Constraints(设置约束) 392 14.6 将运算分组为事务 392 14.7 订单录入模式 393 14.8 活动事务 399 14.9 使用保存点 400 14.10 序列化事务 403 14.11 隔离事务 406 14.12 自治事务 409 14.13 小结 413 第15章 测试与质量保证 415 15.1 测试用例 416 15.2 测试方法 417 15.3 单元测试 418 15.4 回归测试 422 15.5 模式修改 422 15.6 重复单元测试 425 15.7 执行计划比较 426 15.8 性能测量 432 15.9 在代码中加入性能测量 432 15.10 性能测试 436 15.11 破坏性测试 437 15.12 通过性能测量进行系统检修 439 15.13 小结 442 第16章 计划稳定性与控制 443 16.1 计划不稳定性:理解这个问题 443 16.1.1 统计信息的变化 444 16.1.2 运行环境的改变 446 16.1.3 SQL语句的改变 447 16.1.4 绑定变量窥视 448 16.2 识别执行计划的不稳定性 450 16.2.1 抓取当前所运行查询的数据 451 16.2.2 查看一条语句的性能历史 452 16.2.3 按照执行计划聚合统计信息 454 16.2.4 寻找执行计划的统计方差 454 16.2.5 在一个时间点附近检查偏差 456 16.3 执行计划控制:解决问题 458 16.3.1 调整查询结构 459 16.3.2 适当使用常量 459 16.3.3 给优化器一些提示 459 16.4 执行计划控制:不能直接访问代码 466 16.4.1 选项1:改变统计信息 467 16.4.2 选项2:改变数据库参数 469 16.4.3 选项3:增加或移除访问路径 469 16.4.4 选项4:应用基于提示的执行计划控制机制 470 16.4.5 大纲 470 16.4.6 SQL概要文件 481 16.4.7 SQL执行计划基线 496 16.4.8 基于提示的执行计划控制机制总结 502 16.5 结论 502 媒体评论     本书作者全部是OakTable的成员,且具有15~29年丰富的Oracle开发经验。在研究一些被其他专门讨论Oracle SQL语言的参考书直接忽略的问题时,这种对Oracle数据库的长期钻研无疑是一个巨大的优势。     ——亚马逊读者评论 精彩内容     SQL核心     凯伦?莫顿(Karen Morton)     不管你是刚开始写SQL语句还是已经写过很多年了,学会写出“好的”SQL这个过程都需要具有很扎实的SQL核心语法和概念基础知识。本章对SQL语言的核心概念及其性能做了回顾,同时还描述了一些你应该已经很熟悉的常用SQL命令。对于那些以前曾经使用过SQL并且基础知识相当牢靠的读者来说,本章就是一个简要的复习,让你为后面更详细的SQL论述做好准备。如果你是一位SQL新人,你可能想要先阅读Beginning Oracle SQL这本书以确保掌握SQL的基础。不管是哪种情况,第1章的目的就是通过对5个核心SQL语句的快速浏览来衡量一下你的SQL水平,同时还概述了我们用来执行SQL语句的工具:SQL*Plus。     1.1  SQL语言     SQL语言最早是IBM公司于20世纪70年代开发出来的,称为结构化英文查询语言,简称为SEQUEL。该语言是基于E.F.Codd在1969年提出的关系型数据库管理系统(RDBMS)的。后来因为商标的纠纷,其简称又进一步缩写为SQL。1986年和1987年,ANSI(美国国家标准化组织)和ISO(国际标准化组织)先后将SQL语言采纳为标准语言。而人们并不熟悉的是,ANSI官方曾将SQL语言的读音确定为“S-Q-L”。绝大多数人,包括我本人,都还在使用“sequel”的读音,只是因为这样读起来更顺口一些。     SQL的目的就是简单地提供一个到数据库的接口,在本书指的是Oracle数据库。每一条SQL语句对于数据库来说就是一条命令或指令。SQL与其他编程语言(如C或Java)的区别就在于它是要处理数据集合而不是一行一行的数据。语言本身也不需要你提供如何导航到数据的指令——这是在后台透明地进行的。但你将在后面的章节中看到,如果想在Oracle中写出高效的SQL语句,了解数据及其在数据库中的存储方式与存储位置是很重要的。     由于不同的供应商(例如甲骨文、IBM和微软)实现SQL核心功能的机制相差无几,所以基于某一种数据库所学的技巧同样可以应用到其他类型的数据库上。你基本上可以利用同样的SQL语句来进行数据的查询、插入、更新和删除,以及创建、修改和删除对象,而不必管数据库的供应商是哪家。     尽管SQL是各种关系型数据库管理系统的标准语言,但实际上它并不一定是关系型的。在本书后面我将就这一点稍作扩展。如果想要了解更多的细节,我推荐大家阅读C.J.Date的SQL and Relational Theory一书。需要铭记于心的一点是SQL语言并不总是严格遵守关系模型的——它根本就没有实现关系模型的某些要素,同时还不恰当地实现了一些要素。事实上,既然SQL是基于关系模型的,那么要想写出尽可能正确高效的SQL语句,你不仅必须要理解SQL语言,还要理解关系模型。     1.2  数据库的接口     多年以来人们开发出多种途径来传递SQL语句到数据库并获得结果。Oracle数据库的本地接口界面是Oracle调用界面(OCI)。OCI将由Oracle内核传送而来的查询语句发送到数据库。当使用某种Oracle工具如SQL*Plus或者SQL Developer时,你都在使用OCI。其他的Oracle工具如SQL*Loader、数据泵(Data Pump)以及Real Application Testing (RAT)既使用OCI,也可以使用语言特定的接口,如Oracle JDBC-OCI、ODP.Net、Oracle预编译器、Oracle ODBC以及Oracle C++调用接口(OCCI)驱动器。     当使用编程语言(如COBOL或C语言)时,你所写的语句被称为嵌入式的SQL语句并且在应用程序编译之前会由SQL预处理器进行预处理。代码清单1-1是一段可以在C/C++程序块中使用的SQL语句的例子。     代码清单1-1  C/C++程序块中所嵌入的SQL语句     其他工具,例如SQL*Plus和SQL Developer,都是交互式的工具。你输入并执行命令,然后获得相应的输出。交互式工具并不需要在运行代码前先精确编译,你只需要输入想要执行的命令即可。代码清单1-2是一段使用SQL*Plus执行语句的例子。     代码清单1-2  使用SQL*Plus执行SQL语句     在本书中,为了保持一致性我们所用的示例代码清单都使用SQL*Plus工具,但需要记住的是,不管你是用什么方法或工具来输入和执行SQL语句,所有的事情最后都要通过OCI来传递到数据库。这里的主旨就是不管你所使用的是什么工具,其本地接口都是一样的。     1.3  SQL*Plus回顾     SQL*Plus是一个不管采用哪个安装平台(Windows或Unix)都会提供的命令行工具。它是一个用来输入和执行SQL语句并显示输出结果的纯文本环境。用该工具可以直接输入、编辑命令,可以一条条地保存和执行命令或者通过脚本文件来进行,然后将输出结果以很精美格式的报表输出。要启动SQL*Plus你只需要在主机的命令提示符后敲入sqlplus即可。     1.3.1  连接到数据库     有多种方法可以通过SQL*Plus连接数据库。然而在连接之前,你还需要在$ORACLE_HOME/ network/admin/tnsnames.ora这个文件中登记想要连接的数据库。有两种通常使用的方法,或者如代码清单1-3所示那样在启动SQL*Plus时提供连接信息,或者如代码清单1-4所示那样在启动SQL*Plus以后使用connect命令。     代码清单1-3  通过窗口命令提示符连接到SQL*Plus     如果想要启动SQL*Plus而又不显示登录到数据库后的提示,可以在启动SQL*Plus时使用/nolog选项。     代码清单1-4  通过SQL>提示符连接SQL*Plus并登录到数据库     1.3.2  配置SQL*Plus环境     SQL*Plus有很多的命令可以让你来定制工作环境和显示选项。代码清单1-5所示是在SQL>提示符下输入help index命令后显示出来的可用的命令。     代码清单1-5  SQL*Plus命令列表     set命令是用来定制工作环境的最基本的命令。代码清单1-6为set命令的帮助文本。     代码清单1-6  SQL*Plus的SET命令     有了上面这些可用命令,你就能够很轻松地定制最适合你的运行环境了。但有一点要铭记于心的就是当你退出或关闭SQL*Plus的时候,这些设置命令就不再被保留了。为了避免每次使用SQL*Plus时都重新敲入一遍这些设置命令,你可以创建一个login.sql文件。事实上每次启动SQL*Plus的时候它都会默认去读两个文件。第一个是$ORACLE_HOME/sqlplus/admin目录下的glogin.sql文件。如果找到了这个文件,它就会被读进来,文件中的命令语句也会被执行。这样就可以把那些定制你的会话体验的SQL*Plus命令和SQL语句保存起来。     在读取glogin.sql文件以后,SQL*Plus会进一步寻找login.sql文件。这个文件必须在SQL*Plus的启动文件夹中或者包含在环境变量SQLPATH所指向的文件夹路径中。在login.sql文件中的所有命令优先级都比glogin.sql文件中的命令高。从10g开始,Oracle在每次你启动SQL*Plus或者从SQL*Plus里执行connect命令的时候都会同时去读取glogin.sql和login.sql这两个文件。在Oracle 10g之前,login.sql脚本文件只有在SQL*Plus启动的时候才会被执行。代码清单1-7是一个常见的login.sql文件内容。     代码清单1-7  一个常见的login.sql文件     注意这里在SET SQLPROMPT中使用的变量_user和_connect_identifier。它们是预定义变量的两个示例。你可以在login.sql文件中或者任何你创建的脚本文件中使用下面这些预定义变量:     ·_connect_identifier     ·_date     ·_editor(这个变量指定了当你使用edit命令的时候启动哪个编辑器)     ·_o_version     ·_o_release     ·_privilege     ·_sqlplus_release     ·_user     1.3.3  执行命令     有两种命令可以在SQL*Plus中执行:SQL语句和SQL*Plus命令。代码清单1-5和代码清单1-6中所列出的SQL*Plus命令对于SQL*Plus来说是特有的命令,可以用来定制运行环境并且可以运行SQL*Plus特有的命令,例如DESCRIBE和CONNECT。要想执行一个SQL*Plus命令,你只需在命令提示符后输入该命令然后敲回车,命令会自动被执行。另一方面,如果要执行SQL语句,就必须使用一个特定字符来表明你想要执行输入的语句,分号(;)或者斜线(/)都可以。使用分号的话可以直接放在输入命令的后面或者放在接下来的空行中,而斜线则必须放在接下来的空行中才可以被识别。代码清单1-8展示了如何使用这两种符号。     代码清单1-8  执行字符的用法     注意第5个在语句最后面加了一个斜线(/)的例子。光标移动到了下一行而不是立即执行语句命令。接下来,如果你再按一下回车键,语句就会被放入SQL*Plus的缓冲器中,但是也不执行。如果想要查看SQL*Plus缓冲器中的内容,可以使用list命令(也可以简写为l)。接下来如果你想在缓冲器中通过使用斜线(/)来执行语句[尽管斜线(/)命令本来就是这样来用的]在这里也将会返回一个错误。这是因为你最初在SQL语句的结尾敲入了一个斜线(/),而斜线(/)并不是一个有效的SQL命令,从而在语句想要执行的时候报错。     另外一种执行命令的方法是把命令放到一个文件中。你可以在SQL*Plus之外直接用文本编辑器生成这些文件,也可以在SQL*Plus中使用EDIT命令来直接调用编辑器。如果已经有了一个文件,EDIT命令可以打开这个文件,如果没有的话就会创建新的文件。文件必须放在默认文件夹中,否则你必须指定文件的全路径。想要设定所选择的编辑器,你只需要利用命令define_ editor='//myeditor.exe'来设置预定义变量_editor。具有.sql扩展名的文件在执行的时候不必敲入扩展名,通过@或START命令都可以执行。代码清单1-9中列出了这两个命令的用法。     代码清单1-9  执行.sql脚本文件     SQL*Plus具有很多特性和选项,以致于多得在这里不能一一列举。就本书需要而言,这种概述就已经足够了。但是,Oracle文档对SQL*Plus的用法给出了指导,而且很多的书,比如Beginning Oracle SQL,都对SQL*Plus作了更为深入的阐述,如果感兴趣你可以参考。     1.4  5个核心的SQL语句     SQL语言有很多不同的语句,但在整个职业生涯中,你可能只会用到其中很少的一部分。不过你所使用的几乎其他任何产品不也是这样的吗?据说有一个统计结果是,绝大多数人都仅使用了他们常用的软件产品或编程语言所有功能的20%甚至更少。我不知道这个统计真实与否,但以我的经验来看,这似乎是很准确的。我发现同样的基本SQL语句格式在大多数应用中使用了将近20年了。极少数的人使用过SQL提供的所有功能——即使对于那些他们确实经常使用的功能也常常用得不是很恰当。显而易见,我们不可能覆盖SQL语言的所有语句以及它们的选项。本书的目的在于让你能够深入理解那些最常用的SQL语句并帮助你更高效地使用它们。     在本书中,我们将重点讨论5个最常用的SQL语句,它们分别为SELECT、INSERT、UPDATE、DELETE以及MERGE。尽管这些核心语句都将逐个讲解,但重中之重还是SELECT语句。将这5个语句用好了将会为你在日常工作中用好SQL语言打下坚实的基础。     1.5  SELECT语句     SELECT语句用来从一个或多个表中或者其他数据库对象中提取数据。你应该已经很熟悉SELECT语句的基础知识了,所以我将不再从一个初学者的角度来介绍SELECT语句,而是首先回顾一下SELECT语句的执行逻辑。对于如何来写一个基本的SELECT语句你应该已经学习过了,但为了培养基本的思维模式,你要一直写出符合语法规则的高效SQL语句,你需要理解SQL语句是如何执行的。     一个查询语句在逻辑上的处理方式可能会与实际物理处理过程大相径庭。Oracle基于查询成本的优化器(cost-based optimizer , CBO)用来产生实际的执行计划。我们在后面的章节中将会讲解优化器是干什么的,如何来实现其功能的以及为什么要进行优化。目前,我们需要关心的是优化器将会决定如何访问表、按照什么样的顺序来处理它们,以及如何将多个表联结起来及如何使用筛选器。查询的处理在逻辑上是按照特定的顺序进行的,但是,优化器所选择的物理执行计划可能会按照完全不同的顺序来实际执行这些步骤。代码清单1-10是一段包含SELECT语句的主要子句的查询片段,在其中标出了每一个子句的逻辑处理顺序。     代码清单1-10  查询语句的逻辑处理顺序     你应该立刻注意到SQL有别于其他编程语言的一点在于首先处理的并不是写在第一行的语句(SELECT语句),而是FROM子句。注意在这个代码清单中我给出了两个不同的FROM子句。标记为1.1的那个FROM子句表示的是当使用ANSI语法时的不同。我们可以把处理过程中的每一个步骤想象为生成一个临时的数据集。随着每个处理步骤的进行,这个数据集被不断地操作直到生成最终的处理结果。查询返回给调用者的就是这个最终结果数据集。     为了更详细地了解SELECT语句的每个部分,你可以参考代码清单1-11所示的查询语句,该语句返回的结果集为下订单超过4次的女顾客的列表。     代码清单1-11  下订单超过4次的女顾客查询语句     1.5.1  FROM子句     FROM子句列出了所查询数据的源对象。这个子句可以包含表、视图、物化视图、分区或子分区,或者你可以建立一个子查询来生成子对象。如果使用了多个源对象,其逻辑处理阶段也将会应用到每一个联结类型以及谓词ON(如步骤1.1所示)。在本书后面的章节中你将会进一步了解联结类型的更多细节,但注意在处理联结语句的时候是按照下面的顺序来进行的:     (1) 交叉联结,也称为笛卡儿乘积;     (2) 内联结;     (3) 外联结。     在代码清单1-11所示的查询例子中,FROM子句列出了两张表:customers和orders,通过customer_id列来联结。因此,当处理这一信息时,FROM子句所生成的初始数据集将会包含这两张表中customer_id相匹配的行。在本例中结果集将会包含105行。为了验证这一点,只要执行例子中的前4行,如代码清单1-12所示。     代码清单1-12  仅通过FROM子句的部分查询语句的执行     注意 为了使之很好地适应页面我手工调整了输出结果,实际输出结果在页面上超过105行。     1.5.2  WHERE子句     WHERE子句提供了一种方法,可以按照条件来限制查询最终返回结果集的行数。每个条件或者谓语都是以两个值或表达式相比较的形式出现的。比较的结果要么是匹配(值为TRUE)要么是不匹配(值为FALSE)。如果比较的结果是FALSE,那么相应的行不会被包含在最终结果集中。     这里我需要稍微偏离一下主题,来谈一谈与这一步相关的SQL中的一个重要方面。事实上,SQL中逻辑比较的可能结果是TRUE、FALSE以及未知。当其中包含空值(null)的时候比较的结果就会是未知。空值与任何值比较或者用在表达式中都会得到空值,或者是未知。一个空值代表一个相应值的缺失,并且可能因为SQL语言中的不同部分对空值的处理不同而令人费解。关于空值是如何影响SQL语句执行的话题将会贯穿本书,但在这里我不得不先提及一下这个话题。我之前所说的还是基本正确的,一个比较的返回值将会是TRUE或者FALSE。你会发现当进行筛选的比较条件中包含空值的时候,将作为FALSE来对待。     在我们的例子中,只有一个将结果限定为下了订单的女性消费者的谓语。如果你查看FROM子句执行之后的中间结果(见代码清单1-12),你会发现105行中仅有31行是由女性消费者所下的订单(gender = 'F')。因此,在应用了WHERE子句以后,中间结果集将从105行减少到31行。     应用WHERE子句以后得到了更精确的结果集。注意,在这里使用的是“精确的结果集”。我的意思是说现在已经得到了能够满足你查询需求的数据行。其他子句(GROUP BY, HAVING)也许可以用来聚合并且进一步限制调用程序会接收到的最终的结果集,但需要注意的很重要的一点是,目前已经得到了查询计算最终结果所需的所有数据。     WHERE子句的目的是限制或者减小结果集。你所使用的限制条件越少,最终返回的结果集中包含的数据就会越多。你需要返回的数据越多,执行查询的时间也就越长。     1.5.3  GROUP BY子句     GROUP BY子句将执行FROM和WHERE子句后得到的经过筛选后的结果集进行聚合。查询出来的结果按照GROUP BY子句中列出的表达式进行分组,来为每一个分组得出一行汇总结果。你可以按照FROM子句中所列出对象的任意字段进行分组,即使你并不想在输出结果列表中显示该列。相反,Select列表中的任何非聚合字段都必须包括在GROUP BY表达式中。     GROUP BY子句中还可以包含两个附加的运算:ROLLUP 和CUBE。ROLLUP运算用来产生部分求和值,CUBE运算用来求得交互分类值。当你使用这两种运算中任意一个的时候,你将会得到不止一行的汇总信息。在第7章中将会对这两个运算进行更详细的讨论。     在示例查询中,需要按照customer_id来进行分组。这就意味着对于每一个唯一的customer_id只会返回一行值。在WHERE子句执行后所得到的代表下订单的女性消费者的31行订单中,有11个独特的customer_id值,如代码清单1-13所示。     代码清单1-13  截至GROUP BY子句的部分查询执行     你会发现查询的结果是经过分组的,但并没有排序。表面上看结果好像是按照order_ct字段排序的,但这仅仅是个巧合而不是确定的行为。需要记住的很重要的一点是:GROUP BY子句并不确定结果数据的排序。如果你需要结果按照特定的顺序排列,则必须指定一个order by子句。     1.5.4  HAVING子句     HAVING子句将分组汇总后的查询结果限定为只有该子句中的条件为真的数据行。除非你使用HAVING子句,否则将返回所有的汇总行。事实上,GROUP BY子句和HAVING子句的位置是可以互换的,谁先谁后都无关紧要。但是,似乎在编码中将GROUP BY子句放在前面更有意义一些,因为GROUP BY子句在逻辑上是先执行的。从本质上来说,HAVING子句是在GROUP BY子句执行后用来筛选汇总值的第二个WHERE子句。     在我们的查询例子中,HAVING子句HAVING COUNT(o.order_id) > 4,将分组数据从11行减少到2行。这一点你可以通过查看GROUP BY子句应用后返回的结果行来确认,如代码清单1-13所示。注意仅有146和147号消费者所下的订单数超过4次。这样就产生了组成最终结果集的两行数据。     1.5.5  SELECT列表     SELECT列表列出查询的返回最终结果集中需要显示哪些列。这些列可以是数据表中一个实际的列、一个表达式,或者甚至是一个SELECT语句的结果,如代码清单1-14所示。     代码清单1-14  展现SELECT列表各种可能情况的查询实例     SQL> select.customer_id, c.cust_first_name||''||c.cust_last_name,     .     当使用另外一个SELECT语句来产生结果中的一列的值的时候,这个查询必须只能返回一行一列的值。这种类型的子查询被称为标量子查询。尽管这可能是一个非常有用的语法,但需要牢记于心的是标量查询在结果集中的每一行结果产生时都要执行一遍。在某些情况下可以进行优化以减少标量子查询的重复执行,但更糟糕的场景是每一行都需要标量子查询执行。你可以想象如果你的结果集中有几千行甚至上百万行数据的时候所需要付出的查询代价!在后面的章节中我们还将回顾标量子查询并讨论如何更好地来使用它们。     在SELECT列表中你还有可能用到的一个选项是DISTINCT子句。在例子中并没有使用它,但我想要简要地提及一下。DISTINCT子句用来在其他子句执行完毕以后从结果集中去除重复的行。     SELECT列表执行完以后,你就得到了最终的查询结果集。所剩的唯一需要做的事情,如果包含了的话,就是将查询结果集按照所需的顺序排序。     1.5.6  ORDER BY子句     ORDER BY子句用来对查询最终返回的结果集进行排序。在本例中,需要按照orders_ct和customer_id进行排序。orders_ct这一列是通过GROUP BY子句中的COUNT聚合函数计算得到的值。如代码清单1-13中所示,有两个消费者的订单超过4个。由于这两个消费者的订单数都是5份,orders_ct这一列的值是相同的,所以要由第二个排序列来确定最终结果的显示顺序。如代码清单1-15中所示,该查询的最终经过排序的输出结果是按照customer_id排序的两行数据集。     代码清单1-15  示例查询的最终输出     当输出结果需要排序的时候,Oracle必须在其他所有子句都执行完之后按照指定的顺序对最终结果集进行排序。需要排序的数据量大小是非常重要的。我这里所说的大小是指结果集中所包含的总字节数。你可以通过用行数乘以每一行的字节数来估计数据集的大小。每行所包含的字节数通过将选择列表中包含的每一列的平均长度相加来确定。     上面的查询实例在选择列表中仅需要列出customer_id 和orders_ct两列的值。我们可以估算每一行输出值的字节数为10。在第6章中我将阐述从哪里能找到优化器所估计的值。因此,如果我们在结果集中只有两行数据,排序的大小实际上是很小的,大约20字节。请记住这仅仅是估算,但这样的估算也是很重要的。     较小的排序会完全在内存中来实现,而较大的排序将不得不使用临时磁盘空间来完成。如你可能推断的那样,在内存中完成的排序比必须使用磁盘的排序要快。因此,当优化器估算排序数据的影响时,它必须要考虑排序数据集的大小,以此来调整如何能够以最有效的方法来获得查询的结果。一般来说,排序是查询过程中开销相当大的一个处理步骤,尤其是当返回结果集很大的时候。     1.6  INSERT语句     INSERT语句用来向表、分区或视图中添加行。可以向单表或者多个表方法中添加数据行。单表插入将会向一个表中插入一行数据,这行数据可以显式地列出插入值也可以通过一个子查询来获取。多表插入将会向一个或多个表中插入行,并且会通过子查询获取值来计算所插入行的值。     1.6.1  单表插入     代码清单1-16中的第一个例子阐明了使用values子句实现的单表插入。每一列的值都显式地输入。如果你要插入表中所定义的所有列的值,那么列的列表是可选的。但是,如果你只想提供部分列的值,则必须在列的列表中指明所需的列名。好的做法是不管是不是需要插入所有列的值,都把所有列的列表列出来。这样做就像该语句的自述文件一样,并且也可以减少将来别人要插入一个新列到表中的时候可能出现的错误。     代码清单1-16  单表插入     第二个例子阐述了通过子查询来实现插入。这是插入数据行的一个非常灵活的选项。所写的子查询可以返回一行或多行数据。返回的每一行都会用来生成需要插入的新行的列值。根据你的需要这个子查询可以很简单也可以很复杂。在本例中,我们使用子查询实现了在现有薪水的基础上为每一位员工发放10%奖金的计算。事实上奖金表包含4列,但在这个插入中我们只列出了3个字段。comm这一列在子查询中并没有占据一列并且我们也没有将它包括在列表中。因为我们没有包含这一列,它的值将会是null。注意如果comm列具有非空约束,那么可能已返回一个约束错误,语句的执行也已失败。     1.6.2  多表插入     代码清单1-17所示的多表插入的例子阐明了一个子查询返回的数据行是如何被用来插入多个表中的。我们从3个表开始:small_customers、medium_customers以及large_customers。我们想要按照每位消费者所下订单的总金额来将数据分别插入这些表。子查询将每一位消费者的order_total列求和来确定该消费者的消费金额是小(所有订单的累加金额小于10 000美元)、中等(介于10 000美元与99 999.99美元之间)还是大(大于等于100 000美元),然后按照条件将这些行插入对应的表中。     代码清单1-17  多表插入     注意INSERT关键字后面ALL子句的使用。当指定了ALL子句的时候,这个语句就会执行无条件的多表插入。也就意味着每一个WHEN子句按照子查询所返回的每一行来确定值而不管前一个条件的输出结果是什么。因此,你需要注意如何来指定每个条件。例如,如果我使用WHEN sum_orders < 100 000这个条件而不是像上面一样列出范围,插入medium_customers表中的行有可能也会插入small_customers表中。     你需要指明FIRST选项来实现每一个WHEN子句按照其出现在语句中的顺序进行评估,并且对于一个给定的子查询行跳过接下来的WHEN子句评估。关键在于要记住哪一个选项能够更好地满足你的需要,ALL还是FIRST,然后使用最适合的选项。     1.7  UPDATE语句     UPDATE语句的作用是改变表中原有行的列值。这个语句的语法由3部分组成:UPDATE、SET和WHERE。UPDATE子句用来指定要更新的表,SET子句用来指明哪些列改变了以及调整的值,WHERE子句用来按条件筛选需要更新的行。WHERE子句是可选的,如果忽略了这个子句的话,更新操作将针对指定表中的所有行进行。     代码清单1-18列出了几种UPDATE语句的不同写法。首先,我建立了一个employees表的副本,名称为employees2,然后我将执行几个完成基本相同任务的不同更新操作:将90部门的员工工资增加10%。在例5中,commission_pct这一列也进行了更新。下面就是采用的不同方法。     例1:使用表达式更新一个单列的值。     例2:通过子查询更新一个单列的值。     例3:通过在WHERE子句中使用子查询确定要更新的数据行来更新单列的值。     例4:通过使用SELECT语句定义表及列的值来更新表。     例5:通过子查询更新多列。     代码清单1-18  UPDATE语句的例子     1.8  DELETE语句     DELETE语句用来从表中移除数据行。该语句的语法结构由3部分组成:DELETE、FROM和WHERE。DELETE关键字是单独列出的。除非你决定使用我们后面将会讨论到的提示(hint),没有其他选项与DELETE关键字相结合。FROM子句用来指定要从哪个表中删除数据行。如代码清单1-19中的例子所示,这个表可以直接指定也可以通过子查询来确定。WHERE子句提供筛选条件有助于确定哪些行是要删除的。如果忽略了WHERE子句,删除操作将删除指定表中的所有数据行。     代码清单1-19展示出了DELETE语句的几种不同写法。注意,在这些例子中我使用了代码清单1-18中创建的employees2表。下面你将看到的就是这些不同的删除方法。     例1:使用WHERE子句中的筛选条件来从指定表中删除行。     例2:使用FROM子句中的子查询来删除行。     例3:使用WHERE子句中的子查询来从指定表中删除行。     代码清单1-19  DELETE语句的例子     1.9  MERGE语句     MERGE语句具有按条件获取要更新或插入到表中的数据行,然后从1个或多个源头对表进行更新或者向表中插入行两方面的能力。它最经常被用在数据仓库中来移动大量的数据,但它的应用不仅限于数据仓库环境下。这个语句提供的一个很大的附加值在于你可以很方便地把多个操作结合成一个。这就使你可以避免使用多个INSERT、UPDATE以及DELETE语句。并且,在本书后面的内容中你将看到,如果你避免去做那些不是必须做的事情,响应时间可能得到相应的改善。     MERGE语句的语法是:     为了说明MERGE语句的用法,代码清单1-20展示出了如何建立一个测试表,然后恰当地利用MERGE条件来向表中插入或更新行。     代码清单1-20  MERGE语句例子     MERGE语句完成了下面这些事情。     ·插入了两行(员工id 106和107)。     ·更新了一行(员工id 105)。     ·删除了一行(员工id 103)。     ·一行保持不变(员工id 104)。     如果没有MERGE语句,你必须最少写3条不同的语句来完成同样的事情。     1.10  小结     正如你可以从到目前为止的例子中看出的,SQL语言提供了很多不同的选择来得到同样的结果集。你可能还注意到了一点就是这5个核心的SQL语句都可以使用类似的构造,例如子查询。关键是需要搞清楚在各种不同的使用场景下哪种构造是最高效的。我们将在本书后面的内容中阐述如何做到这一点。     如果你对本章的例子的理解有任何困难,请一定花点时间复习Beginning Oracle SQL或者Oracle文档中的SQL Reference Guide。在本书中接下来的部分我们假设你已经很好地理解了5个核心SQL语句的基本构造:SELECT、INSERT、UPDATE、DELETE和MERGE。

2013-02-04

Oracle Database 11g完全参考手册--源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Oracle Database 11g完全参考手册》的源代码 对应的书籍资料见: Oracle Database 11g完全参考手册:http://download.csdn.net/detail/fksec/5049822 特别说明:该版本是目前网络上最全的版本:修正了所有缺页和错页的问题。 基本信息 原书名: Oracle Database 11g The Complete Reference 原出版社: McGraw-Hill Osborne Media 作者: (美)Kevin Loney 译者: 刘伟琴 张格仙 出版社:清华大学出版社 ISBN:9787302221920 上架时间:2010-5-26 出版日期:2010 年6月 开本:16开 页码:1240 版次:1-1 内容简介   本书全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有新增功能和工具,如何执行功能强大的SQL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象-关系数据库。通过学习本书,您可以了解如何实现最新的安全措施,如何调优数据库性能,如何部署网格计算技术。附录部分内容丰富、便于参照,包括Oracle命令、关键字、功能以及函数等。    作译者 作者   Kevin Loney是Oracle数据库设计、开发、管理和调整方面的国际知名专家。作为金融界的一名企业数据库架构师,2002年他被Oracle Magazine提名为年度顾问。他的畅销书包括《Oracle Database 11g DBA手册》、Oracle Advanced Tuning and Administration和Oracle SQL&PL;/SQL Annotated Archives。他也为业界的多种杂志撰写了很多技术文章。他经常以贵宾身份出席在北美和欧洲举办的Oracle用户大会。 目录 封面 -19 封底 -18 书名 -17 版权 -16 致谢 -15 目录 -13 第Ⅰ部分 关键的数据库概念 1 第1章 Oracle Database 11g 体系结构 3 1.1 数据库和实例 4 1.2 数据库技术 5 1.2.1 存储数据 6 1.2.2 数据保护 8 1.2.3 可编程的结构 8 1.3 选择体系结构和选项 9 第2章 安装Oracle Database 11g 和创建数据库 11 2.1 许可证和安装选项 13 2.2 使用 OUI 安装 Oracle 软件 13 第3章 升级到 Oracle Database 11g 19 3.1 选择升级方法 20 3.2 升级之前的准备 21 3.3 运行升级前信息工具(Pre-Upgrade Information Tool) 22 3.4 使用数据库升级助手(DBUA) 23 3.5 执行手动直接升级 23 3.6 使用 Export 与Import 24 3.6.1 使用哪个 Export 和Import 版本 24 3.6.2 进行升级 25 3.7 使用数据复制法 25 3.8 升级完成之后的工作 26 第4章 规划Oracle 应用程序——方法、风险和标准 27 4.1 协作方法 28 4.2 每个人都有“数据” 29 4.3 熟悉的 Oracle 语言 30 4.3.1 存储信息的表 31 4.3.2 结构化查询语言 31 4.3.3 简单的Oracle 查询 32 4.3.4 为什么称作“关系” 33 4.4 一些通用的、常见的示例 35 4.5 风险所在 36 4.6 新视角的重要性 37 4.6.1 变化的环境 38 4.6.2 代码、缩写和命名标准 38 4.7 如何减少混淆 39 4.7.1 规范化 40 4.7.2 表和列的英文名称 44 4.7.3 数据中的英文单词 46 4.8 名称和数据中的大写 46 4.9 规范化名称 47 4.10 人性化和优秀的设计 47 4.10.1 理解应用程序的任务 48 4.10.2 任务概要 49 4.11 理解数据 51 4.11.1 原子数据模型 52 4.11.2 原子业务模型 53 4.11.3 业务模型 53 4.11.4 数据项 53 4.11.5 查询和报告 53 4.12 关于对象名称的规范化 54 4.12.1 级别-名称完整性 54 4.12.2 外键 55 4.12.3 单数名称 55 4.12.4 简洁 56 4.12.5 对象名辞典 56 4.13 智能键和列值 56 4.14 建议 57 第Ⅱ部分 SQL和SQL*Plus 59 第5章 SQL 中的基本语法 61 5.1 样式 63 5.2 创建 NEWSPAPER 表 63 5.3 用SQL 从表中选择数据 64 5.4 select 、from 、where和order by 67 5.5 逻辑和值 69 5.5.1 单值测试 70 5.5.2 值列表的简单测试 75 5.5.3 组合逻辑 77 5.6 where 的另一个用途:子查询 78 5.6.1 从子查询得到单值 79 5.6.2 从子查询得到值列表 80 5.7 组合表 82 5.8 创建视图 83 5.9 扩展视图 85 第6章 基本的 SQL*Plus报表和命令 87 6.1 构建简单的报表 89 6.1.1 ①remark 90 6.1.2 ②set headsep 92 6.1.3 ③ttitle 和btitle 92 6.1.4 column 92 6.1.5 ⑧break on 93 6.1.6 ⑨compute avg 94 6.1.7 ⑩set linesize 95 6.1.8 set pagesize 95 6.1.9 set newpage 95 6.1.10 ⑩11spool 96 6.1.11 ⑩12/* */ 97 6.1.12 关于列标题的一些说明 97 6.2 其他特性 98 6.2.1 命令行编辑器 98 6.2.2 设置停顿 101 6.2.3 保存 102 6.2.4 存储 102 6.2.5 编辑 102 6.2.6 host 103 6.2.7 添加SQL*Plus命令 104 6.2.8 启动 104 6.3 检查 SQL*Plus环境 104 6.4 构件块 106 第7章 文本信息的收集与更改 107 7.1 数据类型 108 7.2 什么是串 108 7.3 表示法 109 7.4 连接符(||) 110 7.5 剪切和粘贴串 112 7.5.1 RPAD 和LPAD 112 7.5.2 LTRIM、RTRIM和TRIM 113 7.5.3 组合两个函数 114 7.5.4 使用TRIM 函数 116 7.5.5 再次使用填充函数 117 7.5.6 LOWER、UPPER和INITCAP 117 7.5.7 LENGTH 119 7.5.8 SUBSTR 119 7.5.9 INSTR 122 7.5.10 ASCII和CHR 127 7.6 在order by 和where子句中使用串函数 127 7.6.1 SOUNDEX 128 7.6.2 国际语言支持 130 7.6.3 正则表达式支持 130 7.7 小结 130 第8章 正则表达式搜索 131 8.1 搜索串 132 8.2 REGEXP_SUBSTR 135 8.3 REGEXP_INSTR 137 8.4 REGEXP_LIKE 138 8.5 REPLACE 和REGEXP_REPLACE 139 8.6 REGEXP_COUNT 143 第9章 数值处理 145 9.1 三类数值函数 145 9.2 表示法 146 9.3 单值函数 146 9.3.1 加减乘除 147 9.3.2 NULL 147 9.3.3 NVL:空值置换函数 148 9.3.4 ABS :绝对值函数 149 9.3.5 CEIL 149 9.3.6 FLOOR 150 9.3.7 MOD 150 9.3.8 POWER 151 9.3.9 SQRT :求平方根 151 9.3.10 EXP、LN和LOG 151 9.3.11 ROUND和TRUNC 152 9.3.12 SIGN 153 9.3.13 SIN、SINH、COS、COSH、TAN、TANH、ACOS、ATAN、ATAN2 和ASIN 153 9.4 聚集函数 154 9.4.1 组值函数中的NULL 154 9.4.2 单值函数和组值函数的示例 155 9.4.3 AVG、COUNT、MAX、MIM和SUM 156 9.4.4 组值函数和单值函数的组合 156 9.4.5 STDDEV 和VARIANCE 158 9.4.6 组函数中的DISTINCT 159 9.5 列表函数 160 9.6 使用MAX或MIN 函数查找行 161 9.7 优先级和圆括号的应用 163 9.8 小结 164 第10章 日期:过去、现在及日期的差 165 10.1 日期算法 165 10.1.1 SYSDATE 、CURRENT_DATE及SYSTIMESTAMP 166 10.1.2 两个日期的差 167 10.1.3 添加月份 168 10.1.4 减少月份 168 10.1.5 GREATEST 和LEAST 168 10.1.6 NEXT_DAY 170 10.1.7 LAST_DAY 171 10.1.8 MOMTHS_BETWEEN 171 10.1.9 组合日期函数 172 10.2 日期计算中的ROUND和TRUNC 172 10.3 使用TO_DATE 和TO_CHAR设置日期格式 173 10.3.1 最常见的TO_CHAR 错误 178 10.3.2 NEW_TIME :切换时区 178 10.3.3 TO_DATE 计算 179 10.4 where子句中的日期 181 10.5 处理多个世纪 182 10.6 使用 EXTRACT 函数 183 10.7 使用 TIMESTAMP 数据类型 183 第11章 转换函数与变换函数 185 11.1 基本的转换函数 187 11.1.1 数据类型的自动转换 189 11.1.2 关于自动转换的注意事项 192 11.2 特殊的转换函数 192 11.3 变换函数 193 11.3.1 TRANSLATE 193 11.3.2 DECODE 194 11.4 小结 195 第12章 分组函数 197 12.1 group by 和having 的用法 198 12.1.1 添加一个order by 199 12.1.2 执行顺序 200 12.2 分组视图 202 12.3 用别名重命名列 203 12.4 分组视图的功能 204 12.4.1 在视图中使用order by 205 12.4.2 having子句中的逻辑 206 12.4.3 对列和分组函数进行排序 207 12.4.4 连接列 208 12.5 更多分组可能性 208 第13章 当一个查询依赖于另一个查询时 209 13.1 高级子查询 209 13.1.1 相关子查询 210 13.1.2 并列的逻辑测试 211 13.1.3 EXISTS 及其相关子查询的使用 213 13.2 外部连接 214 13.2.1 Oracle 9i以前版本中的外部连接的语法 215 13.2.2 现在的外部连接语法 216 13.2.3 用外部连接代替NOT IN 218 13.2.4 用NOT EXISTS 代替NOT IN 219 13.3 自然连接和内部连接 220 13.4 UNION﹑INTERSECT和MINUS 221 13.4.1 IN 子查询 224 13.4.2 UNION、INTERSECT和MINUS的限制 224 第14章 一些复杂的技术 225 14.1 复杂的分组 225 14.2 使用临时表 227 14.3 使用ROLLUP﹑GROUPING和CUBE 228 14.4 家族树和 connect by 232 14.4.1 排除个体和分支 235 14.4.2 向根遍历 236 14.4.3 基本规则 238 第15章 更改数据:插入﹑更新﹑合并和删除 239 15.1 插入 240 15.1.1 插入时间 240 15.1.2 用select 插入 241 15.1.3 使用APPEND 提示改善插入性能 242 15.2 rollback、commit和autocommit命令 243 15.2.1 使用savepoint 243 15.2.2 隐式提交 245 15.2.3 自动回滚 245 15.3 多表插入 245 15.4 delete命令 249 15.5 update 命令 250 15.5.1 用嵌入式select 进行更新 251 15.5.2 用NULL 更新 252 15.6 使用 merge命令 253 15.7 处理错误 256 第16章 DECODE 和CASE:SQL中的if-then-else 259 16.1 if-then-else 260 16.2 通过 DECODE替换值 263 16.3 DECODE 中的DECODE 264 16.4 DECODE 中的大于和小于 267 16.5 使用 CASE 269 16.6 使用 PIVOT 272 第17章 创建和管理表、视图、索引、群集和序列 275 17.1 创建表 276 17.1.1 字符宽度和数值精度 277 17.1.2 在插入时进行舍入 279 17.1.3 create table的约束 281 17.1.4 指定索引表空间 282 17.1.5 命名约束 283 17.2 删除表 284 17.3 更改表 284 17.3.1 添加或修改列的规则 287 17.3.2 创建只读表 288 17.3.3 更改当前使用的表 288 17.3.4 创建虚拟列 288 17.3.5 删除列 289 17.4 根据一个表创建另一个表 290 17.5 创建索引编排表 292 17.6 创建视图 293 17.6.1 视图的稳定性 293 17.6.2 视图中的order by 294 17.6.3 创建只读视图 295 17.7 索引 295 17.7.1 创建索引 296 17.7.2 实施唯一性 296 17.7.3 创建唯一索引 297 17.7.4 创建位图索引 297 17.7.5 何时创建索引 298 17.7.6 创建不可见索引 299 17.7.7 索引列的变化 299 17.7.8 一个表能使用多少个索引 299 17.7.9 在数据库中放置索引 300 17.7.10 重建索引 300 17.7.11 基于函数的索引 301 17.8 群集 301 17.9 序列 303 第18章 分区 305 18.1 创建分区表 306 18.2 列表分区 308 18.3 创建子分区 309 18.4 创建范围和间隔分区 309 18.5 索引分区 311 18.6 管理分区表 311 第19章 Oracle 基本安全 313 19.1 用户、角色和权限 314 19.1.1 创建用户 314 19.1.2 密码管理 315 19.1.3 标准角色 318 19.1.4 grant 命令的格式 319 19.1.5 撤消权限 320 19.2 可以授予用户何种权限 320 19.2.1 利用connect移动到另一个用户 322 19.2.2 创建同义词 325 19.2.3 使用未授权的权限 325 19.2.4 权限的传递 325 19.2.5 创建角色 327 19.2.6 为角色授权 327 19.2.7 将一个角色授予另一个角色 328 19.2.8 为用户授予角色 328 19.2.9 为角色添加密码 329 19.2.10 删除角色的密码 329 19.2.11 启用和禁用角色 330 19.2.12 撤消角色的权限 331 19.2.13 删除角色 331 19.2.14 给指定的列授予UPDATE权限 331 19.2.15 撤消对象权限 331 19.2.16 用户安全性 332 19.2.17 给公众授予访问权 333 19.3 有限资源的授权 334 第Ⅲ部分 高 级 主 题 335 第20章 高级安全性——虚拟专用数据库 337 20.1 初始配置 338 20.2 创建应用程序上下文 339 20.3 创建登录触发器 341 20.4 创建安全策略 342 20.5 将安全策略应用于表 343 20.6 测试 VPD 343 20.7 如何实现列级别的 VPD 345 20.8 如何禁用 VPD 346 20.9 如何使用策略组 347 第21章 高级安全性:透明数据加密 349 21.1 列的透明数据加密 349 21.1.1 设置 350 21.1.2 RAC 数据库的额外设置 351 21.1.3 钱夹的打开和关闭 351 21.1.4 列的加密和解密 352 21.2 表空间的加密 353 21.2.1 设置 353 21.2.2 创建加密的表空间 354 第22章 使用表空间 355 22.1 表空间与数据库的结构 355 22.1.1 表空间内容 356 22.1.2 表空间中的RECYCLEBIN空间 358 22.1.3 只读表空间 359 22.1.4 无日志表空间 360 22.1.5 临时表空间 360 22.1.6 用于系统管理撤消的表空间 360 22.1.7 大文件表空间 361 22.1.8 加密的表空间 361 22.1.9 支持闪回数据库 361 22.1.10 移动表空间 362 22.2 规划表空间的使用 362 22.2.1 分离活动表与静态表 362 22.2.2 分离索引与表 362 22.2.3 分离大对象与小对象 363 22.2.4 将应用程序表与核心对象分开 363 第23章 用SQL*Loader 加载数据 365 23.1 控制文件 366 23.2 开始加载 367 23.3 逻辑记录与物理记录 370 23.4 控制文件语法注释 371 23.5 管理数据加载 373 23.6 重复数据加载 373 23.7 调整数据加载 374 23.8 直接路径加载 375 23.9 附加功能 377 第24章 使用Data Pump Export和Data Pump Import 379 24.1 创建目录 380 24.2 Data Pump Export选项 380 24.3 启动 Data Pump Export作业 383 24.3.1 停止和重新启动运行的作业 384 24.3.2 从另一个数据库中导出 385 24.3.3 使用EXCLUDE 、INCLUDE和QUERY 385 24.4 Data Pump Import选项 387 24.5 启动 Data Pump Import作业 389 24.5.1 停止和重新启动运行的作业 391 24.5.2 EXCLUDE、INCLUDE和QUERY 391 24.5.3 转换导入的对象 391 24.5.4 生成SQL 392 第25章 访问远程数据 395 25.1 数据库链接 395 25.1.1 数据库链接是如何工作的 396 25.1.2 利用数据库链接进行远程查询 396 25.1.3 对同义词和视图使用数据库链接 397 25.1.4 利用数据库链接进行远程更新 398 25.1.5 数据库链接的语法 399 25.2 为位置透明性使用同义词 402 25.3 在视图中使用 User 伪列 403 第26章 使用物化视图 405 26.1 功能 406 26.2 必需的系统权限 406 26.3 必需的表权限 407 26.4 只读物化视图与可更新的物化视图 407 26.5 创建物化视图的语法 408 26.5.1 物化视图的类型 411 26.5.2 基于RowID 和基于主键的物化视图 411 26.5.3 使用预建表 412 26.5.4 为物化视图表创建索引 412 26.6 用物化视图更改查询执行路径 412 26.7 使用 DBMS_ADVISOR 414 26.8 刷新物化视图 416 26.8.1 可执行何种刷新 417 26.8.2 用CONSIDER FRESH快速刷新 420 26.8.3 自动刷新 420 26.8.4 人工刷新 421 26.9 创建物化视图日志的语法 422 26.10 更改物化视图和日志 423 26.11 删除物化视图和日志 423 第27章 使用Oracle Text进行文本搜索 425 27.1 将文本添加到数据库中 426 27.2 文本查询和文本索引 427 27.2.1 文本查询 427 27.2.2 可使用的文本查询表达式 428 27.2.3 一个单词精确匹配的搜索 429 27.2.4 多个单词精确匹配的搜索 429 27.2.5 短语精确匹配的搜索 433 27.2.6 搜索互相接近的单词 434 27.2.7 在搜索中使用通配符 434 27.2.8 搜索具有相同词根的单词 435 27.2.9 模糊匹配搜索 436 27.2.10 搜索发音相似的单词 437 27.2.11 使用 ABOUT运算符 438 27.2.12 索引同步 439 27.3 索引集 439 第28章 使用外部表 441 28.1 访问外部数据 442 28.2 创建外部表 443 28.2.1 外部表创建选项 446 28.2.2 创建时加载外部表 451 28.3 更改外部表 452 28.3.1 Access Parameters 子句 452 28.3.2 Add Column 子句 452 28.3.3 Default Directory 子句 452 28.3.4 Drop Column 子句 452 28.3.5 Location 子句 452 28.3.6 Modify Column 子句 452 28.3.7 Parallel 子句 453 28.3.8 Project Column 子句 453 28.3.9 Reject Limit 子句 453 28.3.10 Rename To 子句 453 28.4 外部表的优缺点和潜在用途 453 第29章 使用闪回查询 455 29.1 基于时间的闪回示例 456 29.2 保存数据 457 29.3 基于 SCN 的闪回示例 458 29.4 闪回查询失败的后果 459 29.5 什么 SCN 与每一行关联 460 29.6 闪回版本查询 461 29.7 闪回计划 463 第30章 闪回:表和数据库 465 30.1 flashback table 命令 465 30.1.1 必需的权限 466 30.1.2 恢复删除的表 466 30.1.3 启用和禁用回收站 468 30.1.4 闪回 SCN 或者时间戳 468 30.1.5 索引和统计信息 469 30.2 flashback database 命令 469 第31章 SQL 重放 473 31.1 高级别配置 473 31.1.1 分离和连接 474 31.1.2 创建工作负载目录 474 31.2 捕获工作负载 475 31.2.1 定义过滤器 475 31.2.2 启动捕获 476 31.2.3 停止捕获 477 31.2.4 导出 AW R数据 477 31.3 处理工作负载 477 31.4 重放工作负载 478 31.4.1 控制和启动重放客户 478 31.4.2 初始化和运行重放 479 31.4.3 导出 AW R数据 480 第Ⅳ部分 PL/SQL 481 第32章 PL/SQL 简介 483 32.1 PL/SQL概述 483 32.2 声明部分 484 32.3 可执行命令部分 487 32.3.1 条件逻辑 489 32.3.2 循环 490 32.3.3 CASE 语句 499 32.4 异常处理部分 500 第33章 应用程序在线升级 503 33.1 高可用数据库 503 33.1.1 Oracle Data Guard( 数据卫士)体系结构 504 33.1.2 创建备用数据库配置 506 33.1.3 管理角色——切换和故障转移 507 33.2 最小化 DDL变更的影响 510 33.2.1 创建虚拟列 510 33.2.2 改变正在使用的表 511 33.2.3 添加 NOT NULL 列 512 33.2.4 在线对象重新组织 512 33.2.5 删除列 515 第34章 触发器 517 34.1 必需的系统权限 518 34.2 必需的表权限 518 34.3 触发器类型 518 34.3.1 行级触发器 518 34.3.2 语句级触发器 519 34.3.3 BEFORE和AFTER触发器 519 34.3.4 INSTEAD OF触发器 519 34.3.5 模式触发器 520 34.3.6 数据库级触发器 520 34.3.7 复合触发器 520 34.4 触发器语法 520 34.4.1 DML 触发器类型的组合 522 34.4.2 设置插入值 523 34.4.3 维护复制的数据 524 34.4.4 定制错误条件 525 34.4.5 在触发器中调用过程 527 34.4.6 命名触发器 527 34.4.7 创建 DDL事件触发器 528 34.4.8 创建数据库事件触发器 531 34.4.9 创建复合触发器 532 34.5 启用和禁用触发器 533 34.6 替换触发器 534 34.7 删除触发器 534 第35章 过程、函数与程序包 535 35.1 必需的系统权限 536 35.2 必需的表权限 537 35.3 过程与函数 538 35.4 过程与程序包 538 35.5 create procedure 语法 538 35.6 create function 语法 540 35.6.1 在过程中引用远程表 542 35.6.2 调试过程 543 35.6.3 创建自己的函数 544 35.6.4 定制错误条件 546 35.6.5 命名过程和函数 547 35.7 create package 语法 547 35.8 查看过程对象的源代码 550 35.9 编译过程、函数和程序包 551 35.10 替换过程、函数和程序包 552 35.11 删除过程、函数和程序包 552 第36章 使用本地动态SQL和DBMS_SQL 553 36.1 使用EXECUTE IMMEDIATE 553 36.2 使用绑定变量 555 36.3 使用 DBMS_SQL 556 36.3.1 OPEN_CURSOR 557 36.3.2 PARSE 557 36.3.3 BIND_VARIABLE和BIND_ARRAY 558 36.3.4 EXECUTE 558 36.3.5 DEFINE_COLUMN 558 36.3.6 FETCH_ROWS 、EXECUTE_AND_FETCH和COLUMN_VALUE 559 36.3.7 CLOSE_CURSOR 559 第37章 PL/SQL 调整 561 37.1 调整 SQL 561 37.2 调整 PL/SQL 的步骤 562 37.3 使用DBMS_PROFILE识别问题 563 37.4 将PL/SQL 特性用于批量操作 568 37.4.1 forall 操作 568 37.4.2 bulk collect操作 571 第Ⅴ部分 对象关系数据库 573 第38章 实现对象类型、对象视图和方法 575 38.1 使用对象类型 575 38.1.1 对象类型的安全性 576 38.1.2 索引对象类型属性 579 38.2 实现对象视图 581 38.2.1 通过对象视图操作数据 583 38.2.2 使用INSTEAD OF 触发器 584 38.3 方法 586 38.3.1 创建方法的语法 586 38.3.2 管理方法 588 第39章 收集器(嵌套表和可变数组) 589 39.1 可变数组 589 39.1.1 创建可变数组 590 39.1.2 描述可变数组 590 39.1.3 向可变数组中插入记录 592 39.1.4 从可变数组中选择数据 593 39.2 嵌套表 596 39.2.1 指定嵌套表的表空间 597 39.2.2 向嵌套表中插入记录 597 39.2.3 操作嵌套表 598 39.3 嵌套表与可变数组的附加函数 600 39.4 嵌套表和可变数组的管理问题 601 39.4.1 收集器的可变性 601 39.4.2 数据的位置 602 第40章 使用大对象 603 40.1 可用的数据类型 603 40.2 为LOB 数据指定存储参数 605 40.3 LOB 值的操作和选择 607 40.3.1 初始化值 608 40.3.2 用子查询插入数据 610 40.3.3 更新LOB值 610 40.3.4 使用串函数处理LOB 值 611 40.3.5 使用DBMS_LOB操作LOB 值 612 40.3.6 删除LOB 628 第41章 面向对象的高级概念 629 41.1 行对象和列对象 630 41.2 对象表和 OID 630 41.2.1 把行插入对象表 631 41.2.2 从对象表中选择值 632 41.2.3 从对象表中更新和删除数据 632 41.2.4 REF 函数 633 41.2.5 使用DEREF函数 633 41.2.6 VALUE 函数 636 41.2.7 无效引用 637 41.3 具有 REF 的对象视图 637 41.3.1 对象视图的简要回顾 637 41.3.2 包含引用的对象视图 638 41.4 对象 PL/SQL 641 41.5 数据库中的对象 643 第Ⅵ部分 Oracle 中的Java 645 第42章 Java简介 647 42.1 Java 与PL/SQL 概述 648 42.2 开始 648 42.3 声明 649 42.4 可执行命令 649 42.4.1 条件逻辑 651 42.4.2 循环 654 42.4.3 异常处理 656 42.4.4 保留字 657 42.5 类 657 第43章 JDBC 程序设计 663 43.1 使用 JDBC 类 664 43.2 使用 JDBC 进行数据操作 667 第44章 Java存储过程 671 44.1 将类加载到数据库中 673 44.2 如何访问类 677 44.2.1 直接调用Java 存储过程 679 44.2.2 在何处执行命令 680 第Ⅶ部分 指 南 681 第45章 Oracle 数据字典指南 683 45.1 关于名称的说明 684 45.2 Oracle Database 11g中引入的新视图 684 45.3 路线图:DICTIONARY(DICT)和DICT_COLUMNS 688 45.4 从表、列、视图、同义词和序列中选择 689 45.4.1 目录:USER_CATALOG(CAT) 689 45.4.2 对象:USER_OBJECTS(OBJ) 690 45.4.3 表:USER_TABLES(TABS) 691 45.4.4 列:USER_TAB_COLUMNS(COLS) 693 45.4.5 视图:USER_VIEWS 694 45.4.6 同义词:USER_SYNONYMS(SYN) 696 45.4.7 序列:USER_SEQUENCES(SEQ) 697 45.5 回收站:USER_RECYCLEBIN和DBA_RECYCLEBIN 697 45.6 约束和注释 697 45.6.1 约束:USER_CONSTRAINTS 698 45.6.2 约束列:USER_CONS_COLUMNS 699 45.6.3 约束异常:EXCEPTIONS 700 45.6.4 表注释:USER_TAB_COMMENTS 700 45.6.5 列注释:USER_COL_COMMENTS 701 45.7 索引和群集 702 45.7.1 索引:USER_INDEXES(IND) 702 45.7.2 索引列:USER_IND_COLUMNS 704 45.7.3 群集:USER_CLUSTERS(CLU) 705 45.7.4 群集列:USER_CLU_COLUMNS 705 45.8 抽象数据类型和 LOB 706 45.8.1 抽象数据类型:USER_TYPES 706 45.8.2 LOB :USER_LOBS 708 45.9 数据库链接和物化视图 709 45.9.1 数据库链接:USER_DB_LINKS 709 45.9.2 物化视图 709 45.9.3 物化视图日志:USER_MVIEW_LOGS 711 45.10 触发器、过程、函数和程序包 711 45.10.1 触发器:USER_TRIGGERS 712 45.10.2 过程、函数和程序包:USER_SOURCE 712 45.11 维度 714 45.12 包括分区和子分区的空间分配和使用情况 715 45.12.1 表空间:USER_TABLESPACES 715 45.12.2 空间限额:USER_TS_ QUOTAS 715 45.12.3 段和区:USER_SEGMENTS和USER_EXTENTS 716 45.12.4 分区和子分区 717 45.12.5 可用空间:USER_FREE_SPACE 719 45.13 用户和权限 719 45.13.1 用户:USER_USERS 719 45.13.2 资源限制:USER_RESOURCE_LIMITS 719 45.13.3 表的权限:USER_TAB_PRIVS 720 45.13.4 列权限:USER_COL_PRIVS 720 45.13.5 系统权限:USER_SYS_PRIVS 721 45.14 角色 721 45.15 审计 722 45.16 其他视图 723 45.17 监控:V$动态性能表 723 45.17.1 CHAINED_ROWS 723 45.17.2 PLAN_TABLE 724 45.17.3 相互依赖性:USER_DEPENDENCIES和IDEPTREE 724 45.17.4 只属于DBA的视图 724 45.17.5 Oracle Label Security 724 45.17.6 SQL*Loader直接加载视图 725 45.17.7 全球支持视图 725 45.17.8 库 725 45.17.9 异构服务 725 45.17.10 索引类型和运算符 725 45.17.11 概要 726 45.17.12 顾问程序 726 45.17.13 调度程序 726 第46章 应用程序和 SQL 调整指南 727 46.1 Oracle Database 11g新增的调整功能 728 46.2 Oracle 11g新增的调整特性 728 46.3 调整——最优方法 729 46.3.1 尽可能少做 730 46.3.2 尽可能简单地完成 732 46.3.3 告诉数据库需要知道什么 733 46.3.4 最大化环境中的吞吐量 734 46.3.5 分开处理数据 735 46.3.6 正确测试 736 46.4 生成并读取说明计划(explain plan) 738 46.4.1 使用set autotrace on 738 46.4.2 使用explain plan 742 46.5 Explain Plan 中的主要操作 743 46.5.1 TABLE ACCESS FULL 743 46.5.2 TABLE ACCESS BY INDEX ROWID 744 46.5.3 相关提示 744 46.5.4 使用索引的操作 744 46.5.5 何时使用索引 746 46.5.6 操纵数据集的操作 751 46.5.7 执行连接的操作 757 46.5.8 Oracle如何处理两个以上表的连接 758 46.5.9 并行化和缓存问题 764 46.6 实现存储概要 764 46.7 小结 766 第47章 SQL 结果缓存和客户端查询缓存 767 47.1 SQL 结果缓存的数据库参数设置 774 47.2 DBMS_RESULT_CACHE程序包 775 47.3 SQL 结果缓存的字典视图 776 47.4 SQL 结果缓存的更多细节 777 47.5 Oracle 调用接口(OCI) 客户端查询缓存 777 47.6 Oracle 调用接口(OCI) 客户端查询缓存的限制 778 第48章 关于调整的示例分析 779 48.1 示例分析1 :等待、等待、再等待 779 48.2 示例分析2 :破坏应用程序的查询 782 48.3 示例分析3 :长期运行的批处理作业 786 第49章 高级体系结构选项——DB保险库、内容DB和记录DB 789 49.1 Oracle 数据库保险库 790 49.1.1 Oracle数据库保险库的新概念 790 49.1.2 禁用Oracle 数据库保险库 791 49.1.3 启用Oracle 数据库保险库 792 49.1.4 数据库保险库安装的注意事项 793 49.2 Oracle 内容数据库套件 796 49.2.1 存储库 796 49.2.2 文档管理 797 49.2.3 用户安全性 797 49.3 Oracle 记录数据库 798 第50章 Oracle 实时应用群集 801 50.1 安装前的准备 802 50.2 安装 RAC 802 50.2.1 存储 803 50.2.2 初始化参数 803 50.3 启动和停止 RAC实例 805 50.4 透明应用程序故障切换 807 50.5 为群集添加节点和实例 808 第51章 数据库管理指南 811 51.1 创建数据库 812 51.2 启动和停止数据库 813 51.3 设置和管理内存区域大小 814 51.4 分配和管理对象的空间 816 51.4.1 存储子句的含义 817 51.4.2 表段 818 51.4.3 索引段 819 51.4.4 系统管理的撤消 819 51.4.5 临时段 820 51.4.6 可用空间 821 51.4.7 设置数据库对象的大小 822 51.5 监控撤消表空间 824 51.6 自动存储管理 824 51.7 段空间管理 825 51.8 移动表空间 826 51.8.1 生成可移动表空间集 826 51.8.2 插入可移动表空间集 827 51.9 进行备份 828 51.9.1 Data Pump Export 和Data Pump Import 828 51.9.2 脱机备份 829 51.9.3 联机备份 830 51.9.4 Recovery Manager 833 51.10 展望 834 第52章 Oracle 中的 XML指南 835 52.1 文档类型定义、元素及属性 836 52.2 XML 模式 839 52.3 使用XSU选择、插入、更新和删除XML值 841 52.3.1 使用XSU 进行插入、更新和删除 843 52.3.2 XSU 和Java 844 52.3.3 定制查询过程 845 52.4 使用 XMLType 846 52.5 其他功能 848 第Ⅷ部分 附 录 849 附录A 命令和术语参考 851

2013-02-04

数据挖掘导论(完整版)(全面介绍数据挖掘的理论和方法)--习题答案

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《数据挖掘导论(完整版)》的习题答案 对应的书籍资料见: 数据挖掘导论(完整版)(全面介绍数据挖掘的理论和方法) 基本信息 原书名: Introduction to Data Mining 原出版社: Addison Wesley 作者: (美)Pang-Ning Tan    Michael Steinbach    Vipin Kumar 译者: 范明 范宏建 丛书名: 图灵计算机科学 出版社:人民邮电出版社 ISBN:9787115241009 上架时间:2010-12-16 出版日期:2011 年1月 开本:16开 页码:463 版次:2-1 编辑推荐      《数据挖掘导论(完整版)》全面介绍了数据挖掘,涵盖了五个主题:数据、分类、关联分析、聚类和异常检测。除异常检测外,每个主题都有两章。前一章涵盖基本概念、代表性算法和评估技术,而后一章讨论高级概念和算法。这样读者在透彻地理解数据挖掘的基础的同时,还能够了解更多重要的高级主题。   《数据挖掘导论(完整版)》是明尼苏达大学和密歇根州立大学数据挖掘课程的教材,由于独具特色,正式出版之前就已经被斯坦福大学、得克萨斯大学奥斯汀分校等众多名校采用。《数据挖掘导论(完整版)》特色   与许多其他同类图书不同,《数据挖掘导论(完整版)》将重点放在如何用数据挖掘知识解决各种实际问题。   只要求具备很少的预备知识——不需要数据库背景,只需要很少的统计学或数学背景知识。   书中包含大量的图表、综合示例和丰富的习题,并且使用示例、关键算法的简洁描述和习题,尽可能直接聚焦于数   据挖掘的主要概念。   教辅内容极为丰富,包括课程幻灯片、学生课题建议、数据挖掘资源(如数据挖掘算法和数据集)、联机指南(使   用实际的数据集和数据分析软件,《数据挖掘导论(完整版)》介绍的部分数据挖掘技术提供例子讲解)。    内容简介回   《数据挖掘导论(完整版)》全面介绍了数据挖掘的理论和方法,旨在为读者提供将数据挖掘应用于实际问题所必需的知识。《数据挖掘导论(完整版)》涵盖五个主题:数据、分类、关联分析、聚类和异常检测。除异常检测外,每个主题都包含两章:前面一章讲述基本概念、代表性算法和评估技术,后面一章较深入地讨论高级概念和算法。目的是使读者在透彻地理解数据挖掘基础的同时,还能了解更多重要的高级主题。此外,书中还提供了大量示例、图表和习题。   《数据挖掘导论(完整版)》适合作为相关专业高年级本科生和研究生数据挖掘课程的教材,同时也可作为数据挖掘研究和应用开发人员的参考书。 作译者 作者:(美国)陈封能(Pang-Ning Tan) (美国)斯坦巴赫(Michael Steinbach) (美国)库玛尔(Vipin Kumar)   陈封能(Pang-Ning Tan)现为密歇根州立大学计算机与工程系助理教授,主要教授数据挖掘、数据库系统等课程。此前,他曾是明尼苏达大学美国陆军高性能计算研究中心副研究员(2002-2003)。   斯坦巴赫(Michael Steinbach)明尼苏达大学计算机与工程系研究员,在读博士。   库玛尔(Vipin Kumar)明尼苏达大学计算机科学与工程系主任,曾任美国陆军高性能计算研究中心主任.他拥有马里兰大学博士学位,是数据挖掘和高性能计算方面的国际权威,IEEE会士. 译者:范明 范宏建 等   范明,郑州大学信息工程学院教授,中国计算机学会数据库专业委员会委员、人工智能与模式识别专业委员会委员,长期从事计算机软件与理论教学和研究.先后发表论史40余篇.   范宏建 澳大利亚墨尔本大学计算机科学博士.先后在WWW、PAKDD、RSFDGrC、IEEE GrC和Australian AI等国际学术会议和IEEE Transactions on Knowledge and Data Engineering发表论文10余篇.目前是澳大利亚AUSTRAC的高级分析师. 目录 封面 -16 封底 -15 扉页 -14 版权 -13 版权声明 -12 中文版序 -11 完整版译者序 -10 译者序 -9 译者简介 -8 前言 -7 目录 -4 第1章 绪论 1 1.1 什么是数据挖掘 2 1.2 数据挖掘要解决的问题 2 1.3 数据挖掘的起源 3 1.4 数据挖掘任务 4 1.5 本书的内容与组织 7 文献注释 7 参考文献 8 习题 10 第2章 数据 13 2.1 数据类型 14 2.1.1 属性与度量 15 2.1.2 数据集的类型 18 2.2 数据质量 22 2.2.1 测量和数据收集问题 22 2.2.2 关于应用的问题 26 2.3 数据预处理 27 2.3.1 聚集 27 2.3.2 抽样 28 2.3.3 维归约 30 2.3.4 特征子集选择 31 2.3.5 特征创建 33 2.3.6 离散化和二元化 34 2.3.7 变量变换 38 2.4 相似性和相异性的度量 38 2.4.1 基础 39 2.4.2 简单属性之间的相似度和相异度 40 2.4.3 数据对象之间的相异度 41 2.4.4 数据对象之间的相似度 43 2.4.5 邻近性度量的例子 43 2.4.6 邻近度计算问题 48 2.4.7 选取正确的邻近性度量 50 文献注释 50 参考文献 52 习题 53 第3章 探索数据 59 3.1 鸢尾花数据集 59 3.2 汇总统计 60 3.2.1 频率和众数 60 3.2.2 百分位数 61 3.2.3 位置度量:均值和中位数 61 3.2.4 散布度量:极差和方差 62 3.2.5 多元汇总统计 63 3.2.6 汇总数据的其他方法 64 3.3 可视化 64 3.3.1 可视化的动机 64 3.3.2 一般概念 65 3.3.3 技术 67 3.3.4 可视化高维数据 75 3.3.5 注意事项 79 3.4 OLAP和多维数据分析 79 3.4.1 用多维数组表示鸢尾花数据 80 3.4.2 多维数据:一般情况 81 3.4.3 分析多维数据 82 3.4.4 关于多维数据分析的最后评述 84 文献注释 84 参考文献 85 习题 86 第4章 分类:基本概念、决策树与模型评估 89 4.1 预备知识 89 4.2 解决分类问题的一般方法 90 4.3 决策树归纳 92 4.3.1 决策树的工作原理 92 4.3.2 如何建立决策树 93 4.3.3 表示属性测试条件的方法 95 4.3.4 选择最佳划分的度量 96 4.3.5 决策树归纳算法 101 4.3.6 例子:Web 机器人检测 102 4.3.7 决策树归纳的特点 103 4.4 模型的过分拟合 106 4.4.1 噪声导致的过分拟合 107 4.4.2 缺乏代表性样本导致的过分拟合 109 4.4.3 过分拟合与多重比较过程 109 4.4.4 泛化误差估计 110 4.4.5 处理决策树归纳中的过分拟合 113 4.5 评估分类器的性能 114 4.5.1 保持方法 114 4.5.2 随机二次抽样 115 4.5.3 交叉验证 115 4.5.4 自助法 115 4.6 比较分类器的方法 116 4.6.1 估计准确度的置信区间 116 4.6.2 比较两个模型的性能 117 4.6.3 比较两种分类法的性能 118 文献注释 118 参考文献 120 习题 122 第5章 分类:其他技术 127 5.1 基于规则的分类器 127 5.1.1 基于规则的分类器的工作原理 128 5.1.2 规则的排序方案 129 5.1.3 如何建立基于规则的分类器 130 5.1.4 规则提取的直接方法 130 5.1.5 规则提取的间接方法 135 5.1.6 基于规则的分类器的特征 136 5.2 最近邻分类器 137 5.2.1 算法 138 5.2.2 最近邻分类器的特征 138 5.3 贝叶斯分类器 139 5.3.1 贝叶斯定理 139 5.3.2 贝叶斯定理在分类中的应用 140 5.3.3 朴素贝叶斯分类器 141 5.3.4 贝叶斯误差率 145 5.3.5 贝叶斯信念网络 147 5.4 人工神经网络 150 5.4.1 感知器 151 5.4.2 多层人工神经网络 153 5.4.3 人工神经网络的特点 155 5.5 支持向量机 156 5.5.1 最大边缘超平面 156 5.5.2 线性支持向量机:可分情况 157 5.5.3 线性支持向量机:不可分情况 162 5.5.4 非线性支持向量机 164 5.5.5 支持向量机的特征 168 5.6 组合方法 168 5.6.1 组合方法的基本原理 168 5.6.2 构建组合分类器的方法 169 5.6.3 偏倚—方差分解 171 5.6.4 装袋 173 5.6.5 提升 175 5.6.6 随机森林 178 5.6.7 组合方法的实验比较 179 5.7 不平衡类问题 180 5.7.1 可选度量 180 5.7.2 接受者操作特征曲线 182 5.7.3 代价敏感学习 184 5.7.4 基于抽样的方法 186 5.8 多类问题 187 文献注释 189 参考文献 190 习题 193 第6章 关联分析:基本概念和算法 201 6.1 问题定义 202 6.2 频繁项集的产生 204 6.2.1 先验原理 205 6.2.2 Apriori算法的频繁项集产生 206 6.2.3 候选的产生与剪枝 208 6.2.4 支持度计数 210 6.2.5 计算复杂度 213 6.3 规则产生 215 6.3.1 基于置信度的剪枝 215 6.3.2 Apriori算法中规则的产生 215 6.3.3 例:美国国会投票记录 217 6.4 频繁项集的紧凑表示 217 6.4.1 极大频繁项集 217 6.4.2 闭频繁项集 219 6.5 产生频繁项集的其他方法 221 6.6 FP增长算法 223 6.6.1 FP树表示法 224 6.6.2 FP增长算法的频繁项集产生 225 6.7 关联模式的评估 228 6.7.1 兴趣度的客观度量 228 6.7.2 多个二元变量的度量 235 6.7.3 辛普森悖论 236 6.8 倾斜支持度分布的影响 237 文献注释 240 参考文献 244 习题 250 第7章 关联分析:高级概念 259 7.1 处理分类属性 259 7.2 处理连续属性 261 7.2.1 基于离散化的方法 261 7.2.2 基于统计学的方法 263 7.2.3 非离散化方法 265 7.3 处理概念分层 266 7.4 序列模式 267 7.4.1 问题描述 267 7.4.2 序列模式发现 269 7.4.3 时限约束 271 7.4.4 可选计数方案 274 7.5 子图模式 275 7.5.1 图与子图 276 7.5.2 频繁子图挖掘 277 7.5.3 类Apriori方法 278 7.5.4 候选产生 279 7.5.5 候选剪枝 282 7.5.6 支持度计数 285 7.6 非频繁模式 285 7.6.1 负模式 285 7.6.2 负相关模式 286 7.6.3 非频繁模式、负模式和负相关模式比较 287 7.6.4 挖掘有趣的非频繁模式的技术 288 7.6.5 基于挖掘负模式的技术 288 7.6.6 基于支持度期望的技术 290 文献注释 292 参考文献 293 习题 295 第8章 聚类分析:基本概念和算法 305 8.1 概述 306 8.1.1 什么是聚类分析 306 8.1.2 不同的聚类类型 307 8.1.3 不同的簇类型 308 8.2 K均值 310 8.2.1 基本K均值算法 310 8.2.2 K均值:附加的问题 315 8.2.3 二分K均值 316 8.2.4 K均值和不同的簇类型 317 8.2.5 优点与缺点 318 8.2.6 K均值作为优化问题 319 8.3 凝聚层次聚类 320 8.3.1 基本凝聚层次聚类算法 321 8.3.2 特殊技术 322 8.3.3 簇邻近度的Lance-Williams公式 325 8.3.4 层次聚类的主要问题 326 8.3.5 优点与缺点 327 8.4 DBSCAN 327 8.4.1 传统的密度:基于中心的方法 327 8.4.2 DBSCAN算法 328 8.4.3 优点与缺点 329 8.5 簇评估 330 8.5.1 概述 332 8.5.2 非监督簇评估:使用凝聚度和分离度 332 8.5.3 非监督簇评估:使用邻近度矩阵 336 8.5.4 层次聚类的非监督评估 338 8.5.5 确定正确的簇个数 339 8.5.6 聚类趋势 339 8.5.7 簇有效性的监督度量 340 8.5.8 评估簇有效性度量的显著性 343 文献注释 344 参考文献 345 习题 347 第9章 聚类分析:其他问题与算法 355 9.1 数据、簇和聚类算法的特性 355 9.1.1 例子:比较K均值和DBSCAN 355 9.1.2 数据特性 356 9.1.3 簇特性 357 9.1.4 聚类算法的一般特性 358 9.2 基于原型的聚类 359 9.2.1 模糊聚类 359 9.2.2 使用混合模型的聚类 362 9.2.3 自组织映射 369 9.3 基于密度的聚类 372 9.3.1 基于网格的聚类 372 9.3.2 子空间聚类 374 9.3.3 DENCLUE:基于密度聚类的一种基于核的方案 377 9.4 基于图的聚类 379 9.4.1 稀疏化 379 9.4.2 最小生成树聚类 380 9.4.3 OPOSSUM:使用METIS的稀疏相似度最优划分 381 9.4.4 Chameleon:使用动态建模的层次聚类 381 9.4.5 共享最近邻相似度 385 9.4.6 Jarvis-Patrick聚类算法 387 9.4.7 SNN密度 388 9.4.8 基于SNN密度的聚类 389 9.5 可伸缩的聚类算法 390 9.5.1 可伸缩:一般问题和方法 391 9.5.2 BIRCH 392 9.5.3 CURE 393 9.6 使用哪种聚类算法 395 文献注释 397 参考文献 398 习题 400 第10章 异常检测 403 10.1 预备知识 404 10.1.1 异常的成因 404 10.1.2 异常检测方法 404 10.1.3 类标号的使用 405 10.1.4 问题 405 10.2 统计方法 406 10.2.1 检测一元正态分布中的离群点 407 10.2.2 多元正态分布的离群点 408 10.2.3 异常检测的混合模型方法 410 10.2.4 优点与缺点 411 10.3 基于邻近度的离群点检测 411 10.4 基于密度的离群点检测 412 10.4.1 使用相对密度的离群点检测 413 10.4.2 优点与缺点 414 10.5 基于聚类的技术 414 10.5.1 评估对象属于簇的程度 415 10.5.2 离群点对初始聚类的影响 416 10.5.3 使用簇的个数 416 10.5.4 优点与缺点 416 文献注释 417 参考文献 418 习题 420 附录A 线性代数 423 附录B 维归约 433 附录C 概率统计 445 附录D 回归 451 附录E 优化 457 译者序   自从我和孟小峰等人翻译J. Han和M. Kamber的《数据挖掘:概念与技术》以来,我们高兴地看到数据挖掘的研究正在我国蓬勃开展。许多学者和研究人员都对这个新兴的学科领域表现出了极大的兴趣,他们之中不仅有来自数据库领域的专家,而且不乏统计学、人工智能和模式识别、机器学习等领域的研究者。国内的学者和研究者在数据挖掘方面的研究已经取得了一些令人鼓舞的成果,并且正在逐渐与国际学术界同步。   数据挖掘的产生和发展一直是分析和理解数据的实际需求推动的。数据挖掘研究的进展也正是在于一直重视与其他领域研究者的合作。数据挖掘从工业、农业、医疗卫生和商业的需求中获得动力,从统计学、机器学习等领域的长期研究与发展中汲取营养。我们相信,只要有理解数据的需求,就有推动数据挖掘研究与应用发展的动力;只要依靠多学科的团队,就能应对新的数据分析任务带来的挑战。   P. Tan、M. Steinbach和V. Kumar编写的这本《数据挖掘导论》是继《数据挖掘:概念与技术》一书之后的另一本重要的数据挖掘著作。三位作者都从事数据挖掘研究多年,其中Vipin Kumar教授是数据挖掘和高性能计算领域的国际知名学者。本书原版在正式出版之前就已经被斯坦福大学、得克萨斯大学奥斯汀分校等众多名校采用。J. Han教授也高度评价该书:“这是一本全新数据挖掘的教材,值得大力推荐。它将成为我们的主要参考书。”   本书不需要读者具备数据库背景,只需要少量统计学或数学背景知识,而且取材涉及的学科和应用领域较多,实用性强,因此适合的读者面较广。本书强调如何用数据挖掘知识解决各种实际问题,强调所挖掘的知识模式的评估。例如,就像我们能够从天空中的白云想象出各种动物和物体一样,每个聚类算法能够从几乎所有的数据集中发现聚类。如果数据集合中根本不存在自然的簇,所产生的聚类很难说具有实际意义。   全书共分10章。范明负责第1~8章的翻译,范宏建负责第9章和第10章的翻译。蒋宏杰、贾玉祥、许红涛和温箐笛也参加本书的最初翻译工作。全书的译文由范明负责统一定稿。在翻译的过程中,对发现的错误进行了更正,并得到原书作者的确认。   感谢P. Tan、M. Steinbach和V. Kumar为中文版撰写序言。感谢人民邮电出版社图灵公司的编辑们,他们在第一时间内引进本书,并组织翻译,使得中文版能够如此之快地与读者见面。   译文中的错误和不当之处,敬请读者朋友指正。意见和建议请发往[email protected]。希望读者喜欢这本译著,希望这本译著有助于推动我国的数据挖掘研究与应用的深入开展。   范明   2006年2月于郑州大学    前言   数据生成和收集技术的进步促使商业和科研领域产生了海量数据集。数据仓库能够存储多种数据,如:企业销售和运作的详细情况,地球轨道卫星发送回地球的高分辨率图像和遥感数据,对越来越多的有机体进行的基因组实验产生的序列、结构和机能数据。收集和存储数据变得轻松简便,已经完全改变了人们对数据分析的态度,人们开始尽可能地收集各个时期和各种来源的数据。人们相信收集的数据肯定会有价值,或者当初收集它就有明确的目的,或者只是先收集起来再说。   传统数据分析技术在应对这些新型数据集提出的挑战时存在种种局限性,而数据挖掘技术突破了这些局限。数据挖掘并不是要取代其他分析领域,而是以它们为基础。尽管数据挖掘的某些主题(如关联分析)是其独有的,但是,还有许多主题(如聚类、分类和异常检测)则建立在其他领域长期工作的基础之上。事实上,数据挖掘研究者们主动利用已有技术对增强和拓展这个领域以及推动它的快速发展起到了促进作用。   该领域一直强调与其他领域的研究者合作,因而充满了活力。要迎接新类型数据分析的挑战,抛开理解数据的人和数据所处的领域而简单地使用数据分析技术是不可行的。通常,能否组建好多学科研究团队,已经成为数据挖掘项目(如创建新的独创性算法)成败的决定因素。正如历史上统计学的许多进展都是由农业、工业、医疗卫生和商业需求推动的一样,今天,数据挖掘的许多进展也正在被这些领域的需求所推动。   自1998年春季开始,我们在明尼苏达大学为高年级本科生和研究生开设了数据挖掘课程。为这些课程准备的演示幻灯片和习题随着时间不断积累,成为本书的基础。数据挖掘的聚类技术综述最初是为该领域的某项研究而写的,它也成为本书第8章的雏形。随着时间的推移,又增加了关于数据、分类、关联分析和异常检测的几章。本书定稿后已在作者所在的学校(明尼苏达大学和密歇根州立大学)以及其他一些大学作为教材试用。   在此期间,出现了许多数据挖掘方面的书籍,但是都不能完全满足我们学生的需要——他们主要是计算机科学专业的研究生和本科生,也包括来自工科和其他专业的学生。他们的数学和计算机背景差异很大,但是都有一个共同目标:尽可能直接地学习数据挖掘,尽快地将其应用到各自的领域。因此,要求较多数学和统计学预备知识的书对他们中的许多人都没有吸引力,需要坚实的数据库背景的书也有同样的问题。为了满足这些学生需求而逐渐写成的本书,现在的完稿使用了大量例子、习题并用简洁的语言描述了关键算法,尽可能直接把重点放在数据挖掘的主要概念上。   概述   具体而言,本书全面介绍了数据挖掘,方便学生、教师、研究人员和专业人士理解有关概念和技术。本书所涵盖的领域包括数据预处理、可视化、预测建模、关联分析、聚类和异常检测。目标是讲述每个主题的基本概念和算法,从而为读者提供将数据挖掘应用于实际问题所需的必要背景。此外,本书也为有志于从事数据挖掘和相关领域研究的读者提供一个起点。   本书涵盖五个主题:数据、分类、关联分析、聚类和异常检测。除异常检测外,每个主题都分两章讲述。对于分类、关联分析和聚类,前面一章讲述基本概念、代表性算法和评估技术,后面的一章深入讨论高级概念和算法。这样做的目的是使读者透彻地理解数据挖掘的基础,同时论述更多重要的高级主题。由于这种安排,本书既可用作为教材又可用作参考书。   为了帮助读者理解书中概念,我们提供大量示例、图表和习题。每一章的结尾给出了文献注释,是为那些对更高级的主题、重要的历史文献和当前趋势感兴趣的读者提供的。   致教师   作为一本教材,本书广泛适合于高年级本科生和研究生。由于学习这门课程的学生背景不同,他们可能不具备广博的统计学和数据库知识,因此本书只要求最低限度的预备知识——不需要数据库知识,并假定读者只有一般的统计学或数学背景。本书尽可能自成一体。统计学、线性代数和机器学习的必要基础知识或者已经融入正文,或者包含在附录中。   由于讨论主要数据挖掘主题的各章也是自成一体的,因此主题的讲授次序相当灵活。核心题材在第2、4、6、8和10章介绍。数据导论(第2章)应当最先讨论,基本的分类、关联分析和聚类(分别是第4、6、8章)可以以任意次序讲述。由于异常处理(第10章)与分类(第4章)和聚类(第8章)有一定的关系,这两章应当在第10章之前讲述。还可以根据课程安排和师生的兴趣从高级的分类、关联分析和聚类(分别为第5、7、9章)中选讲一些主题。我们也建议教师用数据挖掘的实际项目和练习强化课程的教学。尽管这样做很耗费时间,但是实践性的作业可以大大提高这门课程的价值。   支持材料   本书的教辅材料可以在Addison-Wesley的网站(www.aw-bc.com/cssupport)上找到 。提供给所有读者的支持材料如下。   课程幻灯片。   学生项目建议。   数据挖掘资源,如数据挖掘算法和数据集。   联机指南,使用实际的数据集和数据分析软件,为本书介绍的部分数据挖掘技术提供例子讲解。   其他支持材料(包括习题答案)只向采纳本书做教材的教师提供。意见和建议以及勘误请通过[email protected]发给作者。   致谢 .  许多人都为本书做出了贡献。我们首先向家人表示感谢,这本书是献给他们的。没有他们的耐心和支持,不可能写出本书。   我们要感谢明尼苏达大学和密歇根州立大学数据挖掘小组的学生所做的贡献。Eui-Hong(Sam)Han和Mahesh Joshi帮助我们准备了最初的数据挖掘课程。他们编制的某些习题和演示幻灯片已经收录在本书及其辅助幻灯片中。小组中的其他学生也为本书的初稿提出建议或以各种方式做出贡献,他们是Shyam Boriah、Haibin Cheng、Varun Chandola、Eric Eilertson、Levent Ert?z、Jing Gao、Rohit Gupta、Sridhar Iyer、Jung-Eun Lee、Benjamin Mayer、Aysel Ozgur、Uygar Oztekin、Gaurav Pandey、Kashif Riaz、Jerry Scripps、Gyorgy Simon、Hui Xiong、Jieping Ye和Pusheng Zhang。我们还要感谢明尼苏达大学和密歇根州立大学选修数据挖掘课程的学生,他们使用了本书的初稿,并提供了极富价值的反馈。我们特别感谢Bernardo Craemer、Arifin Ruslim、Jamshid Vayghan和Yu Wei的有益的建议。   Joydeep Ghosh(得克萨斯大学)和Sanjay Ranka(佛罗里达大学)试用了本书的初稿。我们也直接从得克萨斯大学下列学生那里获得了许多有用的建议:Pankaj Adhikari、Rajiv Bhatia、Frederic Bosche、Arindam Chakraborty、Meghana Deodhar、Chris Everson、David Gardner、Saad Godil、Todd Hay、Clint Jones、Ajay Joshi、Joonsoo Lee、Yue Luo、Anuj Nanavati、Tyler Olsen、Sunyoung Park、Aashish Phansalkar、Geoff Prewett、Michael Ryoo、Daryl Shannon和Mei Yang。   Ronald Kostoff(ONR)阅读了聚类部分的初稿,并提出了许多建议。Musetta Steinbach发现了图中的一些错误。   我们要感谢明尼苏达大学和密歇根州立大学的同事,他们帮助创建了良好的数据挖掘研究环境。他们是Dan Boley、Joyce Chai、Anil Jain、Ravi Janardan、Rong Jin、George Karypis、Haesun Park、William F. Punch、Shashi Shekhar和Jaideep Srivastava。我们还要向我们的数据挖掘项目的合作者表示谢意,他们是Ramesh Agrawal、Steve Cannon、Piet C. de Groen、Fran Hill、Yongdae Kim、Steve Klooster、Kerry Long、Nihar Mahapatra、Chris Potter、Jonathan Shapiro、Kevin Silverstein、Nevin Young和Zhi-Li Zhang。   明尼苏达大学和密歇根州立大学的计算机科学与工程系为本书写作及研究提供了计算资源和支持环境。ARDA、ARL、ARO、DOE、NASA和NSF等机构为本书作者提供了研究资助。特别应该提到的是,Kamal Abdali、Dick Brackney、Jagdish Chandra、Joe Coughlan、Michael Coyle、Stephen Davis、Frederica Darema、Richard Hirsch、Chandrika Kamath、Raju Namburu、N. Radhakrishnan、James Sidoran、Bhavani Thuraisingham、Walt Tiernin、Maria Zemankova和Xiaodong Zhang有力地支持了我们的数据挖掘和高性能计算研究。   与培生出版集团的工作人员的合作令人愉快。具体地,我们要感谢Michelle Brown、Matt Goldstein、Katherine Harutunian、Marilyn Lloyd、Kathy Smith和Joyce Wells。我们还要感谢George Nichols帮助绘图,Paul Anagnostopoulos提供LA TEX支持。我们感谢出版社邀请的审稿人:Chien-Chung Chan(阿克伦大学)、Zhengxin Chen(内布拉斯加大学奥马哈分校)、Chris Clifton(普度大学)、Joydeep Ghosh(得克萨斯大学奥斯汀分校)、Nazli Goharian(伊利诺伊理工学院)、J. Michael Hardin(阿拉巴马大学)、James Hearne(西华盛顿大学),Hillol Kargupta(马里兰大学巴尔的摩县分校和Agnik公司)、Eamonn Keogh(加利福尼亚大学里弗赛德分校)、Bing Liu(伊利诺伊大学芝加哥分校)、Mariofanna Milanova(阿肯色大学小石城分校)、Srinivasan Parthasarathy(俄亥俄州立大学)、Zbigniew W. Ras(北卡罗莱纳大学夏洛特分校)、Xintao Wu(北卡罗莱纳大学夏洛特分校)和Mohammed J. Zaki(伦斯勒理工学院)。    序言   我们非常欢迎由范明教授和范宏建博士等人将我们的书翻译成中文,他们在此之前翻译了几本关于统计学和数据挖掘方面的著名教材。数据挖掘是计算机科学的一‘个领域,其目的是通过分析快速增长的商业、科学和工程数据来获取知识和其他利益。我们已经目睹了这个领域的迅猛增长和发展,学者和研究人员大量涌入其中,他们不仅来自西方国家,而且来自远东地区。我们感谢范明教授和范宏建博士,他们的翻译成果使本书得以传播到更广的读者群,包括那些精通中文的学生和研究人员。我们期望读者会发现这是一部有用的和引人入胜的书籍。祝你们成功!   Pang-Ning Tan   Michael Steinbach   Vipin Kumar   2005年12月于密歇根州立大学和明尼苏达大学    媒体评论   “这是一本全新的数据挖掘教材,值得大力推荐。”   ——Jiawei Han   

2013-02-03

数据挖掘导论(完整版)(全面介绍数据挖掘的理论和方法)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 数据挖掘导论(完整版)(全面介绍数据挖掘的理论和方法) 基本信息 原书名: Introduction to Data Mining 原出版社: Addison Wesley 作者: (美)Pang-Ning Tan    Michael Steinbach    Vipin Kumar 译者: 范明 范宏建 丛书名: 图灵计算机科学 出版社:人民邮电出版社 ISBN:9787115241009 上架时间:2010-12-16 出版日期:2011 年1月 开本:16开 页码:463 版次:2-1 编辑推荐      《数据挖掘导论(完整版)》全面介绍了数据挖掘,涵盖了五个主题:数据、分类、关联分析、聚类和异常检测。除异常检测外,每个主题都有两章。前一章涵盖基本概念、代表性算法和评估技术,而后一章讨论高级概念和算法。这样读者在透彻地理解数据挖掘的基础的同时,还能够了解更多重要的高级主题。   《数据挖掘导论(完整版)》是明尼苏达大学和密歇根州立大学数据挖掘课程的教材,由于独具特色,正式出版之前就已经被斯坦福大学、得克萨斯大学奥斯汀分校等众多名校采用。《数据挖掘导论(完整版)》特色   与许多其他同类图书不同,《数据挖掘导论(完整版)》将重点放在如何用数据挖掘知识解决各种实际问题。   只要求具备很少的预备知识——不需要数据库背景,只需要很少的统计学或数学背景知识。   书中包含大量的图表、综合示例和丰富的习题,并且使用示例、关键算法的简洁描述和习题,尽可能直接聚焦于数   据挖掘的主要概念。   教辅内容极为丰富,包括课程幻灯片、学生课题建议、数据挖掘资源(如数据挖掘算法和数据集)、联机指南(使   用实际的数据集和数据分析软件,《数据挖掘导论(完整版)》介绍的部分数据挖掘技术提供例子讲解)。    内容简介回   《数据挖掘导论(完整版)》全面介绍了数据挖掘的理论和方法,旨在为读者提供将数据挖掘应用于实际问题所必需的知识。《数据挖掘导论(完整版)》涵盖五个主题:数据、分类、关联分析、聚类和异常检测。除异常检测外,每个主题都包含两章:前面一章讲述基本概念、代表性算法和评估技术,后面一章较深入地讨论高级概念和算法。目的是使读者在透彻地理解数据挖掘基础的同时,还能了解更多重要的高级主题。此外,书中还提供了大量示例、图表和习题。   《数据挖掘导论(完整版)》适合作为相关专业高年级本科生和研究生数据挖掘课程的教材,同时也可作为数据挖掘研究和应用开发人员的参考书。 作译者 作者:(美国)陈封能(Pang-Ning Tan) (美国)斯坦巴赫(Michael Steinbach) (美国)库玛尔(Vipin Kumar)   陈封能(Pang-Ning Tan)现为密歇根州立大学计算机与工程系助理教授,主要教授数据挖掘、数据库系统等课程。此前,他曾是明尼苏达大学美国陆军高性能计算研究中心副研究员(2002-2003)。   斯坦巴赫(Michael Steinbach)明尼苏达大学计算机与工程系研究员,在读博士。   库玛尔(Vipin Kumar)明尼苏达大学计算机科学与工程系主任,曾任美国陆军高性能计算研究中心主任.他拥有马里兰大学博士学位,是数据挖掘和高性能计算方面的国际权威,IEEE会士. 译者:范明 范宏建 等   范明,郑州大学信息工程学院教授,中国计算机学会数据库专业委员会委员、人工智能与模式识别专业委员会委员,长期从事计算机软件与理论教学和研究.先后发表论史40余篇.   范宏建 澳大利亚墨尔本大学计算机科学博士.先后在WWW、PAKDD、RSFDGrC、IEEE GrC和Australian AI等国际学术会议和IEEE Transactions on Knowledge and Data Engineering发表论文10余篇.目前是澳大利亚AUSTRAC的高级分析师. 目录 封面 -16 封底 -15 扉页 -14 版权 -13 版权声明 -12 中文版序 -11 完整版译者序 -10 译者序 -9 译者简介 -8 前言 -7 目录 -4 第1章 绪论 1 1.1 什么是数据挖掘 2 1.2 数据挖掘要解决的问题 2 1.3 数据挖掘的起源 3 1.4 数据挖掘任务 4 1.5 本书的内容与组织 7 文献注释 7 参考文献 8 习题 10 第2章 数据 13 2.1 数据类型 14 2.1.1 属性与度量 15 2.1.2 数据集的类型 18 2.2 数据质量 22 2.2.1 测量和数据收集问题 22 2.2.2 关于应用的问题 26 2.3 数据预处理 27 2.3.1 聚集 27 2.3.2 抽样 28 2.3.3 维归约 30 2.3.4 特征子集选择 31 2.3.5 特征创建 33 2.3.6 离散化和二元化 34 2.3.7 变量变换 38 2.4 相似性和相异性的度量 38 2.4.1 基础 39 2.4.2 简单属性之间的相似度和相异度 40 2.4.3 数据对象之间的相异度 41 2.4.4 数据对象之间的相似度 43 2.4.5 邻近性度量的例子 43 2.4.6 邻近度计算问题 48 2.4.7 选取正确的邻近性度量 50 文献注释 50 参考文献 52 习题 53 第3章 探索数据 59 3.1 鸢尾花数据集 59 3.2 汇总统计 60 3.2.1 频率和众数 60 3.2.2 百分位数 61 3.2.3 位置度量:均值和中位数 61 3.2.4 散布度量:极差和方差 62 3.2.5 多元汇总统计 63 3.2.6 汇总数据的其他方法 64 3.3 可视化 64 3.3.1 可视化的动机 64 3.3.2 一般概念 65 3.3.3 技术 67 3.3.4 可视化高维数据 75 3.3.5 注意事项 79 3.4 OLAP和多维数据分析 79 3.4.1 用多维数组表示鸢尾花数据 80 3.4.2 多维数据:一般情况 81 3.4.3 分析多维数据 82 3.4.4 关于多维数据分析的最后评述 84 文献注释 84 参考文献 85 习题 86 第4章 分类:基本概念、决策树与模型评估 89 4.1 预备知识 89 4.2 解决分类问题的一般方法 90 4.3 决策树归纳 92 4.3.1 决策树的工作原理 92 4.3.2 如何建立决策树 93 4.3.3 表示属性测试条件的方法 95 4.3.4 选择最佳划分的度量 96 4.3.5 决策树归纳算法 101 4.3.6 例子:Web 机器人检测 102 4.3.7 决策树归纳的特点 103 4.4 模型的过分拟合 106 4.4.1 噪声导致的过分拟合 107 4.4.2 缺乏代表性样本导致的过分拟合 109 4.4.3 过分拟合与多重比较过程 109 4.4.4 泛化误差估计 110 4.4.5 处理决策树归纳中的过分拟合 113 4.5 评估分类器的性能 114 4.5.1 保持方法 114 4.5.2 随机二次抽样 115 4.5.3 交叉验证 115 4.5.4 自助法 115 4.6 比较分类器的方法 116 4.6.1 估计准确度的置信区间 116 4.6.2 比较两个模型的性能 117 4.6.3 比较两种分类法的性能 118 文献注释 118 参考文献 120 习题 122 第5章 分类:其他技术 127 5.1 基于规则的分类器 127 5.1.1 基于规则的分类器的工作原理 128 5.1.2 规则的排序方案 129 5.1.3 如何建立基于规则的分类器 130 5.1.4 规则提取的直接方法 130 5.1.5 规则提取的间接方法 135 5.1.6 基于规则的分类器的特征 136 5.2 最近邻分类器 137 5.2.1 算法 138 5.2.2 最近邻分类器的特征 138 5.3 贝叶斯分类器 139 5.3.1 贝叶斯定理 139 5.3.2 贝叶斯定理在分类中的应用 140 5.3.3 朴素贝叶斯分类器 141 5.3.4 贝叶斯误差率 145 5.3.5 贝叶斯信念网络 147 5.4 人工神经网络 150 5.4.1 感知器 151 5.4.2 多层人工神经网络 153 5.4.3 人工神经网络的特点 155 5.5 支持向量机 156 5.5.1 最大边缘超平面 156 5.5.2 线性支持向量机:可分情况 157 5.5.3 线性支持向量机:不可分情况 162 5.5.4 非线性支持向量机 164 5.5.5 支持向量机的特征 168 5.6 组合方法 168 5.6.1 组合方法的基本原理 168 5.6.2 构建组合分类器的方法 169 5.6.3 偏倚—方差分解 171 5.6.4 装袋 173 5.6.5 提升 175 5.6.6 随机森林 178 5.6.7 组合方法的实验比较 179 5.7 不平衡类问题 180 5.7.1 可选度量 180 5.7.2 接受者操作特征曲线 182 5.7.3 代价敏感学习 184 5.7.4 基于抽样的方法 186 5.8 多类问题 187 文献注释 189 参考文献 190 习题 193 第6章 关联分析:基本概念和算法 201 6.1 问题定义 202 6.2 频繁项集的产生 204 6.2.1 先验原理 205 6.2.2 Apriori算法的频繁项集产生 206 6.2.3 候选的产生与剪枝 208 6.2.4 支持度计数 210 6.2.5 计算复杂度 213 6.3 规则产生 215 6.3.1 基于置信度的剪枝 215 6.3.2 Apriori算法中规则的产生 215 6.3.3 例:美国国会投票记录 217 6.4 频繁项集的紧凑表示 217 6.4.1 极大频繁项集 217 6.4.2 闭频繁项集 219 6.5 产生频繁项集的其他方法 221 6.6 FP增长算法 223 6.6.1 FP树表示法 224 6.6.2 FP增长算法的频繁项集产生 225 6.7 关联模式的评估 228 6.7.1 兴趣度的客观度量 228 6.7.2 多个二元变量的度量 235 6.7.3 辛普森悖论 236 6.8 倾斜支持度分布的影响 237 文献注释 240 参考文献 244 习题 250 第7章 关联分析:高级概念 259 7.1 处理分类属性 259 7.2 处理连续属性 261 7.2.1 基于离散化的方法 261 7.2.2 基于统计学的方法 263 7.2.3 非离散化方法 265 7.3 处理概念分层 266 7.4 序列模式 267 7.4.1 问题描述 267 7.4.2 序列模式发现 269 7.4.3 时限约束 271 7.4.4 可选计数方案 274 7.5 子图模式 275 7.5.1 图与子图 276 7.5.2 频繁子图挖掘 277 7.5.3 类Apriori方法 278 7.5.4 候选产生 279 7.5.5 候选剪枝 282 7.5.6 支持度计数 285 7.6 非频繁模式 285 7.6.1 负模式 285 7.6.2 负相关模式 286 7.6.3 非频繁模式、负模式和负相关模式比较 287 7.6.4 挖掘有趣的非频繁模式的技术 288 7.6.5 基于挖掘负模式的技术 288 7.6.6 基于支持度期望的技术 290 文献注释 292 参考文献 293 习题 295 第8章 聚类分析:基本概念和算法 305 8.1 概述 306 8.1.1 什么是聚类分析 306 8.1.2 不同的聚类类型 307 8.1.3 不同的簇类型 308 8.2 K均值 310 8.2.1 基本K均值算法 310 8.2.2 K均值:附加的问题 315 8.2.3 二分K均值 316 8.2.4 K均值和不同的簇类型 317 8.2.5 优点与缺点 318 8.2.6 K均值作为优化问题 319 8.3 凝聚层次聚类 320 8.3.1 基本凝聚层次聚类算法 321 8.3.2 特殊技术 322 8.3.3 簇邻近度的Lance-Williams公式 325 8.3.4 层次聚类的主要问题 326 8.3.5 优点与缺点 327 8.4 DBSCAN 327 8.4.1 传统的密度:基于中心的方法 327 8.4.2 DBSCAN算法 328 8.4.3 优点与缺点 329 8.5 簇评估 330 8.5.1 概述 332 8.5.2 非监督簇评估:使用凝聚度和分离度 332 8.5.3 非监督簇评估:使用邻近度矩阵 336 8.5.4 层次聚类的非监督评估 338 8.5.5 确定正确的簇个数 339 8.5.6 聚类趋势 339 8.5.7 簇有效性的监督度量 340 8.5.8 评估簇有效性度量的显著性 343 文献注释 344 参考文献 345 习题 347 第9章 聚类分析:其他问题与算法 355 9.1 数据、簇和聚类算法的特性 355 9.1.1 例子:比较K均值和DBSCAN 355 9.1.2 数据特性 356 9.1.3 簇特性 357 9.1.4 聚类算法的一般特性 358 9.2 基于原型的聚类 359 9.2.1 模糊聚类 359 9.2.2 使用混合模型的聚类 362 9.2.3 自组织映射 369 9.3 基于密度的聚类 372 9.3.1 基于网格的聚类 372 9.3.2 子空间聚类 374 9.3.3 DENCLUE:基于密度聚类的一种基于核的方案 377 9.4 基于图的聚类 379 9.4.1 稀疏化 379 9.4.2 最小生成树聚类 380 9.4.3 OPOSSUM:使用METIS的稀疏相似度最优划分 381 9.4.4 Chameleon:使用动态建模的层次聚类 381 9.4.5 共享最近邻相似度 385 9.4.6 Jarvis-Patrick聚类算法 387 9.4.7 SNN密度 388 9.4.8 基于SNN密度的聚类 389 9.5 可伸缩的聚类算法 390 9.5.1 可伸缩:一般问题和方法 391 9.5.2 BIRCH 392 9.5.3 CURE 393 9.6 使用哪种聚类算法 395 文献注释 397 参考文献 398 习题 400 第10章 异常检测 403 10.1 预备知识 404 10.1.1 异常的成因 404 10.1.2 异常检测方法 404 10.1.3 类标号的使用 405 10.1.4 问题 405 10.2 统计方法 406 10.2.1 检测一元正态分布中的离群点 407 10.2.2 多元正态分布的离群点 408 10.2.3 异常检测的混合模型方法 410 10.2.4 优点与缺点 411 10.3 基于邻近度的离群点检测 411 10.4 基于密度的离群点检测 412 10.4.1 使用相对密度的离群点检测 413 10.4.2 优点与缺点 414 10.5 基于聚类的技术 414 10.5.1 评估对象属于簇的程度 415 10.5.2 离群点对初始聚类的影响 416 10.5.3 使用簇的个数 416 10.5.4 优点与缺点 416 文献注释 417 参考文献 418 习题 420 附录A 线性代数 423 附录B 维归约 433 附录C 概率统计 445 附录D 回归 451 附录E 优化 457 译者序   自从我和孟小峰等人翻译J. Han和M. Kamber的《数据挖掘:概念与技术》以来,我们高兴地看到数据挖掘的研究正在我国蓬勃开展。许多学者和研究人员都对这个新兴的学科领域表现出了极大的兴趣,他们之中不仅有来自数据库领域的专家,而且不乏统计学、人工智能和模式识别、机器学习等领域的研究者。国内的学者和研究者在数据挖掘方面的研究已经取得了一些令人鼓舞的成果,并且正在逐渐与国际学术界同步。   数据挖掘的产生和发展一直是分析和理解数据的实际需求推动的。数据挖掘研究的进展也正是在于一直重视与其他领域研究者的合作。数据挖掘从工业、农业、医疗卫生和商业的需求中获得动力,从统计学、机器学习等领域的长期研究与发展中汲取营养。我们相信,只要有理解数据的需求,就有推动数据挖掘研究与应用发展的动力;只要依靠多学科的团队,就能应对新的数据分析任务带来的挑战。   P. Tan、M. Steinbach和V. Kumar编写的这本《数据挖掘导论》是继《数据挖掘:概念与技术》一书之后的另一本重要的数据挖掘著作。三位作者都从事数据挖掘研究多年,其中Vipin Kumar教授是数据挖掘和高性能计算领域的国际知名学者。本书原版在正式出版之前就已经被斯坦福大学、得克萨斯大学奥斯汀分校等众多名校采用。J. Han教授也高度评价该书:“这是一本全新数据挖掘的教材,值得大力推荐。它将成为我们的主要参考书。”   本书不需要读者具备数据库背景,只需要少量统计学或数学背景知识,而且取材涉及的学科和应用领域较多,实用性强,因此适合的读者面较广。本书强调如何用数据挖掘知识解决各种实际问题,强调所挖掘的知识模式的评估。例如,就像我们能够从天空中的白云想象出各种动物和物体一样,每个聚类算法能够从几乎所有的数据集中发现聚类。如果数据集合中根本不存在自然的簇,所产生的聚类很难说具有实际意义。   全书共分10章。范明负责第1~8章的翻译,范宏建负责第9章和第10章的翻译。蒋宏杰、贾玉祥、许红涛和温箐笛也参加本书的最初翻译工作。全书的译文由范明负责统一定稿。在翻译的过程中,对发现的错误进行了更正,并得到原书作者的确认。   感谢P. Tan、M. Steinbach和V. Kumar为中文版撰写序言。感谢人民邮电出版社图灵公司的编辑们,他们在第一时间内引进本书,并组织翻译,使得中文版能够如此之快地与读者见面。   译文中的错误和不当之处,敬请读者朋友指正。意见和建议请发往[email protected]。希望读者喜欢这本译著,希望这本译著有助于推动我国的数据挖掘研究与应用的深入开展。   范明   2006年2月于郑州大学    前言   数据生成和收集技术的进步促使商业和科研领域产生了海量数据集。数据仓库能够存储多种数据,如:企业销售和运作的详细情况,地球轨道卫星发送回地球的高分辨率图像和遥感数据,对越来越多的有机体进行的基因组实验产生的序列、结构和机能数据。收集和存储数据变得轻松简便,已经完全改变了人们对数据分析的态度,人们开始尽可能地收集各个时期和各种来源的数据。人们相信收集的数据肯定会有价值,或者当初收集它就有明确的目的,或者只是先收集起来再说。   传统数据分析技术在应对这些新型数据集提出的挑战时存在种种局限性,而数据挖掘技术突破了这些局限。数据挖掘并不是要取代其他分析领域,而是以它们为基础。尽管数据挖掘的某些主题(如关联分析)是其独有的,但是,还有许多主题(如聚类、分类和异常检测)则建立在其他领域长期工作的基础之上。事实上,数据挖掘研究者们主动利用已有技术对增强和拓展这个领域以及推动它的快速发展起到了促进作用。   该领域一直强调与其他领域的研究者合作,因而充满了活力。要迎接新类型数据分析的挑战,抛开理解数据的人和数据所处的领域而简单地使用数据分析技术是不可行的。通常,能否组建好多学科研究团队,已经成为数据挖掘项目(如创建新的独创性算法)成败的决定因素。正如历史上统计学的许多进展都是由农业、工业、医疗卫生和商业需求推动的一样,今天,数据挖掘的许多进展也正在被这些领域的需求所推动。   自1998年春季开始,我们在明尼苏达大学为高年级本科生和研究生开设了数据挖掘课程。为这些课程准备的演示幻灯片和习题随着时间不断积累,成为本书的基础。数据挖掘的聚类技术综述最初是为该领域的某项研究而写的,它也成为本书第8章的雏形。随着时间的推移,又增加了关于数据、分类、关联分析和异常检测的几章。本书定稿后已在作者所在的学校(明尼苏达大学和密歇根州立大学)以及其他一些大学作为教材试用。   在此期间,出现了许多数据挖掘方面的书籍,但是都不能完全满足我们学生的需要——他们主要是计算机科学专业的研究生和本科生,也包括来自工科和其他专业的学生。他们的数学和计算机背景差异很大,但是都有一个共同目标:尽可能直接地学习数据挖掘,尽快地将其应用到各自的领域。因此,要求较多数学和统计学预备知识的书对他们中的许多人都没有吸引力,需要坚实的数据库背景的书也有同样的问题。为了满足这些学生需求而逐渐写成的本书,现在的完稿使用了大量例子、习题并用简洁的语言描述了关键算法,尽可能直接把重点放在数据挖掘的主要概念上。   概述   具体而言,本书全面介绍了数据挖掘,方便学生、教师、研究人员和专业人士理解有关概念和技术。本书所涵盖的领域包括数据预处理、可视化、预测建模、关联分析、聚类和异常检测。目标是讲述每个主题的基本概念和算法,从而为读者提供将数据挖掘应用于实际问题所需的必要背景。此外,本书也为有志于从事数据挖掘和相关领域研究的读者提供一个起点。   本书涵盖五个主题:数据、分类、关联分析、聚类和异常检测。除异常检测外,每个主题都分两章讲述。对于分类、关联分析和聚类,前面一章讲述基本概念、代表性算法和评估技术,后面的一章深入讨论高级概念和算法。这样做的目的是使读者透彻地理解数据挖掘的基础,同时论述更多重要的高级主题。由于这种安排,本书既可用作为教材又可用作参考书。   为了帮助读者理解书中概念,我们提供大量示例、图表和习题。每一章的结尾给出了文献注释,是为那些对更高级的主题、重要的历史文献和当前趋势感兴趣的读者提供的。   致教师   作为一本教材,本书广泛适合于高年级本科生和研究生。由于学习这门课程的学生背景不同,他们可能不具备广博的统计学和数据库知识,因此本书只要求最低限度的预备知识——不需要数据库知识,并假定读者只有一般的统计学或数学背景。本书尽可能自成一体。统计学、线性代数和机器学习的必要基础知识或者已经融入正文,或者包含在附录中。   由于讨论主要数据挖掘主题的各章也是自成一体的,因此主题的讲授次序相当灵活。核心题材在第2、4、6、8和10章介绍。数据导论(第2章)应当最先讨论,基本的分类、关联分析和聚类(分别是第4、6、8章)可以以任意次序讲述。由于异常处理(第10章)与分类(第4章)和聚类(第8章)有一定的关系,这两章应当在第10章之前讲述。还可以根据课程安排和师生的兴趣从高级的分类、关联分析和聚类(分别为第5、7、9章)中选讲一些主题。我们也建议教师用数据挖掘的实际项目和练习强化课程的教学。尽管这样做很耗费时间,但是实践性的作业可以大大提高这门课程的价值。   支持材料   本书的教辅材料可以在Addison-Wesley的网站(www.aw-bc.com/cssupport)上找到 。提供给所有读者的支持材料如下。   课程幻灯片。   学生项目建议。   数据挖掘资源,如数据挖掘算法和数据集。   联机指南,使用实际的数据集和数据分析软件,为本书介绍的部分数据挖掘技术提供例子讲解。   其他支持材料(包括习题答案)只向采纳本书做教材的教师提供。意见和建议以及勘误请通过[email protected]发给作者。   致谢 .  许多人都为本书做出了贡献。我们首先向家人表示感谢,这本书是献给他们的。没有他们的耐心和支持,不可能写出本书。   我们要感谢明尼苏达大学和密歇根州立大学数据挖掘小组的学生所做的贡献。Eui-Hong(Sam)Han和Mahesh Joshi帮助我们准备了最初的数据挖掘课程。他们编制的某些习题和演示幻灯片已经收录在本书及其辅助幻灯片中。小组中的其他学生也为本书的初稿提出建议或以各种方式做出贡献,他们是Shyam Boriah、Haibin Cheng、Varun Chandola、Eric Eilertson、Levent Ert?z、Jing Gao、Rohit Gupta、Sridhar Iyer、Jung-Eun Lee、Benjamin Mayer、Aysel Ozgur、Uygar Oztekin、Gaurav Pandey、Kashif Riaz、Jerry Scripps、Gyorgy Simon、Hui Xiong、Jieping Ye和Pusheng Zhang。我们还要感谢明尼苏达大学和密歇根州立大学选修数据挖掘课程的学生,他们使用了本书的初稿,并提供了极富价值的反馈。我们特别感谢Bernardo Craemer、Arifin Ruslim、Jamshid Vayghan和Yu Wei的有益的建议。   Joydeep Ghosh(得克萨斯大学)和Sanjay Ranka(佛罗里达大学)试用了本书的初稿。我们也直接从得克萨斯大学下列学生那里获得了许多有用的建议:Pankaj Adhikari、Rajiv Bhatia、Frederic Bosche、Arindam Chakraborty、Meghana Deodhar、Chris Everson、David Gardner、Saad Godil、Todd Hay、Clint Jones、Ajay Joshi、Joonsoo Lee、Yue Luo、Anuj Nanavati、Tyler Olsen、Sunyoung Park、Aashish Phansalkar、Geoff Prewett、Michael Ryoo、Daryl Shannon和Mei Yang。   Ronald Kostoff(ONR)阅读了聚类部分的初稿,并提出了许多建议。Musetta Steinbach发现了图中的一些错误。   我们要感谢明尼苏达大学和密歇根州立大学的同事,他们帮助创建了良好的数据挖掘研究环境。他们是Dan Boley、Joyce Chai、Anil Jain、Ravi Janardan、Rong Jin、George Karypis、Haesun Park、William F. Punch、Shashi Shekhar和Jaideep Srivastava。我们还要向我们的数据挖掘项目的合作者表示谢意,他们是Ramesh Agrawal、Steve Cannon、Piet C. de Groen、Fran Hill、Yongdae Kim、Steve Klooster、Kerry Long、Nihar Mahapatra、Chris Potter、Jonathan Shapiro、Kevin Silverstein、Nevin Young和Zhi-Li Zhang。   明尼苏达大学和密歇根州立大学的计算机科学与工程系为本书写作及研究提供了计算资源和支持环境。ARDA、ARL、ARO、DOE、NASA和NSF等机构为本书作者提供了研究资助。特别应该提到的是,Kamal Abdali、Dick Brackney、Jagdish Chandra、Joe Coughlan、Michael Coyle、Stephen Davis、Frederica Darema、Richard Hirsch、Chandrika Kamath、Raju Namburu、N. Radhakrishnan、James Sidoran、Bhavani Thuraisingham、Walt Tiernin、Maria Zemankova和Xiaodong Zhang有力地支持了我们的数据挖掘和高性能计算研究。   与培生出版集团的工作人员的合作令人愉快。具体地,我们要感谢Michelle Brown、Matt Goldstein、Katherine Harutunian、Marilyn Lloyd、Kathy Smith和Joyce Wells。我们还要感谢George Nichols帮助绘图,Paul Anagnostopoulos提供LA TEX支持。我们感谢出版社邀请的审稿人:Chien-Chung Chan(阿克伦大学)、Zhengxin Chen(内布拉斯加大学奥马哈分校)、Chris Clifton(普度大学)、Joydeep Ghosh(得克萨斯大学奥斯汀分校)、Nazli Goharian(伊利诺伊理工学院)、J. Michael Hardin(阿拉巴马大学)、James Hearne(西华盛顿大学),Hillol Kargupta(马里兰大学巴尔的摩县分校和Agnik公司)、Eamonn Keogh(加利福尼亚大学里弗赛德分校)、Bing Liu(伊利诺伊大学芝加哥分校)、Mariofanna Milanova(阿肯色大学小石城分校)、Srinivasan Parthasarathy(俄亥俄州立大学)、Zbigniew W. Ras(北卡罗莱纳大学夏洛特分校)、Xintao Wu(北卡罗莱纳大学夏洛特分校)和Mohammed J. Zaki(伦斯勒理工学院)。    序言   我们非常欢迎由范明教授和范宏建博士等人将我们的书翻译成中文,他们在此之前翻译了几本关于统计学和数据挖掘方面的著名教材。数据挖掘是计算机科学的一‘个领域,其目的是通过分析快速增长的商业、科学和工程数据来获取知识和其他利益。我们已经目睹了这个领域的迅猛增长和发展,学者和研究人员大量涌入其中,他们不仅来自西方国家,而且来自远东地区。我们感谢范明教授和范宏建博士,他们的翻译成果使本书得以传播到更广的读者群,包括那些精通中文的学生和研究人员。我们期望读者会发现这是一部有用的和引人入胜的书籍。祝你们成功!   Pang-Ning Tan   Michael Steinbach   Vipin Kumar   2005年12月于密歇根州立大学和明尼苏达大学    媒体评论   “这是一本全新的数据挖掘教材,值得大力推荐。”   ——Jiawei Han   

2013-02-03

未公开的Oracle数据库秘密(大师秘笈助你内外兼修)--源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《未公开的Oracle数据库秘密》的源代码 对应的书籍资料见: 未公开的Oracle数据库秘密(大师秘笈助你内外兼修) 基本信息 原书名: Secrets of the Oracle Database 原出版社: Apress 作者: (德)Norbert Debes 译者: 蒋海鸥 李浩 金海 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115260161 上架时间:2011-8-19 出版日期:2011 年8月 开本:16开 页码:423 版次:1-1 编辑推荐   揭秘大量鲜为人知的特性    Oracle文档系统和Metalink支持平台的完美补充    大师秘笈助你内外兼修 内容简介   《未公开的Oracle数据库秘密》讲述了ORACLE 数据库管理系统中大量鲜为人知的特性,并详细生动地揭示了如何将这些特性集成到ORACLE DBMS 中。书中主要对初始化参数、数据字典基表、事件、X$ 固定表、SQL 语句、提供的PL/SQL 程序包、应用程序开发、性能、Oracle 网络、实时应用集群、实用工具等进行了深入的探讨,旨在提出一种解决问题的结构化方法,引导读者灵活自如地解决ORACLE DBMS 中遇到的棘手问题。《br》   《未公开的Oracle数据库秘密》适合具有一定ORACLE DBMS 管理经验的ORACLE 数据库管理员阅读。    作译者 作者:   Norbert Debes Oracle8、Oracle8i、Oracle9i注册专业Oracle DBA,先后担任Oracle德国分公司支持服务部组长、战略联盟技术客户经理。从2002年开始,他一直以DBA、性能工程师、架构师等身份担任大型公 司工业、金融、自动化、服务部门的独立顾问。他发表过不少关于Oracle的文章,在每年德国举行的Oracle用户组会议及许多商品交易会上公开宣讲 Oracle技术。他与人合著过两本关于Oracle9i的书。 译者:   蒋海鸥 华中科技大学计算机系统结构硕士,系统分析师、信息系统项目管理师,获得MySQL DBA认证,现就职于百度网页搜索部.   李浩 华中科技大学计算机系统结构硕士,专注于分布式存储系统的设计与实现,现从事数据挖掘相关工作.   金海 华中科技大学教授、博士生导师,长江学者特聘教授,华中科技大学计算机学院院长. 目录 封面 -22 封底 -21 扉页 -20 版权 -19 版权声明 -18 译者序 -17 序 -16 致谢 -15 引言 -18 目录 -6 第一部分 初始化参数 1 第1章 在文档中部分说明的参数 2 1.1 AUDITSYSLOGLEVEL 2 1.1.1 syslog 设备 2 1.1.2 审计简介 3 1.1.3 使用AUDITSYSLOGLEVEL 参数 4 1.1.4 审计非特权用户 5 1.1.5 小结 6 1.2 PGAAGGREGATETARGET 6 1.2.1 自动PGA 内存管理介绍 7 1.2.2 对PGAAGGREGATETARGET 的误解  8 1.2.3 研究PGAAGGREGATETARGET 9 1.2.4 使用管道表函数创建一个大表 9 1.2.5 V$SQLWORKAREAACTIVE 10 1.2.6 PGAMAX_SIZE 14 1.2.7 SMMMAX_SIZE 15 1.2.8 SMMPXMAXSIZE 15 1.2.9 共享服务器  15 1.2.10 并行执行  16 1.2.11 小结 17 1.3 EVENT  18 1.3.1 语法 18 1.3.2 在实例级别均衡事件 19 1.3.3 案例研究 19 1.4 OSAUTHENTPREFIX 19 1.4.1 OPS$数据库用户及密码文件身份认证 20 1.4.2 案例研究 20 1.4.3 小结 23 1.5 源代码库 23 第2章 隐藏的初始化参数 24 2.1 跟踪文件权限与TRACEFILES_PUBLIC 参数 24 2.2 ASM 测试环境与ASMALLOWONLYRAW_DISKS 参数 26 2.2.1 ASM 隐藏参数 26 2.2.2 为ASM 配置Oracle 集群件 27 2.2.3 ASM 实例设置 28 2.2.4 磁盘失效模拟 31 2.3 源代码库 31 第二部分 数据字典基表 33 第3章 数据字典基表介绍 34 第4章 IND$、V$OBJECT_USAGE 和索引监控 38 4.1 模式限制 38 4.2 索引使用监控案例研究 39 4.2.1 MONITORSCHEMAINDEXES函数 40 4.2.2 为HR 模式启动索引监控 40 4.2.3 小结 44 4.3 源代码库 45 第三部分 事 件 47 第5章 10027 事件和死锁诊断 48 5.1 死锁 48 5.2 10027 事件 49 第6章 10046 事件和扩展SQL 跟踪 52 第7章 10053 事件和基于成本的优化器 54 7.1 跟踪文件的内容 57 7.2 案例研究 57 7.2.1 查询块和对象标识符 58 7.2.2 考虑的查询转换 58 7.2.3 说明 60 7.2.4 绑定变量窥视的结果 61 7.2.5 优化器参数 61 7.2.6 系统统计信息 66 7.2.7 表和索引的对象统计信息 67 7.2.8 单表访问路径和成本 68 7.2.9 联结顺序 70 7.2.10 执行计划 73 7.2.11 谓词信息 74 7.2.12 提示和查询块名称 74 7.3 源代码库 75 第8章 10079 事件和Oracle 网络数据包的内容 76 第四部分 X$固定表 79 第9章 X$固定表介绍 80 9.1 X$固定表与C 语言编程 80 9.2 分层系统结构 81 9.3 授权访问X$表与V$视图 82 9.4 从V$视图深入剖析X$固定表 83 9.5 X$表与V$视图之间的关系 88 9.6 源代码库 89 第10章 X$BH 表及闩锁争用 90 第11章 X$KSLED 以及增强的会话等待数据 96 11.1 深度探讨视图V$SESSION_WAIT 96 11.2 改进的V$SESSION_WAIT 视图 97 11.3 源代码库 100 第12章 X$KFFXP 与ASM 元数据 101 12.1 固定表X$KFFXP 101 12.2 抢救SPFILE 文件 102 12.3 映射数据段到ASM 存储 104 第五部分 SQL 语句 107 第13章 ALTER SESSION/SYSTEMSET EVENTS 108 13.1 跟踪你自己的会话 108 13.2 ALTER SESSION SET EVENTS 109 13.3 ALTER SYSTEM SET EVENTS 110 13.4 ALTER SESSION/SYSTEM SETEVENTS 和诊断转储 111 13.5 立即转储 112 第14章 ALTER SESSION SETCURRENT_SCHEMA 113 14.1 特权用户与模式用户 113 14.2 ALTER SESSION SET CURRENT_SCHEMA限制 115 14.2.1 高级队列 116 14.2.2 RENAME 116 14.2.3 私有数据库链接 117 14.2.4 存储概要 118 第15章 ALTER USER IDENTIFIED BYVALUES 119 15.1 密码游戏 119 15.2 用ALTER USER IDENTIFIED BYVALUES 锁定账户 121 15.3 ALTER USER 和未加密的密码 122 第16章 SELECT FOR UPDATE SKIPLOCKED 124 16.1 高级队列 124 16.2 Contention 和SELECT FOR UPDATESKIP LOCKED 126 16.3 DBMS_LOCK——题外话 133 16.4 源代码库 136 第六部分 提供的PL/SQL 程序包 137 第17章 DBMSBACKUPRESTORE 138 17.1 恢复管理器  138 17.2 TDPO 灾难恢复案例研究 142 17.3 源代码库 144 第18章 DBMS_IJOB 145 18.1 介绍DBMS_JOB 145 18.2 BROKEN 过程 145 18.2.1 语法 145 18.2.2 参数 146 18.2.3 使用说明 146 18.2.4 范例 146 18.3 FULL_EXPORT 过程 146 18.3.1 语法 147 18.3.2 参数 147 18.3.3 范例 147 18.4 REMOVE 过程 148 18.4.1 语法 148 18.4.2 参数 148 18.4.3 范例 148 18.5 RUN 过程 148 18.5.1 语法 148 18.5.2 参数 148 18.5.3 使用说明 149 18.5.4 范例 149 18.6 源代码库 150 第19章 DBMS_SCHEDULER 151 19.1 使用数据库调度器运行外部作业 151 19.1.1 退出代码处理 152 19.1.2 标准错误输出 153 19.2 UNIX 系统上的外部作业 155 19.2.1 清除环境变量 155 19.2.2 命令行处理 157 19.2.3 外部作业与非特权用户 159 19.3 Windows 系统上的外部作业 161 19.3.1 命令行参数处理 161 19.3.2 Windows 环境变量 162 19.3.3 外部作业与非特权用户 163 19.3.4 ORADIM 实用工具创建的服务 163 19.3.5 OracleJobScheduler 服务 163 19.4 源代码库 164 第20章 DBMS_SYSTEM 165 20.1 GET_ENV 过程 165 20.1.1 语法 165 20.1.2 参数 165 20.1.3 使用说明 166 20.1.4 范例 166 20.2 KCFRMS 过程 166 20.2.1 语法 166 20.2.2 使用说明 166 20.2.3 范例 166 20.3 KSDDDT 过程 168 20.3.1 语法 168 20.3.2 使用说明 168 20.3.3 范例 168 20.4 KSDFLS 过程 169 20.4.1 语法 169 20.4.2 使用说明 169 20.4.3 范例 169 20.5 KSDIND 过程 169 20.5.1 语法 169 20.5.2 参数 169 20.5.3 使用说明 169 20.5.4 范例 170 20.6 KSDWRT 过程 170 20.6.1 语法 170 20.6.2 参数 170 20.6.3 使用说明 170 20.6.4 范例 171 20.7 READ_EV 过程 171 20.7.1 语法 171 20.7.2 参数 172 20.7.3 使用说明 172 20.7.4 范例 172 20.8 SETINTPARAMINSESSION 过程 172 20.8.1 语法 173 20.8.2 参数 173 20.8.3 使用说明 173 20.8.4 示例 173 20.9 SETBOOLPARAMINSESSION 过程 174 20.9.1 语法 174 20.9.2 参数 174 20.9.3 使用说明 174 20.9.4 示例 174 20.10 SET_EV 过程 175 20.10.1 语法 175 20.10.2 参数 175 20.10.3 使用说明 175 20.10.4 范例 175 20.11 SETSQLTRACEINSESSION 转储 177 20.11.1 语法 177 20.11.2 参数 177 20.11.3 使用说明 177 20.11.4 范例 177 20.12 WAITFOREVENT 过程 177 20.12.1 语法 177 20.12.2 参数 178 20.12.3 使用说明 178 20.12.4 范例 178 第21章 DBMS_UTILITY 179 21.1 NAME_RESOLVE 过程 179 21.1.1 语法 179 21.1.2 参数 180 21.1.3 使用说明 181 21.1.4 异常 181 21.1.5 范例 181 21.2 对象统计信息的名称解析和提取 183 21.3 源代码库 185 第七部分 应用程序开发 187 第22章 Perl DBI 与DBD::Oracle 188 22.1 常见的Perl DBI 陷阱 188 22.2 Perl 与DBI 简史 189 22.3 为Perl 与DBI 设置环境变量 189 22.3.1 UNIX 环境 189 22.3.2 Windows 环境 194 22.4 在UNIX 系统上透明地运行Perl程序 196 22.5 在Windows 系统上透明地运行Perl程序 197 22.6 连接到一个ORACLE DBMS 实例 199 22.6.1 DBI 连接语法 199 22.6.2 使用Bequeath 适配器连接 200 22.6.3 使用IPC 适配器连接 201 22.6.4 通过TCP/IP 适配器连接 202 22.6.5 简易连接 203 22.6.6 使用SYSDBA 或SYSOPER特权连接 203 22.6.7 使用操作系统认证连接 204 22.6.8 连接属性 205 22.7 完整Perl DBI 示例程序 206 22.8 异常处理 210 22.9 源代码库 211 第23章 应用程序插桩及端到端跟踪 212 23.1 插桩简介 212 23.2 案例研究 214 23.3 程序编译 216 23.4 插桩的运行 217 23.5 TRCSESS 的使用 221 23.6 插桩与程序调用栈 226 23.7 源代码库 227 第八部分 性 能 229 第24章 扩展SQL 跟踪文件格式参考 230 24.1 扩展SQL 跟踪文件介绍  230 24.2 SQL 和PL/SQL 语句 231 24.3 递归调用深度 231 24.4 数据库调用 232 24.4.1 解析 232 24.4.2 PARSING IN CURSOR 条目的格式 233 24.4.3 PARSE 条目的格式 235 24.4.4 PARSE ERROR 条目的格式 236 24.4.5 EXEC 条目的格式 236 24.4.6 FETCH 条目的格式 236 24.4.7 执行计划散列值 237 24.4.8 计划散列值案例研究 237 24.4.9 CLOSE 条目的格式 240 24.5 COMMIT 与ROLLBACK 241 24.6 UNMAP 242 24.7 执行计划、统计信息与STAT 条目的格式 242 24.7.1 Oracle9i 中STAT 条目的格式 243 24.7.2 Oracle10g 和Oracle11g 中STAT 条目的格式 243 24.8 等待事件  245 24.8.1 WAIT 条目的格式 245 24.8.2 Oracle9i 中的WAIT 246 24.8.3 Oracle10g 和Oracle11g 中的WAIT 246 24.9 绑定变量 247 24.9.1 BINDS 条目的格式  247 24.9.2 语句调优、执行计划以及绑定变量 251 24.10 跟踪文件条目其他项 257 24.10.1 会话标识符 257 24.10.2 服务名称ID 258 24.10.3 应用程序插桩 259 24.10.4 ERROR 条目的格式 261 24.10.5 应用程序插桩与并行执行进程 263 第25章 Statspack 265 25.1 Statspack 介绍 265 25.1.1 检索捕获到的SQL 语句文本 267 25.1.2 访问STATS$SQLTEXT 270 25.1.3 使用保留格式捕获SQL语句 275 25.2 未在文档中说明的Statspack 报告参数 277 25.3 Statspack 表 278 25.4 找出Statspack 库中代价高的语句 281 25.5 识别使用过的索引 281 25.6 SQL Trace 捕获语句的执行计划 282 25.7 找出高资源利用率的快照  284 25.7.1 高CPU 使用 285 25.7.2 高DB 时间 287 25.8 从另一数据库导入Statspack 数据 290 25.9 源代码库 292 第26章 整合扩展SQL 跟踪和AWR 294 26.1 检索执行计划 294 26.2 小结 296 26.3 源代码库 297 第27章 ESQLTRCPROF 扩展SQL跟踪分析器 298 27.1 分类等待事件 298 27.2 计算响应时间和统计信息 299 27.2.1 案例研究 300 27.2.2 运行Perl 程序 301 27.2.3 计算统计信息 303 27.2.4 计算响应时间 303 27.3 ESQLTRCPROF 参考 304 27.3.1 命令行选项 305 27.3.2 ESQLTRCPROF 报告部分 306 27.4 小结 314 27.5 源代码库 315 第28章 MERITS 性能优化方法 316 28.1 MERITS 方法简介 316 28.2 测量 317 28.3 评估 321 28.4 重现 323 28.5 改进 323 28.6 推断 324 28.7 安装 324 28.8 MERITS 方法案例研究 325 28.8.1 阶段1——测量  325 28.8.2 阶段2——评估  325 28.8.3 阶段3——重现  332 28.8.4 阶段4——改进  335 28.8.5 阶段5——推断  339 28.8.6 阶段6——安装  339 28.8.7 小结   339 28.9 源代码库 340 第九部分 Oracle Net 341 第29章 TNS 监听器IP 地址绑定与IP=FIRST 342 29.1 IP 地址绑定介绍 342 29.2 多宿主系统 344 29.3 IP=FIRST 未启用 345 29.3.1 主机名 346 29.3.2 回环适配器 347 29.3.3 引导IP 地址 348 29.3.4 服务IP 地址 348 29.4 IP=FIRST 开启 349 29.5 小结 350 第30章 TNS 监听器TCP/IP 有效结点检验 351 30.1 有效结点检验简介 351 30.2 在运行时打开和修改有效结点检验 353 第31章 本地命名参数ENABLE=BROKEN 356 第32章 Oracle Net 配置中默认的主机名 359 32.1 默认主机名 359 32.2 关闭默认监听器 360 第十部分 实时应用集群 363 第33章 会话断开连接、负载均衡与TAF 364 33.1 透明应用故障转移介绍 364 33.2 改变系统断开会话设置 365 33.2.1 SELECT 故障转移 366 33.2.2 在事务末的故障转移 369 33.3 会话中断和DBMS_SERVICE 371 33.3.1 使用DBMS_SERVICE 创建服务 372 33.3.2 DBMS_SERVICE 和TAF 下的会话中断 374 33.4 小结 376 33.5 源代码库 376 第34章 不重装就移除RAC 选项 377 34.1 连接ORACLE 软件 377 34.2 案例研究 378 34.2.1 模拟表决磁盘失效 379 34.2.2 使用make 工具移除RAC可选项 381 34.2.3 转换CRS 环境为本地环境 383 34.2.4 重启适用于RAC 的CRS环境 385 34.3 小结 386 第十一部分 实用工具 387 第35章 OERR 388 35.1 OERR 脚本介绍 388 35.2 检索未在文档中说明的事件 390 35.3 源代码库 392 第36章 数据恢复管理器管道接口 393 36.1 数据恢复管理介绍 393 36.2 DBMS_PIPE 介绍 394 36.3 RMANPIPEIF 包 395 36.4 RMANPIPEIF 包详述 395 36.5 使用RMANPIPEIF 包 396 36.6 验证备份块 401 36.7 跨节点并行备份与恢复 402 36.8 源码库 403 第37章 ORADEBUG SQL*Plus 命令 404 37.1 ORADEBUG 介绍 404 37.2 ORADEBUG 使用步骤 405 37.3 ORADEBUG 命令介绍 405 37.3.1 连接到一个进程 406 37.3.2 ORADEBUG IPC 408 37.3.3 ORADEBUG SHORT_STACK 409 37.3.4 诊断转储 410 37.4 小结 414 第十二部分 附 录 415 附录A 启用和禁用DBMS 可选项 416 附录B 参考书目 417 附录C 术语表 419 译者序   ORACLE是目前世界上最流行的大型关系数据库管理系统之一,它以高级结构化查询语言(SQL)为基础。目前,关于ORACLE数据库的书籍琳琅满目,但是鲜有专门针对未在相关文档中说明的高级特性的技术书籍。虽然开发者可以通过Internet或ORACLE的Metalink支持平台获得相关信息,但这会造成时间和金钱的大量浪费。本书是对ORACLE庞大文档系统和Metalink支持平台的有利补充和完善,旨在为大家揭示ORACLE数据库大量鲜为人知的特性,提升数据库的性能和功能。   本书是一本技术性较强的书籍,需要读者具有一定的数据库管理经验。本书组织结构极为清晰,每章开头都会介绍某个鲜为人知的特性所能带来的好处,以及与该特性相关的文档说明程度,并包括与该章主题相关的ORACLE数据库手册的引用。同时,每章最后都附有源代码文件及功能,这样读者就能及时地实现相关功能并加以巩固。阅读完本书,我们会知道这些没有相关文档说明的特性是如何集成到ORACLE DBMS中的,最重要的是我们能够学习如何从扩展的SQL跟踪数据得到一个基本的性能诊断方法。通过本书的学习,你也有能力继续揭秘ORACLE中更多鲜为人知的有用特性。也就是说,本书能教给读者一种举一反三的结构化方法。   本书的翻译工作得到了华中科技大学“服务计算技术与系统教育部重点实验室”和“集群与网络计算湖北省重点实验室”各位老师和同学的热心帮助,特别感谢金海老师、袁平鹏老师、谢夏老师、蒋文斌老师等实验室各位老师对我们的指导和无微不至的关心。   感谢李浩同学为该书作出的巨大贡献,没有他的辛勤付出就没有该书的出版,与他的合作非常愉快。同时,非常感谢好友潘李敏,感谢她参与了该书部分章节的翻译和审核工作,并提出了许多宝贵的建议;也非常感谢蔡亚男,一些章节因为她的参与和指导性建议变得通俗易懂、更加精彩。   最后,感谢图灵公司给了我们翻译这样一本好书的机会,感谢编辑为本书出版所做的细致入微的工作,特别感谢李松峰老师和傅志红老师为本书翻译提出的宝贵建议。衷心希望该书能让读者更便捷地获取信息、找到所求。   蒋海鸥   2011年6月23日于百度大厦    序言   如果你对某项技术拥有10多年的经验,这听起来会让人印象深刻。然而,如果你有超过20年的经验,这听起来就有点可悲了。可悲的是,我从事Oracle数据库软件工作将近21年了,接触的第一个Oracle数据库版本是5.1。   在我工作的早期,Oracle文档集只包括很少的手册。万维网(World Wide Web)还是5年之后才出现的事物,大部分人甚至都不能访问类似comp.databases.oracle的USENET Internet组。还没有关于Oracle的书出版。除了偶尔打电话给Oracle技术支持,你基本上是在孤军奋战。   从一开始,Oracle就比当时的其他软件(比如VMS、UNIX或者笨拙的MS-DOS)更神秘。Oracle是如何工作的?这个SQL为什么如此慢?我该怎么做才能让Oracle运行得更快?对Oracle秘密的求知欲使那些将Oracle软件作为事业基础的人们如痴如醉。   在整个20世纪90年代,Anjo Kolk、Cary Millsap等先驱者以及其他人都试图解释Oracle的内部工作方式,以及如何提升其性能和功能。Web出现了,有了它,Oracle技术人员有了一个能够交换信息的活跃社区。标准Oracle文档集随着每个版本的发布都有所增长,到了现在的Oracle   Database 11g,仅数据库集就包括140本书。曾经如涓涓细流般出版的技术书在Oracle5和Oracle6问世期间,如洪水般蜂拥而至,信息的匮乏变成了信息的泛滥。   也许你认为我们无所不知了。然而,Oracle让我想起了电视剧Lost,在每一集中,问题总会得到解决,但是新的问题又会出现。当你认为已经理解了数据库引擎是如何使用内存进行排序时,Oracle引进了自动PGA内存管理(Automatic PGA Memory Management);当你认为已经理解了闩锁(latch)时,Oracle引进了互斥锁(mutex),等等。想要了解Oracle,让它工作得更快更好,就不要停止学习的脚步。   那就是我非常喜欢Norbert书的原因。有些书总结和阐明了Oracle的文档化(documented)行为——Tom Kyte非凡的Expert Oracle Database Architecture一书就是非常好的例子。它包含了很多能在Oracle文档集和其他地方找到的资料,组织和总结了这些信息。其他一些书,比如Jonathan Lewis的杰出著作Cost-Based Oracle Fundamentals,将相关文档信息和原始研究结合起来,成为碰到特殊问题的权威参考。Norbert则不同,他试图说明Oracle软件的一些非常重要但鲜为人知的方面。   在这本书中,Norbert揭示了目前为止还没有相关文档说明的内部算法、PL/SQL包、参数、调试接口等。然而,这并不是一本琐碎的书,被揭示的每个秘密都有特定的应用场景。阅读本书让我受益颇多,我非常乐意将本书推荐给所有像我一样想去探寻Oracle秘密的人。   Guy Harrison,Quest Software企业发展总监   致谢   非常感谢以下人提供的意见、建议和给予的鼓励:Helga Debes、Lise Andreasen、Pete Finnigan和William Kehoe。特别感谢Iggy Fernandez把我介绍给Jonathan Gennick,也非常感谢Guy    Harrison为本书作序。同样感谢我所有的客户以及他们对我的信任。   

2013-02-03

未公开的Oracle数据库秘密(大师秘笈助你内外兼修)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 未公开的Oracle数据库秘密(大师秘笈助你内外兼修) 基本信息 原书名: Secrets of the Oracle Database 原出版社: Apress 作者: (德)Norbert Debes 译者: 蒋海鸥 李浩 金海 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115260161 上架时间:2011-8-19 出版日期:2011 年8月 开本:16开 页码:423 版次:1-1 编辑推荐   揭秘大量鲜为人知的特性    Oracle文档系统和Metalink支持平台的完美补充    大师秘笈助你内外兼修 内容简介   《未公开的Oracle数据库秘密》讲述了ORACLE 数据库管理系统中大量鲜为人知的特性,并详细生动地揭示了如何将这些特性集成到ORACLE DBMS 中。书中主要对初始化参数、数据字典基表、事件、X$ 固定表、SQL 语句、提供的PL/SQL 程序包、应用程序开发、性能、Oracle 网络、实时应用集群、实用工具等进行了深入的探讨,旨在提出一种解决问题的结构化方法,引导读者灵活自如地解决ORACLE DBMS 中遇到的棘手问题。《br》   《未公开的Oracle数据库秘密》适合具有一定ORACLE DBMS 管理经验的ORACLE 数据库管理员阅读。    作译者 作者:   Norbert Debes Oracle8、Oracle8i、Oracle9i注册专业Oracle DBA,先后担任Oracle德国分公司支持服务部组长、战略联盟技术客户经理。从2002年开始,他一直以DBA、性能工程师、架构师等身份担任大型公 司工业、金融、自动化、服务部门的独立顾问。他发表过不少关于Oracle的文章,在每年德国举行的Oracle用户组会议及许多商品交易会上公开宣讲 Oracle技术。他与人合著过两本关于Oracle9i的书。 译者:   蒋海鸥 华中科技大学计算机系统结构硕士,系统分析师、信息系统项目管理师,获得MySQL DBA认证,现就职于百度网页搜索部.   李浩 华中科技大学计算机系统结构硕士,专注于分布式存储系统的设计与实现,现从事数据挖掘相关工作.   金海 华中科技大学教授、博士生导师,长江学者特聘教授,华中科技大学计算机学院院长. 目录 封面 -22 封底 -21 扉页 -20 版权 -19 版权声明 -18 译者序 -17 序 -16 致谢 -15 引言 -18 目录 -6 第一部分 初始化参数 1 第1章 在文档中部分说明的参数 2 1.1 AUDITSYSLOGLEVEL 2 1.1.1 syslog 设备 2 1.1.2 审计简介 3 1.1.3 使用AUDITSYSLOGLEVEL 参数 4 1.1.4 审计非特权用户 5 1.1.5 小结 6 1.2 PGAAGGREGATETARGET 6 1.2.1 自动PGA 内存管理介绍 7 1.2.2 对PGAAGGREGATETARGET 的误解  8 1.2.3 研究PGAAGGREGATETARGET 9 1.2.4 使用管道表函数创建一个大表 9 1.2.5 V$SQLWORKAREAACTIVE 10 1.2.6 PGAMAX_SIZE 14 1.2.7 SMMMAX_SIZE 15 1.2.8 SMMPXMAXSIZE 15 1.2.9 共享服务器  15 1.2.10 并行执行  16 1.2.11 小结 17 1.3 EVENT  18 1.3.1 语法 18 1.3.2 在实例级别均衡事件 19 1.3.3 案例研究 19 1.4 OSAUTHENTPREFIX 19 1.4.1 OPS$数据库用户及密码文件身份认证 20 1.4.2 案例研究 20 1.4.3 小结 23 1.5 源代码库 23 第2章 隐藏的初始化参数 24 2.1 跟踪文件权限与TRACEFILES_PUBLIC 参数 24 2.2 ASM 测试环境与ASMALLOWONLYRAW_DISKS 参数 26 2.2.1 ASM 隐藏参数 26 2.2.2 为ASM 配置Oracle 集群件 27 2.2.3 ASM 实例设置 28 2.2.4 磁盘失效模拟 31 2.3 源代码库 31 第二部分 数据字典基表 33 第3章 数据字典基表介绍 34 第4章 IND$、V$OBJECT_USAGE 和索引监控 38 4.1 模式限制 38 4.2 索引使用监控案例研究 39 4.2.1 MONITORSCHEMAINDEXES函数 40 4.2.2 为HR 模式启动索引监控 40 4.2.3 小结 44 4.3 源代码库 45 第三部分 事 件 47 第5章 10027 事件和死锁诊断 48 5.1 死锁 48 5.2 10027 事件 49 第6章 10046 事件和扩展SQL 跟踪 52 第7章 10053 事件和基于成本的优化器 54 7.1 跟踪文件的内容 57 7.2 案例研究 57 7.2.1 查询块和对象标识符 58 7.2.2 考虑的查询转换 58 7.2.3 说明 60 7.2.4 绑定变量窥视的结果 61 7.2.5 优化器参数 61 7.2.6 系统统计信息 66 7.2.7 表和索引的对象统计信息 67 7.2.8 单表访问路径和成本 68 7.2.9 联结顺序 70 7.2.10 执行计划 73 7.2.11 谓词信息 74 7.2.12 提示和查询块名称 74 7.3 源代码库 75 第8章 10079 事件和Oracle 网络数据包的内容 76 第四部分 X$固定表 79 第9章 X$固定表介绍 80 9.1 X$固定表与C 语言编程 80 9.2 分层系统结构 81 9.3 授权访问X$表与V$视图 82 9.4 从V$视图深入剖析X$固定表 83 9.5 X$表与V$视图之间的关系 88 9.6 源代码库 89 第10章 X$BH 表及闩锁争用 90 第11章 X$KSLED 以及增强的会话等待数据 96 11.1 深度探讨视图V$SESSION_WAIT 96 11.2 改进的V$SESSION_WAIT 视图 97 11.3 源代码库 100 第12章 X$KFFXP 与ASM 元数据 101 12.1 固定表X$KFFXP 101 12.2 抢救SPFILE 文件 102 12.3 映射数据段到ASM 存储 104 第五部分 SQL 语句 107 第13章 ALTER SESSION/SYSTEMSET EVENTS 108 13.1 跟踪你自己的会话 108 13.2 ALTER SESSION SET EVENTS 109 13.3 ALTER SYSTEM SET EVENTS 110 13.4 ALTER SESSION/SYSTEM SETEVENTS 和诊断转储 111 13.5 立即转储 112 第14章 ALTER SESSION SETCURRENT_SCHEMA 113 14.1 特权用户与模式用户 113 14.2 ALTER SESSION SET CURRENT_SCHEMA限制 115 14.2.1 高级队列 116 14.2.2 RENAME 116 14.2.3 私有数据库链接 117 14.2.4 存储概要 118 第15章 ALTER USER IDENTIFIED BYVALUES 119 15.1 密码游戏 119 15.2 用ALTER USER IDENTIFIED BYVALUES 锁定账户 121 15.3 ALTER USER 和未加密的密码 122 第16章 SELECT FOR UPDATE SKIPLOCKED 124 16.1 高级队列 124 16.2 Contention 和SELECT FOR UPDATESKIP LOCKED 126 16.3 DBMS_LOCK——题外话 133 16.4 源代码库 136 第六部分 提供的PL/SQL 程序包 137 第17章 DBMSBACKUPRESTORE 138 17.1 恢复管理器  138 17.2 TDPO 灾难恢复案例研究 142 17.3 源代码库 144 第18章 DBMS_IJOB 145 18.1 介绍DBMS_JOB 145 18.2 BROKEN 过程 145 18.2.1 语法 145 18.2.2 参数 146 18.2.3 使用说明 146 18.2.4 范例 146 18.3 FULL_EXPORT 过程 146 18.3.1 语法 147 18.3.2 参数 147 18.3.3 范例 147 18.4 REMOVE 过程 148 18.4.1 语法 148 18.4.2 参数 148 18.4.3 范例 148 18.5 RUN 过程 148 18.5.1 语法 148 18.5.2 参数 148 18.5.3 使用说明 149 18.5.4 范例 149 18.6 源代码库 150 第19章 DBMS_SCHEDULER 151 19.1 使用数据库调度器运行外部作业 151 19.1.1 退出代码处理 152 19.1.2 标准错误输出 153 19.2 UNIX 系统上的外部作业 155 19.2.1 清除环境变量 155 19.2.2 命令行处理 157 19.2.3 外部作业与非特权用户 159 19.3 Windows 系统上的外部作业 161 19.3.1 命令行参数处理 161 19.3.2 Windows 环境变量 162 19.3.3 外部作业与非特权用户 163 19.3.4 ORADIM 实用工具创建的服务 163 19.3.5 OracleJobScheduler 服务 163 19.4 源代码库 164 第20章 DBMS_SYSTEM 165 20.1 GET_ENV 过程 165 20.1.1 语法 165 20.1.2 参数 165 20.1.3 使用说明 166 20.1.4 范例 166 20.2 KCFRMS 过程 166 20.2.1 语法 166 20.2.2 使用说明 166 20.2.3 范例 166 20.3 KSDDDT 过程 168 20.3.1 语法 168 20.3.2 使用说明 168 20.3.3 范例 168 20.4 KSDFLS 过程 169 20.4.1 语法 169 20.4.2 使用说明 169 20.4.3 范例 169 20.5 KSDIND 过程 169 20.5.1 语法 169 20.5.2 参数 169 20.5.3 使用说明 169 20.5.4 范例 170 20.6 KSDWRT 过程 170 20.6.1 语法 170 20.6.2 参数 170 20.6.3 使用说明 170 20.6.4 范例 171 20.7 READ_EV 过程 171 20.7.1 语法 171 20.7.2 参数 172 20.7.3 使用说明 172 20.7.4 范例 172 20.8 SETINTPARAMINSESSION 过程 172 20.8.1 语法 173 20.8.2 参数 173 20.8.3 使用说明 173 20.8.4 示例 173 20.9 SETBOOLPARAMINSESSION 过程 174 20.9.1 语法 174 20.9.2 参数 174 20.9.3 使用说明 174 20.9.4 示例 174 20.10 SET_EV 过程 175 20.10.1 语法 175 20.10.2 参数 175 20.10.3 使用说明 175 20.10.4 范例 175 20.11 SETSQLTRACEINSESSION 转储 177 20.11.1 语法 177 20.11.2 参数 177 20.11.3 使用说明 177 20.11.4 范例 177 20.12 WAITFOREVENT 过程 177 20.12.1 语法 177 20.12.2 参数 178 20.12.3 使用说明 178 20.12.4 范例 178 第21章 DBMS_UTILITY 179 21.1 NAME_RESOLVE 过程 179 21.1.1 语法 179 21.1.2 参数 180 21.1.3 使用说明 181 21.1.4 异常 181 21.1.5 范例 181 21.2 对象统计信息的名称解析和提取 183 21.3 源代码库 185 第七部分 应用程序开发 187 第22章 Perl DBI 与DBD::Oracle 188 22.1 常见的Perl DBI 陷阱 188 22.2 Perl 与DBI 简史 189 22.3 为Perl 与DBI 设置环境变量 189 22.3.1 UNIX 环境 189 22.3.2 Windows 环境 194 22.4 在UNIX 系统上透明地运行Perl程序 196 22.5 在Windows 系统上透明地运行Perl程序 197 22.6 连接到一个ORACLE DBMS 实例 199 22.6.1 DBI 连接语法 199 22.6.2 使用Bequeath 适配器连接 200 22.6.3 使用IPC 适配器连接 201 22.6.4 通过TCP/IP 适配器连接 202 22.6.5 简易连接 203 22.6.6 使用SYSDBA 或SYSOPER特权连接 203 22.6.7 使用操作系统认证连接 204 22.6.8 连接属性 205 22.7 完整Perl DBI 示例程序 206 22.8 异常处理 210 22.9 源代码库 211 第23章 应用程序插桩及端到端跟踪 212 23.1 插桩简介 212 23.2 案例研究 214 23.3 程序编译 216 23.4 插桩的运行 217 23.5 TRCSESS 的使用 221 23.6 插桩与程序调用栈 226 23.7 源代码库 227 第八部分 性 能 229 第24章 扩展SQL 跟踪文件格式参考 230 24.1 扩展SQL 跟踪文件介绍  230 24.2 SQL 和PL/SQL 语句 231 24.3 递归调用深度 231 24.4 数据库调用 232 24.4.1 解析 232 24.4.2 PARSING IN CURSOR 条目的格式 233 24.4.3 PARSE 条目的格式 235 24.4.4 PARSE ERROR 条目的格式 236 24.4.5 EXEC 条目的格式 236 24.4.6 FETCH 条目的格式 236 24.4.7 执行计划散列值 237 24.4.8 计划散列值案例研究 237 24.4.9 CLOSE 条目的格式 240 24.5 COMMIT 与ROLLBACK 241 24.6 UNMAP 242 24.7 执行计划、统计信息与STAT 条目的格式 242 24.7.1 Oracle9i 中STAT 条目的格式 243 24.7.2 Oracle10g 和Oracle11g 中STAT 条目的格式 243 24.8 等待事件  245 24.8.1 WAIT 条目的格式 245 24.8.2 Oracle9i 中的WAIT 246 24.8.3 Oracle10g 和Oracle11g 中的WAIT 246 24.9 绑定变量 247 24.9.1 BINDS 条目的格式  247 24.9.2 语句调优、执行计划以及绑定变量 251 24.10 跟踪文件条目其他项 257 24.10.1 会话标识符 257 24.10.2 服务名称ID 258 24.10.3 应用程序插桩 259 24.10.4 ERROR 条目的格式 261 24.10.5 应用程序插桩与并行执行进程 263 第25章 Statspack 265 25.1 Statspack 介绍 265 25.1.1 检索捕获到的SQL 语句文本 267 25.1.2 访问STATS$SQLTEXT 270 25.1.3 使用保留格式捕获SQL语句 275 25.2 未在文档中说明的Statspack 报告参数 277 25.3 Statspack 表 278 25.4 找出Statspack 库中代价高的语句 281 25.5 识别使用过的索引 281 25.6 SQL Trace 捕获语句的执行计划 282 25.7 找出高资源利用率的快照  284 25.7.1 高CPU 使用 285 25.7.2 高DB 时间 287 25.8 从另一数据库导入Statspack 数据 290 25.9 源代码库 292 第26章 整合扩展SQL 跟踪和AWR 294 26.1 检索执行计划 294 26.2 小结 296 26.3 源代码库 297 第27章 ESQLTRCPROF 扩展SQL跟踪分析器 298 27.1 分类等待事件 298 27.2 计算响应时间和统计信息 299 27.2.1 案例研究 300 27.2.2 运行Perl 程序 301 27.2.3 计算统计信息 303 27.2.4 计算响应时间 303 27.3 ESQLTRCPROF 参考 304 27.3.1 命令行选项 305 27.3.2 ESQLTRCPROF 报告部分 306 27.4 小结 314 27.5 源代码库 315 第28章 MERITS 性能优化方法 316 28.1 MERITS 方法简介 316 28.2 测量 317 28.3 评估 321 28.4 重现 323 28.5 改进 323 28.6 推断 324 28.7 安装 324 28.8 MERITS 方法案例研究 325 28.8.1 阶段1——测量  325 28.8.2 阶段2——评估  325 28.8.3 阶段3——重现  332 28.8.4 阶段4——改进  335 28.8.5 阶段5——推断  339 28.8.6 阶段6——安装  339 28.8.7 小结   339 28.9 源代码库 340 第九部分 Oracle Net 341 第29章 TNS 监听器IP 地址绑定与IP=FIRST 342 29.1 IP 地址绑定介绍 342 29.2 多宿主系统 344 29.3 IP=FIRST 未启用 345 29.3.1 主机名 346 29.3.2 回环适配器 347 29.3.3 引导IP 地址 348 29.3.4 服务IP 地址 348 29.4 IP=FIRST 开启 349 29.5 小结 350 第30章 TNS 监听器TCP/IP 有效结点检验 351 30.1 有效结点检验简介 351 30.2 在运行时打开和修改有效结点检验 353 第31章 本地命名参数ENABLE=BROKEN 356 第32章 Oracle Net 配置中默认的主机名 359 32.1 默认主机名 359 32.2 关闭默认监听器 360 第十部分 实时应用集群 363 第33章 会话断开连接、负载均衡与TAF 364 33.1 透明应用故障转移介绍 364 33.2 改变系统断开会话设置 365 33.2.1 SELECT 故障转移 366 33.2.2 在事务末的故障转移 369 33.3 会话中断和DBMS_SERVICE 371 33.3.1 使用DBMS_SERVICE 创建服务 372 33.3.2 DBMS_SERVICE 和TAF 下的会话中断 374 33.4 小结 376 33.5 源代码库 376 第34章 不重装就移除RAC 选项 377 34.1 连接ORACLE 软件 377 34.2 案例研究 378 34.2.1 模拟表决磁盘失效 379 34.2.2 使用make 工具移除RAC可选项 381 34.2.3 转换CRS 环境为本地环境 383 34.2.4 重启适用于RAC 的CRS环境 385 34.3 小结 386 第十一部分 实用工具 387 第35章 OERR 388 35.1 OERR 脚本介绍 388 35.2 检索未在文档中说明的事件 390 35.3 源代码库 392 第36章 数据恢复管理器管道接口 393 36.1 数据恢复管理介绍 393 36.2 DBMS_PIPE 介绍 394 36.3 RMANPIPEIF 包 395 36.4 RMANPIPEIF 包详述 395 36.5 使用RMANPIPEIF 包 396 36.6 验证备份块 401 36.7 跨节点并行备份与恢复 402 36.8 源码库 403 第37章 ORADEBUG SQL*Plus 命令 404 37.1 ORADEBUG 介绍 404 37.2 ORADEBUG 使用步骤 405 37.3 ORADEBUG 命令介绍 405 37.3.1 连接到一个进程 406 37.3.2 ORADEBUG IPC 408 37.3.3 ORADEBUG SHORT_STACK 409 37.3.4 诊断转储 410 37.4 小结 414 第十二部分 附 录 415 附录A 启用和禁用DBMS 可选项 416 附录B 参考书目 417 附录C 术语表 419 译者序   ORACLE是目前世界上最流行的大型关系数据库管理系统之一,它以高级结构化查询语言(SQL)为基础。目前,关于ORACLE数据库的书籍琳琅满目,但是鲜有专门针对未在相关文档中说明的高级特性的技术书籍。虽然开发者可以通过Internet或ORACLE的Metalink支持平台获得相关信息,但这会造成时间和金钱的大量浪费。本书是对ORACLE庞大文档系统和Metalink支持平台的有利补充和完善,旨在为大家揭示ORACLE数据库大量鲜为人知的特性,提升数据库的性能和功能。   本书是一本技术性较强的书籍,需要读者具有一定的数据库管理经验。本书组织结构极为清晰,每章开头都会介绍某个鲜为人知的特性所能带来的好处,以及与该特性相关的文档说明程度,并包括与该章主题相关的ORACLE数据库手册的引用。同时,每章最后都附有源代码文件及功能,这样读者就能及时地实现相关功能并加以巩固。阅读完本书,我们会知道这些没有相关文档说明的特性是如何集成到ORACLE DBMS中的,最重要的是我们能够学习如何从扩展的SQL跟踪数据得到一个基本的性能诊断方法。通过本书的学习,你也有能力继续揭秘ORACLE中更多鲜为人知的有用特性。也就是说,本书能教给读者一种举一反三的结构化方法。   本书的翻译工作得到了华中科技大学“服务计算技术与系统教育部重点实验室”和“集群与网络计算湖北省重点实验室”各位老师和同学的热心帮助,特别感谢金海老师、袁平鹏老师、谢夏老师、蒋文斌老师等实验室各位老师对我们的指导和无微不至的关心。   感谢李浩同学为该书作出的巨大贡献,没有他的辛勤付出就没有该书的出版,与他的合作非常愉快。同时,非常感谢好友潘李敏,感谢她参与了该书部分章节的翻译和审核工作,并提出了许多宝贵的建议;也非常感谢蔡亚男,一些章节因为她的参与和指导性建议变得通俗易懂、更加精彩。   最后,感谢图灵公司给了我们翻译这样一本好书的机会,感谢编辑为本书出版所做的细致入微的工作,特别感谢李松峰老师和傅志红老师为本书翻译提出的宝贵建议。衷心希望该书能让读者更便捷地获取信息、找到所求。   蒋海鸥   2011年6月23日于百度大厦    序言   如果你对某项技术拥有10多年的经验,这听起来会让人印象深刻。然而,如果你有超过20年的经验,这听起来就有点可悲了。可悲的是,我从事Oracle数据库软件工作将近21年了,接触的第一个Oracle数据库版本是5.1。   在我工作的早期,Oracle文档集只包括很少的手册。万维网(World Wide Web)还是5年之后才出现的事物,大部分人甚至都不能访问类似comp.databases.oracle的USENET Internet组。还没有关于Oracle的书出版。除了偶尔打电话给Oracle技术支持,你基本上是在孤军奋战。   从一开始,Oracle就比当时的其他软件(比如VMS、UNIX或者笨拙的MS-DOS)更神秘。Oracle是如何工作的?这个SQL为什么如此慢?我该怎么做才能让Oracle运行得更快?对Oracle秘密的求知欲使那些将Oracle软件作为事业基础的人们如痴如醉。   在整个20世纪90年代,Anjo Kolk、Cary Millsap等先驱者以及其他人都试图解释Oracle的内部工作方式,以及如何提升其性能和功能。Web出现了,有了它,Oracle技术人员有了一个能够交换信息的活跃社区。标准Oracle文档集随着每个版本的发布都有所增长,到了现在的Oracle   Database 11g,仅数据库集就包括140本书。曾经如涓涓细流般出版的技术书在Oracle5和Oracle6问世期间,如洪水般蜂拥而至,信息的匮乏变成了信息的泛滥。   也许你认为我们无所不知了。然而,Oracle让我想起了电视剧Lost,在每一集中,问题总会得到解决,但是新的问题又会出现。当你认为已经理解了数据库引擎是如何使用内存进行排序时,Oracle引进了自动PGA内存管理(Automatic PGA Memory Management);当你认为已经理解了闩锁(latch)时,Oracle引进了互斥锁(mutex),等等。想要了解Oracle,让它工作得更快更好,就不要停止学习的脚步。   那就是我非常喜欢Norbert书的原因。有些书总结和阐明了Oracle的文档化(documented)行为——Tom Kyte非凡的Expert Oracle Database Architecture一书就是非常好的例子。它包含了很多能在Oracle文档集和其他地方找到的资料,组织和总结了这些信息。其他一些书,比如Jonathan Lewis的杰出著作Cost-Based Oracle Fundamentals,将相关文档信息和原始研究结合起来,成为碰到特殊问题的权威参考。Norbert则不同,他试图说明Oracle软件的一些非常重要但鲜为人知的方面。   在这本书中,Norbert揭示了目前为止还没有相关文档说明的内部算法、PL/SQL包、参数、调试接口等。然而,这并不是一本琐碎的书,被揭示的每个秘密都有特定的应用场景。阅读本书让我受益颇多,我非常乐意将本书推荐给所有像我一样想去探寻Oracle秘密的人。   Guy Harrison,Quest Software企业发展总监   致谢   非常感谢以下人提供的意见、建议和给予的鼓励:Helga Debes、Lise Andreasen、Pete Finnigan和William Kehoe。特别感谢Iggy Fernandez把我介绍给Jonathan Gennick,也非常感谢Guy    Harrison为本书作序。同样感谢我所有的客户以及他们对我的信任。   

2013-02-03

Oracle Database 9i/10g/11g编程艺术:深入数据库体系结构(第2版)--源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Oracle Database 9i/10g/11g编程艺术:深入数据库体系结构(第2版)》的源代码 对应的书籍资料见: Oracle Database 9i/10g/11g编程艺术:深入数据库体系结构:第2版(世界顶级专家Thomas Kyte力作) 基本信息 原书名: Expert Oracle Database Architecture: Oracle Database Programming 9i, 10g, and 11g Techniques and Solutions, Second Edition [ 原出版社: Apress 作者: (美)Thomas Kyte 译者: 苏金国 王小振 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115244857 上架时间:2011-1-5 出版日期:2011 年1月 开本:16开 页码:706 版次:2-1 编辑推荐   久负盛名的Oracle经典    世界顶级专家Thomas Kyte力作    Ask Tom!解决你所有的Oracle疑难杂症 内容简介   本书是一本关于oracle database 9i、10g 和11g 数据库体系结构的权威图书,涵盖了所有重要的oracle 体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,分区和并行,以及数据加密等,并利用具体的例子来全面介绍每个特性,不仅讨论了各个特性是什么,还说明了它是如何工作的,如何使用这个特性来开发软件,以及有关的常见陷阱。    本书面向所有oracle 数据库应用开发人员和dba。 作译者 作者   Thomas Kyte Oracle公司核心技术集团副总裁。从5.1.1c版本开始使用Oracle,自7.0.9版本发布就一直任职于Oracle公司,帮助Oracle数据库用户设计和构建系统,或者对系统进行重构和调优。此前曾是一位系统集成师,主要为美国军方和政府部门的客户构建大规模的异构数据库和应用。长期主持Oracle Magazine “Ask Tom”专栏,热心回答困扰全世界Oracle开发人员和DBA的各种问题。除本书外,还著有广受好评的《Oracle专家高级编程》和《Oracle高效设计》。 作者: Thomas Kyte   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的各种问题。 目录 封面 -40 版权声明 -38 译者序 -37 序 -36 第1版序 -34 前言 -31 致谢 -24 配置环境 -23 目录 -5 第1章 开发成功的Oracle应用 1 1.1 我的方法 2 1.2 黑盒方法 3 1.3 开发数据库应用的正确(和不正确)方法 10 1.3.1 了解Oracle体系结构 11 1.3.2 理解并发控制 19 1.3.3 多版本控制 22 1.3.4 数据库独立性 28 1.3.5 怎么能让应用运行得更快 42 1.3.6 DBA与开发人员的关系 44 1.4 小结 45 第2章 体系结构概述 46 2.1 定义数据库和实例 47 2.2 SGA和后台进程 52 2.3 连接Oracle 54 2.3.1 专用服务器 54 2.3.2 共享服务器 56 2.3.3 TCP/IP连接的基本原理 57 2.4 小结 59 第3章 文件 60 3.1 参数文件 61 3.1.1 什么是参数 62 3.1.2 遗留的init.ORA参数文件 65 3.1.3 服务器参数文件 67 3.1.4 参数文件小结 72 3.2 跟踪文件 73 3.2.1 请求的跟踪文件 74 3.2.2 针对内部错误生成的跟踪文件 78 3.2.3 跟踪文件小结 82 3.3 警告文件 83 3.4 数据文件 85 3.4.1 简要回顾文件系统机制 86 3.4.2 Oracle数据库中的存储层次体系 87 3.4.3 字典管理和本地管理的表空间 90 3.5 临时文件 92 3.6 控制文件 94 3.7 重做日志文件 94 3.7.1 在线重做日志 95 3.7.2 归档重做日志 97 3.8 密码文件 99 3.9 修改跟踪文件 102 3.10 闪回日志 103 3.10.1 闪回数据库 103 3.10.2 闪回恢复区 104 3.11 DMP文件(EXP/IMP文件) 104 3.12 数据泵文件 105 3.13 平面文件 108 3.14 小结 109 第4章 内存结构 110 4.1 进程全局区和用户全局区 110 4.1.1 手动PGA内存管理 111 4.1.2 自动PGA内存管理 117 4.1.3 手动和自动内存管理的选择 127 4.1.4 PGA和UGA小结 129 4.2 系统全局区 129 4.2.1 固定SGA 133 4.2.2 重做缓冲区 134 4.2.3 块缓冲区缓存 135 4.2.4 共享池 141 4.2.5 大池 143 4.2.6 JAVA池 144 4.2.7 流池 145 4.2.8 自动SGA内存管理 145 4.2.9 自动内存管理 147 4.3 小结 148 第5章 Oracle进程 149 5.1 服务器进程 149 5.1.1 专用服务器连接 150 5.1.2 共享服务器连接 152 5.1.3 数据库常驻连接池 152 5.1.4 连接与会话 153 5.1.5 专用服务器与共享服务器 158 5.1.6 专用/共享服务器小结 161 5.2 后台进程 162 5.2.1 中心后台进程 163 5.2.2 工具后台进程 171 5.3 从属进程 173 5.3.1 I/O从属进程 173 5.3.2 Pnnn:并行查询执行服务器 174 5.4 小结 175 第6章 锁和闩 176 6.1 什么是锁 176 6.2 锁定问题 179 6.2.1 丢失更新 179 6.2.2 悲观锁定 180 6.2.3 乐观锁定 182 6.2.4 乐观锁定还是悲观锁定 188 6.2.5 阻塞 188 6.2.6 死锁 191 6.2.7 锁升级 195 6.3 锁类型 195 6.3.1 DML锁 196 6.3.2 DDL锁 204 6.3.3 闩 209 6.3.4 手动锁定和用户定义锁 217 6.4 小结 218 第7章 并发与多版本控制 219 7.1 什么是并发控制 219 7.2 事务隔离级别 220 7.2.1 READ UNCOMMITTED 221 7.2.2 READ COMMITTED 223 7.2.3 REPEATABLE READ 224 7.2.4 SERIALIZABLE 226 7.2.5 READ ONLY 228 7.3 多版本控制读一致性的含义 229 7.3.1 一种会失败的常用数据仓库技术 229 7.3.2 解释热表上超出期望的I/O 230 7.4 写一致性 233 7.4.1 一致读和当前读 233 7.4.2 查看重启动 235 7.4.3 为什么重启动对我们很重要 238 7.5 小结 239 第8章 事务 240 8.1 事务控制语句 240 8.2 原子性 242 8.2.1 语句级原子性 242 8.2.2 过程级原子性 244 8.2.3 事务级原子性 247 8.2.4 DDL与原子性 247 8.3 持久性 247 8.3.1 COMMIT的WRITE扩展 248 8.3.2 非分布式PL/SQL代码块中的COMMIT 249 8.4 完整性约束和事务 250 8.4.1 IMMEDIATE约束 251 8.4.2 DEFERRABLE约束和级联更新 251 8.5 不好的事务习惯 255 8.5.1 在循环中提交 255 8.5.2 使用自动提交 261 8.6 分布式事务 261 8.7 自治事务 263 8.7.1 自治事务如何工作 264 8.7.2 何时使用自治事务 265 8.8 小结 268 第9章 redo与undo 269 9.1 什么是redo 269 9.2 什么是undo 270 9.3 redo和undo如何协作 273 9.4 提交和回滚处理 277 9.4.1 COMMIT做什么 277 9.4.2 ROLLBACK做什么 283 9.5 分析redo 284 9.5.1 测量redo 284 9.5.2 能关掉重做日志生成程序吗 286 9.5.3 为什么不能分配一个新日志 289 9.5.4 块清除 291 9.5.5 日志竞争 294 9.5.6 临时表和redo/undo 296 9.6 分析undo 299 9.6.1 什么操作会生成最多和最少的undo 299 9.6.2 ORA-01555: snapshot too old 错误 301 9.7 小结 310 第10章 数据库表 311 10.1 表类型 311 10.2 术语 313 10.2.1 段 313 10.2.2 段空间管理 315 10.2.3 高水位线 316 10.2.4 FREELIST 317 10.2.5 PCTFREE和PCTUSED 320 10.2.6 LOGGING和NOLOGGING 323 10.2.7 INITRANS和MAXTRANS 324 10.3 堆组织表 324 10.4 索引组织表 327 10.5 索引聚簇表 340 10.6 散列聚簇表 347 10.7 有序散列聚簇表 355 10.8 嵌套表 357 10.8.1 嵌套表语法 358 10.8.2 嵌套表存储 364 10.8.3 嵌套表小结 367 10.9 临时表 368 10.10 对象表 374 10.11 小结 380 第11章 索引 382 11.1 Oracle索引概述 382 11.2 B*树索引 384 11.2.1 索引键压缩 386 11.2.2 反向键索引 389 11.2.3 降序索引 -1 11.2.4 什么情况下应该使用B*树索引 396 11.2.5 B*树小结 405 11.3 位图索引 406 11.3.1 什么情况下应该使用位图索引 407 11.3.2 位图联结索引 410 11.3.3 位图索引小结 413 11.4 基于函数的索引 413 11.4.1 重要的实现细节 413 11.4.2 一个简单的基于函数的索引例子 414 11.4.3 只对部分行建立索引 422 11.4.4 实现有选择的唯一性 424 11.4.5 关于ORA-01743的警告 424 11.4.6 基于函数的索引小结 425 11.5 应用域索引 -1 11.6 关于索引的常见问题和神话 426 11.6.1 视图能使用索引吗 427 11.6.2 Null和索引能协作吗 427 11.6.3 外键是否应该加索引 429 11.6.4 为什么没有使用我的索引 430 11.6.5 神话:索引中从不重用空间 435 11.6.6 神话:最有差别的元素应该在最前面 438 11.7 小结 441 第12章 数据类型 442 12.1 Oracle数据类型概述 442 12.2 字符和二进制串类型 444 12.2.1 NLS概述 445 12.2.2 字符串 448 12.3 二进制串:RAW类型 453 12.4 数值类型 455 12.4.1 NUMBEI类型的语法和用法 457 12.4.2 BINARY_FLOAT/BINARY_DOUBLE类型的语法和用法 460 12.4.3 非固有数值类型 461 12.4.4 性能考虑 461 12.5 LONG类型 463 12.5.1 LONG和LONG RAW类型的限制 463 12.5.2 处理遗留的LONG类型 464 12.6 DATE、TIMESTAMP和INTERVAL类型 469 12.6.1 格式 469 12.6.2 DATE类型 470 12.6.3 TIMESTAMP类型 475 12.6.4 INTERCAL类型 482 12.7 LOB类型 484 12.7.1 内部LOB -1 12.7.2 BFILE 495 12.8 ROWID/UROWID类型 497 12.9 小结 497 第13章 分区 499 13.1 分区概述 499 13.1.1 提高可用性 500 13.1.2 减少管理负担 502 13.1.3 改善语句性能 505 13.2 表分区机制 507 13.2.1 区间分区 508 13.2.2 散列分区 510 13.2.3 列表分区 513 13.2.4 间隔分区 515 13.2.5 引用分区 520 13.2.6 组合分区 524 13.2.7 行移动 526 13.2.8 表分区机制小结 528 13.3 索引分区 529 13.3.1 局部索引与全局索引 530 13.3.2 局部索引 530 13.3.3 全局索引 535 13.4 再论分区和性能 547 13.5 审计和段空间压缩 552 13.6 小结 553 第14章 并行执行 555 14.1 何时使用并行执行 556 14.2 Oracle Exadata 558 14.3 并行查询 558 14.4 并行DML 564 14.5 并行DDL 566 14.5.1 并行DDL和使用外部表的数据加载 567 14.5.2 并行DDL和区段截断 568 14.6 并行恢复 576 14.7 过程并行化 577 14.7.1 并行管道函数 578 14.7.2 DIY并行化 580 14.7.3 老式DIY并行化 583 14.8 小结 587 第15章 数据加载和卸载 588 15.1 SQLLDR 588 15.1.1 用SQLLDR加载数据的常见问题 592 15.1.2 SQLLDR警告 613 15.1.3 SQLLDR小结 614 15.2 外部表 614 15.2.1 建立外部表 615 15.2.2 处理错误 619 15.2.3 使用外部表加载不同的文件 622 15.2.4 多用户问题 623 15.2.5 外部表小结 624 15.3 平面文件卸载 624 15.4 数据泵卸载 631 15.5 小结 633 第16章 数据加密 634 16.1 加密类型 634 16.1.1 动态数据 634 16.1.2 静态数据 635 16.1.3 手动应用加密 638 16.1.4 Oracle钱夹 639 16.1.5 透明列级加密 641 16.1.6 透明表空间加密 644 16.2 加密不是访问控制 646 16.3 实现手动应用加密 647 16.3.1 避免使用手动方法的原因 648 16.3.2 手动方法的性能影响 648 16.3.3 何时使用手动方法 652 16.4 实现列级加密 652 16.4.1 如何使用列级加密 653 16.4.2 列级加密的数据存储 653 16.4.3 测量列级加密的性能影响 657 16.4.4 影响大小 657 16.4.5 列级加密的限制 662 16.5 实现表空间加密 663 16.5.1 如何使用表空间加密 663 16.5.2 表空间加密的数据存储 664 16.5.3 测量表空间加密的性能影响 665 16.6 决定采用哪种加密技术 670 16.7 小结 671 索引 672 译者序   Oracle Database 11g的推出让关注Oracle的人欣喜万分,不过也不免有些担心,因为此前还没有合适的书系统而深入地介绍这个新版本。要想学习和掌握它的诸多新特性,只能从Oracle手册入手,而数万页的11g手册不免让人心存畏惧,从中挑出对新特性的描述更需要一双“火眼金睛”。   好消息!在本书第1版出版时隔4年后,Thomas Kyte及时了解了大家的这一迫切需求,根据他的实战经验以及人们最关心的问题对这本书做了全面补充和调整,以涵盖11g最受关注的多项特性。例如11g引入dbms_parallel_execute包来帮助自动实现原来需要人工实现的并行化,以及引入PSQ来控制并行度,限制资源的过度使用,从而进一步改进并行化的实现。11g还增加了对递归调用子查询的支持,来避免原先令人费解的connect by语法。另外通过闪回数据归档支持长期闪回查询,这意味着查询几个月前甚至几年前的数据不再是奇谈。延迟段创建特性的引入更让我们看到了Oracle对于性能的“锱珠必较”和精益求精。所有这些内容都在这一版中得以体现,Tom还专门增加了一章来讨论Oracle中的数据加密。相信你的问题都能在这一版中得到解答。   这一版仍沿袭了上一版的叙事风格,Tom通过轻松交流的方式,让你从具体的例子、具体的实践中了解技术细节,在知道“怎样做”的同时还能理解“为什么这样做”。还特别根据读者对上一版内容的反馈,在文中追加了大量注解,另外还利用注解强调了11g与9i/10g的区别。相信你已经迫不及待地想要翻开下一页了,那么,进入Tom的Oracle世界吧!   很高兴上一版出版后得到了读者的青睐,能够让更多中国读者领略Tom的这一力作,这让我们也倍感自豪。对于第2版的翻译,我们同样不敢马虎,尽量减少歧义,希望能让读者更轻松地阅读和理解。不过由于水平有限,译文肯定有不当之处,敬请批评指正。       前言   过去我一直在开发Oracle软件,并与其他Oracle开发人员一同工作,帮助他们构建可靠、健壮的基于Oracle数据库应用程序。在这个过程中积累了一些经验,正是这些经验赋予我灵感,才有了本书中的内容。这本书实际上反映了我每天做了些什么,汇集了我所看到的人们每天遇到的问题。   本书涵盖了我认为最重要的一些内容,即Oracle数据库及其体系结构。我也可以写一本书名类似的其他方面的书,向你解释如何用一种特定的语言和体系结构开发应用程序。例如,我可以告诉你如何使用JSP(JavaServer Pages)与EJB(Enterprise JavaBeans)通信,EJB又如何使用JDBC与Oracle通信。不过,归根结底,最后还是要了解Oracle数据库及其体系结构(本书介绍的内容),才能成功地构建这样一个应用程序。要想成功地使用Oracle进行开发,我认为有些内容你必须了解,而不论你是一位使用ODBC的Visual Basic程序员、使用EJB和JDBC的Java程序员,还是使用DBI Perl的Perl程序员,这本书都会介绍这些通用的知识。本书并不推崇哪一种特定的应用体系结构,在此没有比较三层结构和客户/服务器结构孰优孰劣。我们只是讨论数据库能做什么,另外关于数据库如何工作,我们还会指出你必须了解哪些内容。由于数据库是所有应用体系结构的核心,所以这本书适用面很广。   顾名思义,本书的重点是数据库体系结构,并强调数据库本身如何工作。我会深入地分析Oracle数据库体系结构,包括文件、内存结构以及构成Oracle数据库和实例的进程。然后讨论一些重要的数据库主题,如锁定、并发控制、事务、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手册,或者还没有看过,那我可以告诉你,这个手册绝对是一个很好的起点。它大约有400页(我知道页数是因为我编写了一部分,并且编辑了每一页),涉及你需要知道的许多重要的Oracle概念。其中不会涵盖每一个技术细节(Oracle文档提供了技术细节,不过它有10 000页到20 000页之多),但你能从中学到所有重要的概念。这个手册涉及以下主题(这里所列的并不完整):   数据库中的结构,数据如何组织和存储;   分布式处理;   Oracle的内存体系结构;   Oracle的进程体系结构; .  你要使用的模式对象(表、索引、聚簇等);   内置数据类型和用户定义的数据类型;   SQL存储过程;   事务如何工作;   优化器;   数据完整性;   并发控制。   我自己也会时不时地温习这些内容。这些都是基础,如果不了解这些知识,创建的Oracle应用程序就很容易失败。建议通读Oracle Concepts手册来了解这些主题。   本书组织结构   为了帮助你更好地使用本书,大部分章都分为4个部分(见稍后的内容)。这个划分并不严格,不过有助于你快速地找到感兴趣的方面,从中获得所需的更多信息。本书有16章,每一章都像一本“迷你书”,可以单独成册。有时我会引用其他章中的例子或特性,不过你完全可以从书中任选一章,不参考其他章也能顺利阅读。例如,要理解或使用第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 Database 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)等问题的关系。   这一章的9.6节中讨论了撤销数据的作用,并介绍哪些操作会生成最多/最少的undo。最后分析“讨厌”的ORA-01555:snapshot too old(ORA-01555:快照太旧)错误,解释导致这个错误的可能原因,并说明如何避免。   第10章:数据库表   Oracle现在支持多种表类型。这一章将分别介绍每一种类型,包括堆组织表(heap organized,也就是默认的“普通”表)、索引组织表(index organized)、索引聚簇表(index clustered)、散列聚簇表(hash clustered)、嵌套表(nested)、临时表(temporary)和对象表(object),并讨论什么时候使用这些类型的表、如何使用以及为什么使用。大多数情况下,堆组织表就足够了,不过这一章还将帮助你认识到在哪些情况下使用其他类型的表更合适。   第11章:索引   索引是应用设计的一个重要方面。要想正确地实现索引,要求深入地了解数据,清楚数据如何分布,并且知道要如何使用数据。人们经常把索引当做“马后炮”,直到应用开发的后期才增加,这就会导致应用的性能低下。   这一章将详细分析各种类型的索引,包括B*树索引、位图索引(bitmap index)、基于函数的索引(function-based index)和应用域索引(application domain index),并讨论各种索引应该在哪些场合使用,以及哪些场合不适用。我会在11.6节回答常常被问到的一些问题,如“索引能在视图上使用吗”和“为什么没有使用我的索引”。   第12章:数据类型   有许多数据类型可供选择。这一章会逐一分析22种内置数据类型,解释这些类型是如何实现的,并说明如何以及何时使用这些数据类型。首先对国家语言支持(National Language Support,NLS)做一个简要的概述。要想充分理解Oracle中简单的串类型,必须先掌握这个基础知识。接下来再讨论广泛使用的NUMBER类型,并介绍Oracle Database 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)的概念,并说明了如何使用并行执行。首先指出并行处理在什么情况下有用,以及哪些情况下不应考虑使用它。有了一定的认识后,再来讨论并行查询的机制,大多数人提到并行执行都会想到这个特性。接下来讨论PDML(parallel DML,并行DML),利用PDML,可以使用并行执行完成修改。我们会介绍PDML在物理上如何实现,并说明为什么这个实现会对PDML带来一系列限制。   然后再来看并行DDL。在我看来,这才是并行执行真正的闪光之处。通常,DBA会利用一些小的维护窗口来完成大量的操作。利用并行DDL,DBA就能充分利用可用的机器资源,在很短的时间内完成很大、很复杂的操作(它只需原先串行执行所需时间的很小一部分)。   这一章的最后将讨论过程并行机制(procedural parallelism),采用这种方法可以并行地执行应用程序代码。这里将介绍两个技术。首先是并行管道函数(parallel pipelined function),即Oracle动态地并行执行存储函数。第二个技术是DIY并行机制(DIY parallelism),利用这个技术可以把应用设计为并发地运行。   第15章:数据加载和卸载   15.1节重点介绍SQLLDR(SQL*Loader),并说明可以采用哪些方法使用这个工具来加载和修改数据库中的数据。我们会讨论加载定界数据,更新现有的行和插入新行,卸载数据,以及从存储过程调用SQLLDR。重申一遍,SQLLDR是一个完备而重要的工具,但它的实际使用也带来很多问题。15.2节主要讨论外部表,这是另外一种数据批量加载和卸载的高效方法。   第16章:数据加密   这一章将探讨对Oracle数据库中的数据加密有哪些途径。这里讨论了如何使用内置数据库包DBMS_CRYPTO完成手动“DIY”加密,不过这个内容不是重点。实际上,这里更强调的是为什么不应使用这个包。这一章的重点是Oracle数据库中透明数据加密(Transparent Data Encryption,TDE)的实现细节,强调了如何实现列级加密和表空间级加密,以及这对于开发人员或DBA有什么意义。这一章并未全面涵盖每一种可能的配置(这是Oracle文档的工作),而是提供了一些实用的实现细节,并指出这对你会有哪些影响。   源代码和有关更新   使用这本书中的例子时,你可能想亲手键入所有代码。很多读者都喜欢这样做,因为这是熟悉编码技术的一种好办法。   无论你是否想自己键入代码,都能从Apress网站(http://www.apress.com)的Source Code区下载本书的所有源代码。即使确实想自己键入代码,下载源代码也很有必要,你可以使用下载的源代码文件检查正确的结果是什么。如果你认为自己的录入可能有误,就可以先从这一步开始。倘若不想自己键入代码,那么除了从Apress网站下载源代码外别无选择!不论采用哪种方式,代码文件都能帮助你完成更新和调试。   勘误表   Apress极力确保文字或代码不会出错。不过,出错也是人之常情,所以只要发现并修改了错误,我们就会及时告诉你。Apress所有图书的勘误表都可以在http://www.apress.com上找到。如果你发现一个还没有报告的错误,请通知我们。Apress网站还提供了其他的信息和支持,包括所有Apress图书的代码、样章、新书预告以及相关主题的文章等。    序言   第 1 版 序   “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 公司产品战略部(服务器技术)副总裁,公认的“DBA博士”      序   第一次接触到Oracle RDBMS是在1988年,也可能是1987年。那一天,经理在我的办公桌上放下一个小盒子,对我说了几句话,大致意思是:“这是一个刚刚进入国内的新产品,名叫Oracle。你先试用几个星期,看看它适合做些什么。”   那个版本可能是5.0.22,当时学习Oracle可比现在简单多了。全套的印刷手册(包括Forms 2.0和SQL*Report等)可以放在一个小小的公文包里,create table语句的文档只有大约3页而已。   如果查看11.2 SQL参考手册的PDF文件,会发现从16-6页开始,直到16-79页全都是create table语句的文档,总共有74页。我最后一次查看9i手册时,总页数已经超过了20 000页。我想,对于10g和11g,文档的总页数应该不会低于这个数字。   由于5.0.22只有3本相当薄的手册,所以没过多久我就全面了解了Oracle能够做些什么以及如何高效地完成工作。那时没有太多选择余地,所以出错的机会也不多。不过如今Oracle内核已经“深埋”在不计其数的选项和特性之下,这使得Oracle的学习困难重重,该如何下手呢?更糟糕的是,着手学习时,我们真正需要了解的细节并不是一目了然的,它往往被其他大量信息所“掩盖”,当然了解这些信息本身并不是坏事,但它们对于入门来说并不是至关重要的。   答案很简单。   第1步:阅读概念手册,对内容有个大致了解。   第2步:读Tom Kyte的这本书,通过边学习边试验,从一个初次尝试 “select ‘hello world’ from dual”的“菜鸟”转变成Oracle高手,有朝一日也能自信满满地说出一些“高深”言论,比如:“出于某个原因,我们应该使用一个分区IOT,将这些列放在这个表的溢出区中。”   Tom的这本书集三点于一身:一种轻松交流的风格,使读者能够更容易地了解技术细节,在知道“怎样做”的同时还能理解“为什么这样做”;一种结构化的“叙事方式”,你会看到,相关描述都针对同一个目标,而不是把支离破碎的技巧简单地汇集在一起;一组精心组织的示范说明,让你了解Oracle的工作原理,还会教你怎样做以及怎样思考。   仅以索引为例。索引有许多种,首先需要简要介绍这些不同类型。例如,如果对B-树索引的具体工作原理有所认识,会很有好处,这样我们才能更好地了解这种索引的优缺点。然后可以转向基于函数的索引,也就是“尚不存在的数据”的索引。由此我们不仅能知道Oracle能够做什么,还会了解通过对Oracle的处理我们还能进一步做些什么。接下来可以看到如何把这些综合起来,创建一个确保数据子集唯一性的索引。还会看到如何在一个大型数据集上创建维护要求不高的小索引,只标识真正想要访问的数据,将优化器生成“愚蠢”执行计划的风险减至最低。   基本说来,手册中都涵盖了这些内容,不过,我们必须具备敏锐的洞察力,能够从纷繁的命令中挑出我们想要的内容,查看如何使用这些命令为实际问题建立解决方案。Tom Kyte就展示了这种洞察力,而且还鼓励我们更进一步形成自己的认识。   坦率地讲,如果全世界每一位DBA和开发人员都精心研读了Tom Kyte的这本书,我可能就得改行为SQL Server用户提供咨询服务了,因为需要Oracle咨询的客户肯定会显著减少。   Jonathan Lewis   英国Oracle用户群负责人    媒体评论   “本书能够帮助你发挥Oracle技术的最大能量……毋庸置疑,这是最重要的Oracle图书之一,绝对值得拥有。”   ——Ken Jacobs   Oracle公司产品策略部(服务器技术)副总裁,公认的DBA博士   “真是一本绝妙的书,包含大量关于Oracle技术的真知灼见。”   ——Sean Hull   

2013-02-03

Oracle Database 11g初学者指南--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle Database 11g初学者指南 基本信息 原书名: Oracle Database 11g, A Beginner's Guide 原出版社: McGraw-Hill Osborne Media 作者: (美)Ian Abramson    Michael Abbey    Michael Corey 译者: 窦朝晖 出版社:清华大学出版社 ISBN:9787302218937 上架时间:2010-2-20 出版日期:2010 年1月 开本:16开 页码:288 版次:1-1 内容简介   本书能使读者快捷地掌握oracle database 11g的基础知识。通过自我评估教程,介绍了核心数据库技术、管理员职责、高可用性以及大型数据库特性。本书带领读者循序渐进地学习数据库设置、管理、编程、备份和恢复。还深入介绍了sql和pl/sql。为了易于学习,这本独特的oracle press指南是这样组织的:    ·核心概念——oracle database 11g主题呈现在按逻辑组织的章节中    ·主要内容——每章要介绍的具体内容列表    ·实践练习——演示如何应用在每章学到的关键技术    ·学习效果测试——对学习效果的快速自我评估    ·注意——与所介绍主题相关的额外信息    ·章节测验——每章结束时的测验测试读者对所学知识的掌握程度 作译者 作者   Ian Abramson是IOUG(Independent Oracle Users Group)现任总裁,现居加拿大多伦多,他是业界资深技术顾问,为电信、CRM、公用事业和其他行业的客户提供实现方案的专业指导。他的关注方向包括Oracle产品集,以及其他前沿技术和这些技术在优化数据仓库设计和部署的应用。他还是各种技术会议的主讲人,包括COLLABORATE、Oracle OpenWorld和其他地方与区域会议。   Michael Abbey是公认的数据库管理、安装、开发、应用迁移、性能调优和实现方面的权威。在过去的14年中,他与IanAbramson和MichaelCorey为OraclePress合著了一系列图书.Abbey在国际Oracle用户团体非常活跃,经常出席COLLABORATE、OraclecOpenWorld和区域性用户组会议.   Michael J.Corey是Ntirety(ThecDatabasecAdministrationcExperts)的创始人和CEO.Michael的数据库情结可追溯到Oraclec3.0.Michael是IOUG(www.ioug.org)的前总裁和早期的Oraclec Press作者.他经常在世界各地的商业和技术会议上进行学术交流.他的博客是http://michaelcorey.ntirety.com   Michelle Malcher是一名高级数据库管理员,在数据库开发、设计和管理方面具有十多年经验.她是性能调优、安全、数据建模和超大型数据库环境数据库体系结构方面的专家.她是IOUG Best Practices Tip Booklet的特约作者.Michelle积极参加IOUG活动,是特殊兴趣组的负责人.在技术会议和用户组会议上她乐于展现和分享有关Oracle数据库主题的思想.她的Email是[email protected]. 目录 封面 -14 封底 -13 扉页 -12 版权 -11 关于作者 -10 前言 -8 目录 -5 第1章 数据库基础 1 1.1 数据库定义 2 1.2 Oracle Database 11g的体系结构 3 1.2.1 控制文件 4 1.2.2 联机重做日志 4 1.2.3 System表空间 4 1.2.4 Sysaux表空间 4 1.2.5 默认的临时表空间 5 1.2.6 Undo表空间 5 1.2.7 服务器参数文件 5 1.2.8 后台进程 5 1.2.9 数据库管理员 7 1.3 Oracle Database 11g的基本数据类型 8 1.3.1 varchar2 8 1.3.2 数字 9 1.3.3 日期 9 1.3.4 时间戳 9 1.3.5 clob 10 1.3.6 blob 10 1.4 表 10 1.5 存储对象 11 1.5.1 视图 12 1.5.2 触发器 12 1.5.3 过程 13 1.5.4 函数 13

2013-02-03

C语言入门经典(第4版)--源代码及课后练习答案

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《C语言入门经典(第4版)》的源代码及课后练习答案 对应的书籍资料见: C语言入门经典(第4版) 基本信息 原书名: Beginning C: From Novice to Professional, Fourth Edition 原出版社: Apress 作者: (美)Ivor Horton 译者: 杨浩 出版社:清华大学出版社 ISBN:9787302170839 上架时间:2008-4-15 出版日期:2008 年4月 开本:16开 页码:571 版次:4-1 编辑推荐    本书是编程语言先驱者Ivor Horton的经典之作,是C语言方面最畅销的图书品种之一,在世界范围内广受欢迎,口碑极佳。    本书的目标是使你在C语言程序设计方面由一位初学者成为一位称职的程序员。 内容简介   本书是编程语言先驱者Ivor Horton的经典之作,是C语言方面最畅销的图书品种之一。本书集综合性、实用性为一体,是学习C语言的优秀入门教材,在世界范围内广受欢迎,口碑极佳。书中除了讲解C程序设计语言,还广泛介绍了作为一名C程序设计人员应该掌握的必要知识,并提供了大量的实用性很强的编程实例。本书的目标是使你在C语言程序设计方面由一位初学者成为一位称职的程序员。读者基本不需要具备任何编程知识,即可通过本书从头开始编写自己的C程序。 作译者 作者   Ivor Horton是世界著名的计算机图书作家,主要从事与编程相关的咨询及撰写工作,曾帮助无数程序员步入编程的殿堂。他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。IvorHorton还著有关于C、C++和Java的多部入门级好书,如《C语言入门经典(第4版)》和《C++入门经典(第3版)》。 译者   杨浩,知名译者,大学讲师,从事机械和计算机方面的教学和研究多年,发表论文数篇,参编和翻译的图书多达20余部,还曾多次获得市部级奖项。近几年一直在跟踪.NET技术的发展,积极从事.NET技术文档和图书的翻译工作。 目录 封面 -12 封底 572 前言 -9 目录 -6 第1章 C语言编程 1 1.1 创建C程序 1 1.1.1 编辑 1 1.1.2 编译 2 1.1.3 链接 2 1.1.4 执行 3 1.2 创建第一个程序 4 1.3 编辑第一个程序 4 1.4 处理错误 5 1.5 剖析一个简单的程序 6 1.5.1 注释 6 1.5.2 预处理指令 7 1.5.3 定义main()函数 7 1.5.4 关键字 8 1.5.5 函数体 8 1.5.6 输出信息 9 1.5.7 参数 10 1.5.8 控制符 10 1.6 用C语言开发程序 12 1.6.1 了解问题 12 1.6.2 详细设计 12 1.6.3 实施 13 1.6.4 测试 13 1.7 函数及模块化编程 13 1.8 常见错误 17 1.9 要点 17 1.10 小结 18 1.11 习题 18 第2章 编程初步 19 2.1 计算机的内存 19 2.2 什么是变量 21 2.3 存储数值的变量 21 2.3.1 整数变量 21 2.3.2 变量的命名 25 2.3.3 变量的使用 26 2.3.4 变量的初始化 28 2.3.5 算术语句 28 2.4 变量与内存 34 2.5 整数变量类型 35 2.5.1 无符号的整数类型 35 2.5.2 使用整数类型 36 2.5.3 指定整数常量 37 2.6 浮点数 38 2.7 浮点数变量 38 2.8 使用浮点数完成除法运算 39 2.8.1 控制小数位数 40 2.8.2 控制输出的字段宽度 41 2.9 较复杂的表达式 41 2.10 定义常量 44 2.10.1 极限值 46 2.10.2 sizeof运算符 49 2.11 选择正确的类型 50 2.12 强制类型转换 53 2.12.1 自动转换类型 53 2.12.2 隐式类型转换的规则 54 2.12.3 赋值语句中的隐式类型转换 54 2.13 再谈数值数据类型 55 2.13.1 字符类型 56 2.13.2 字符的输入输出 57 2.13.3 宽字符类型 60 2.13.4 枚举 60 2.13.5 存储布尔值的变量 63 2.13.6 复数类型 63 2.14 赋值操作的op=形式 66 2.15 数学函数 68 2.16 设计一个程序 69 2.16.1 问题 69 2.16.2 分析 69 2.16.3 解决方案 71 2.17 小结 75 2.18 练习 76 第3章 条件判断 79 3.1 判断过程 79 3.1.1 算术比较 80 3.1.2 涉及关系运算符的表达式 80 3.1.3 基本的if语句 81 3.1.4 扩展if语句:if-else 84 3.1.5 在if语句中使用代码块 86 3.1.6 嵌套的if语句 87 3.1.7 更多的关系运算符 90 3.1.8 逻辑运算符 93 3.1.9 条件运算符 97 3.1.10 运算符的优先级 99 3.2 多项选择问题 103 3.2.1 给多项选择使用else-if语句 104 3.2.2 switch语句 104 3.2.3 goto语句 113 3.3 按位运算符 114 3.3.1 按位运算符的op=用法 116 3.3.2 使用按位运算符 117 3.4 设计程序 120 3.4.1 问题 120 3.4.2 分析 120 3.4.3 解决方案 121 3.5 小结 124 3.6 练习 124 第4章 循环 127 4.1 循环 127 4.2 递增和递减运算符 128 4.3 for循环 129 4.4 for循环的一般语法 132 4.5 再谈递增和递减运算符 133 4.5.1 递增运算符 133 4.5.2 递增运算符的前置和后置形式 134 4.5.3 递减运算符 134 4.6 再论for循环 135 4.6.1 修改for循环变量 137 4.6.2 没有参数的for循环 138 4.6.3 循环内的break语句 138 4.6.4 使用for循环限制输入 141 4.6.5 生成伪随机整数 143 4.6.6 再谈循环控制选项 145 4.6.7 浮点类型的循环控制变量 146 4.7 while循环 147 4.8 嵌套循环 150 4.9 嵌套循环和goto语句 153 4.10 do-while循环 154 4.11 continue语句 157 4.12 设计程序 157 4.12.1 问题 157 4.12.2 分析 157 4.12.3 解决方案 158 4.13 小结 170 4.14 习题 170 第5章 数组 173 5.1 数组简介 173 5.1.1 不用数组的程序 173 5.1.2 什么是数组 175 5.1.3 使用数组 176 5.2 内存 179 5.3 数组和地址 182 5.4 数组的初始化 184 5.5 确定数组的大小 184 5.6 多维数组 185 5.7 多维数组的初始化 187 5.8 设计一个程序 191 5.8.1 问题 192 5.8.2 分析 192 5.8.3 解决方案 193 5.9 小结 200 5.10 习题 200 第6章 字符串和文本的应用 201 6.1 什么是字符串 201 6.2 处理字符串和文本的方法 203 6.3 字符串操作 206 6.3.1 连接字符串 206 6.3.2 字符串数组 208 6.4 字符串库函数 210 6.4.1 使用库函数复制字符串 210 6.4.2 使用库函数确定字符串的长度 211 6.4.3 使用库函数连接字符串 212 6.4.4 比较字符串 213 6.4.5 搜索字符串 216 6.5 分析和转换字符串 219 6.5.1 转换字符 222 6.5.2 将字符串转换成数值 225 6.7 使用宽字符串 225 6.8 设计一个程序 228 6.8.1 问题 229 6.8.2 分析 229 6.8.3 解决方案 229 6.9 小结 237 6.10 习题 237 第7章 指针 239 7.1 指针初探 239 7.1.1 声明指针 240 7.1.2 通过指针访问值 241 7.1.3 使用指针 244 7.1.4 指向常量的指针 248 7.1.5 常量指针 248 7.1.6 指针的命名 249 7.2 数组和指针 249 7.3 多维数组 252 7.3.1 多维数组和指针 255 7.3.2 访问数组元素 257 7.4 内存的使用 260 7.4.1 动态内存分配:malloc()函数 260 7.4.2 分配内存时使用sizeof运算符 261 7.4.3 用calloc()函数分配内存 265 7.4.4 释放动态分配的内存 265 7.4.5 重新分配内存 267 7.5 使用指针处理字符串 268 7.5.1 更多地控制字符串输入 268 7.5.2 使用指针数组 269 7.6 设计程序 280 7.6.1 问题 280 7.6.2 分析 281 7.6.3 解决方案 281 7.7 小结 291 7.8 习题 291 第8章 程序的结构 293 8.1 程序的结构 293 8.1.1 变量的作用域和生存期 294 8.1.2 变量的作用域和函数 297 8.2 函数 297 8.2.1 定义函数 298 8.2.2 return语句 301 8.3 按值传递机制 304 8.4 函数声明 305 8.5 指针用作参数和返回值 307 8.5.1 常量参数 310 8.5.2 从函数中返回指针值 318 8.5.3 在函数中递增指针 322 8.6 小结 322 8.7 习题 323 第9章 函数再探 325 9.1 函数指针 325 9.1.1 声明函数指针 325 9.1.2 通过函数指针调用函数 326 9.1.3 函数指针数组 329 9.1.4 作为变元的函数指针 331 9.2 函数中的变量 334 9.2.1 静态变量:函数内部的追踪 334 9.2.2 在函数之间共享变量 336 9.3 调用自己的函数:递归 338 9.4 变元个数可变的函数 341 9.4.1 复制va_list 344 9.4.2 长度可变的变元列表的基本规则 344 9.5 main()函数 345 9.6 结束程序 346 9.7 函数库:头文件 347 9.8 提高性能 348 9.8.1 内联声明函数 348 9.8.2 使用restrict关键字 348 9.9 设计程序 349 9.9.1 问题 349 9.9.2 分析 349 9.9.3 解决方案 351 9.10 小结 367 9.11 习题 368 第10章 基本输入和输出操作 369 10.1 输入和输出流 369 10.2 标准流 370 10.3 键盘输入 371 10.3.1 格式化键盘输入 371 10.3.2 输入格式控制字符串 372 10.3.3 输入格式字符串中的字符 377 10.3.4 输入浮点数的各种变化 378 10.3.5 读取十六进制和八进制值 379 10.3.6 用scanf()读取字符 381 10.3.7 scanf()的陷阱 383 10.3.8 从键盘上输入字符串 383 10.3.9 键盘的非格式化输入 384 10.4 屏幕输出 389 10.4.1 使用printf()格式输出到屏幕 389 10.4.2 转义序列 391 10.4.3 整数输出 392 10.4.4 输出浮点数 394 10.4.5 字符输出 395 10.5 其他输出函数 398 10.5.1 屏幕的非格式化输出 398 10.5.2 数组的格式化输出 399 10.5.3 数组的格式化输入 400 10.6 打印机输出 400 10.7 小结 401 10.8 习题 401 第11章 结构化数据 403 11.1 数据结构:使用struct 403 11.1.1 定义结构类型和结构变量 405 11.1.2 访问结构成员 405 11.1.3 未命名的结构 408 11.1.4 结构数组 408 11.1.5 表达式中的结构 411 11.1.6 结构指针 411 11.1.7 为结构动态分配内存 412 11.2 再探结构成员 414 11.2.1 将一个结构作为另一个结构的成员 414 11.2.2 声明结构中的结构 415 11.2.3 将结构指针用作结构成员 416 11.2.4 双向链表 420 11.2.5 结构中的位字段 423 11.3 结构与函数 424 11.3.1 结构作为函数的变元 424 11.3.2 结构指针作为函数变元 425 11.3.3 作为函数返回值的结构 426 11.3.4 修改程序 430 11.3.5 二叉树 433 11.4 共享内存 442 11.4.1 联合 442 11.4.2 联合指针 444 11.4.3 联合的初始化 444 11.4.4 联合中的结构成员 444 11.5 定义自己的数据类型 446 11.5.1 结构与类型定义(typedef)功能 446 11.5.2 使用typedef简化代码 447 11.6 设计程序 448 11.6.1 问题 448 11.6.2 分析 448 11.6.3 解决方案 448 11.7 小结 459 11.8 习题 459 第12章 处理文件 461 12.1 文件的概念 461 12.1.1 文件中的位置 462 12.1.2 文件流 462 12.2 文件访问 462 12.2.1 打开文件 463 12.2.2 文件重命名 465 12.2.3 关闭文件 465 12.2.4 删除文件 466 12.3 写入文本文件 466 12.4 读取文本文件 467 12.5 将字符串写入文本文件 470 12.6 从文本文件中读入字符串 471 12.7 格式化文件的输入输出 474 12.7.1 格式化文件输出 474 12.7.2 格式化文件输入 475 12.8 错误处理 477 12.9 再探文本文件操作模式 478 12.10 二进制文件的输入输出 479 12.10.1 指定二进制模式 479 12.10.2 写入二进制文件 480 12.10.3 读取二进制文件 480 12.11 在文件中移动 488 12.11.1 文件定位操作 489 12.11.2 找出我们在文件中的位置 489 12.11.3 在文件中设定位置 490 12.12 使用临时文件 496 12.12.1 创建临时文件 496 12.12.2 创建唯一的文件名 496 12.13 更新二进制文件 497 12.13.1 修改文件的内容 502 12.13.2 从键盘读取记录 503 12.13.3 将记录写入文件 504 12.13.4 从文件中读取记录 505 12.13.5 写入文件 506 12.13.6 列出文件内容 507 12.13.7 更新已有的文件内容 508 12.14 文件打开模式小结 515 12.15 设计程序 516 12.15.1 问题 516 12.15.2 分析 516 12.15.3 解决方案 516 12.16 小结 522 12.17 习题 522 第13章 支持功能 523 13.1 预处理 523 13.1.1 在程序中包含头文件 523 13.1.2 外部变量及函数 524 13.1.3 替换程序源代码 525 13.1.4 宏替换 526 13.1.5 看起来像函数的宏 526 13.1.6 多行上的预处理指令 528 13.1.7 字符串作为宏参数 528 13.1.8 结合两个宏展开式的结果 529 13.2 预处理器逻辑指令 530 13.2.1 条件编译 530 13.2.2 测试指定值的指令 531 13.2.3 多项选择 531 13.2.4 标准预处理宏 532 13.3 调试方法 533 13.3.1 集成的调试器 533 13.3.2 调试阶段的预处理器 533 13.3.3 使用assert()宏 537 13.4 其他库函数 539 13.4.1 日期和时间函数库 539 13.4.2 获取日期 543 13.5 小结 549 13.6 习题 549 附录A 计算机中的数学知识 551 附录B ASCII字符代码定义 559 附录C C语言中的保留字 565 附录D 输入输出格式指定符 567 前言   欢迎使用《C语言入门经典(第4版)》。研读本书,你就可以成为一位称职的C语言程序员。从许多方面来说,C语言都是学习程序设计的理想起步语言。C语言很简洁,因此无须学习大量的语法,就能够开始编写真正的应用程序。除了简明易学外,它还是一种功能非常强大的语言,至今仍被专业人士广泛使用。C语言的强大之处主要体现在,它能够进行各种层次的程序设计,从硬件设备驱动程序和操作系统组件到大规模的应用程序,都能胜任。事实上,任何计算机都支持C语言编译器,因此,当我们学会了C语言,就可以在任何环境下进行程序设计。最后一点,掌握了C语言,就为理解面向对象的C++语言奠定了良好的基础。.   积极热情的程序员都必将面对三大障碍,即掌握适用于所有程序设计语言的术语,理解如何使用一种语言的元素(而不仅仅只知道它们的概念)以及领会如何在实际环境中应用这种语言,本书的目的就是将这些障碍降到最低。   术语是专业人士与优秀的业余人士们进行交流时必不可少的,因此掌握它们是必需的。本书会让你理解这些术语,并自如地在各种环境下使用它们。这样才能更有效地使用大多数软件产品附带的文档,且能轻松地阅读和学习大多数程序设计语言的相关文献。   显然,理解语言元素的语法和作用是学习一门语言的关键,不过认识语言的特性如何发挥作用和如何应用它们,也同等重要。在说明每种语言特性与特定问题的关系时,本书采用实际应用的程序示例,而不只是代码片断。这些示例提供了实践的基础,你可以任意改动它们,研究改动后的效果。   要理解在特定背景中的程序设计方法,需要理解应用独立语言元素的机理。为了帮助理解它们,本书每章最后都给出一个较复杂的程序,该程序应用了本章前面已经学习的知识。这些程序可帮助你获得开发程序的能力和信心,了解如何综合运用各种语言元素。最重要的是,它们能让你了解设计真实程序时会遇到的问题以及如何管理实际的代码。   学习任何程序设计语言,都要认识几件事情。首先,要学的东西很多,但是掌握了它们之后,你会有极大的成就感。其次,学习的过程很有趣,你将体会到这一点。第三,你只有通过动手实践才能学会程序设计。最后,学习程序设计语言比你想象的容易得多,所以你肯定能掌握它。   如何使用本书   作者认为动手实践是最好的方法,你应当立刻开始编写自己的第一个程序。每一章都有几个把理论应用于实践的程序,这些示例是学习本书的关键。建议读者输入并运行文中的示例,因为输入程序对记住语言元素有极大的帮助。此外,你还应该做每章后面的练习。当你第一次使一个程序运行起来,尤其是在试图解决自己的问题时,快速的进展会使你有很大的成就感。..   刚开始,学习的进展不会太快,不过随着逐渐深入,我们会加快学习的速度。每一章都会涉及很多基础知识,因此在学习新的内容之前,需要花些时间,确保理解了前面学过的所有知识。实践各部分的代码,并尝试实现自己的想法,这是学习程序设计语言的一个重要部分。尝试修改书中的程序,看看还能让它们做什么,这是很有趣的。不要害怕尝试,如果不明白某一点如何使用,输入几种变体,看看会出现哪些情况。好的学习方法是先通读整章,全面了解其中介绍的内容,然后再实践其中的所有程序示例。   你可能会觉得某些章末尾的程序非常难。如果第一次读这样的程序没有完全理解,不必担心。第一次难免会觉得难以理解,因为它们通常都是把你所学的知识应用到了相当复杂的问题中。如果你真的不能理解,可以略过那些章末尾的程序,继续学习下一章,然后再回头研究这些程序。甚至可以在学完全书之后再来研究它们。之所以演示这些程序是因为即使读完了本书,它们对你来说仍是非常有用的资源。   本书读者对象   本书的目的是教你如何尽可能简单快速地编写有用的程序,如果你属于下列情况之一,那么本书就非常适合你:   ●刚接触程序设计,但想直接深入了解C语言,从头开始学习程序设计及编写C语言程序。   ●以前有一点程序设计经历,对其基本概念有一定了解,也许曾经使用过BASIC或PASCAL。现在想学习C语言,进一步提高自己的程序设计技能。   本书并未假设此前你对程序设计的知识有所了解,不过本书会很快地从基本概念转入到实际应用。学完了本书,你就为自己的C语言程序设计奠定了全面的基础。   使用本书的条件   要使用本书,需要一台安装了C语言编译器和库的计算机,这样才能执行书中的示例,还需要一个程序文本编辑器,用于创建源代码文件。你使用的编译器要很好地支持C语言国际标准:ISO/IEC 9899。你还需要一个用于创建和修改代码的编辑器,可以采用任何纯文本编辑器创建源程序文件,如Notepad或vi。不过,采用专为编辑C语言代码设计的编辑器更有帮助。   要最大限度地发挥本书的功效,你需要有学习的意愿、成功的渴望,当学习不顺利,觉得前途渺茫时,还要有坚持下去的决心。几乎每个人在初次学习程序设计时都会在某处觉得迷茫。当你发现自己艰难地掌握了C语言的某个方面时,要坚持下去,迷雾一定会消散,你会觉得为什么当初我不明白这一点呢?也许你明白要做到这些将会很难,不过相信你一定会惊讶自己能在较短的时间内取得很大进步。本书会帮助你开始自己的实践之旅,使你成为成功的程序设计员。   本书采用的约定   本书的文本和布局采用了许多不同的样式,以便区分各种不同的信息。大多数样式表达的含义都很明显,其中程序代码以类似下面的样子出现: .  int main(void)   {   printf("\nBeginning C");   return 0;   }   如果代码片段是从前面的实例修改而来的,修改过的代码行就用粗体显示,如下所示:   int main(void)   {   printf("\nBeginning C by Ivor Horton");   return 0;   }   程序代码中还使用了各种“括号”。它们之间的差别非常重要,不能互换。本书中称( )为圆括号,{ }为大括号,[ ]为方括号。   本书源代码下载   从Apress的站点可以下载本书中的所有代码和练习的解决方案:http://www.apress.com。也可以访问www.tupwk.com.cn/downpage下载本书中的所有代码和解决方案。...   

2013-02-02

Visual C++ 2005入门经典--源代码及课后练习答案

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Visual C++ 2005入门经典》的源代码及课后练习答案 对应的书籍资料见: Visual C++ 2005入门经典 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2005 原出版社: Wiley 作者: (美)Ivor Horton 译者: 李颂华 康会光 出版社:清华大学出版社 ISBN:9787302142713 上架时间:2007-2-12 出版日期:2007 年1月 开本:16开 页码:1046 版次:1-1 编辑推荐   本书由编程语言先驱者Ivor Horton倾力而著,是国内第一本全面、深入介绍Visual C++ 2005的经典之作! 内容简介   本书系编程语言先驱者Ivor Horton的经典之作,是学习C++编程最畅销的图书品种之一,不仅涵盖了Visual C++ .NET编程知识,还全面介绍了标准C++语言和.NET C++/CLI。本书延续了Ivor Horton讲解编程语言的独特方法,从中读者可以学习Visual C++ 2005的基础知识,并全面掌握在MFC和Windows Forms中访问数据源的技术。此外,本书各章后面的习题将有助于读者温故而知新,并尽快成为C++高效程序员。...    作译者   Ivor Horton是世界著名的计算机图书作家,主要从事与编程相关的顾问及撰写工作,曾帮助无数程序员步入编程的殿堂。他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。Ivor Horton还著有Beginning Visual C++ 6、Beginning C Programming和Beginning Java 2等多部入门级好书。 目录 封面 -18 前言 -14 目录 -9 第1章 使用Visual C++ 2005编程 1 1.1 .NET Framework 1 1.2 CLR 2 1.3 编写C++应用程序 3 1.4 学习Windows编程 4 1.4.1 学习C++ 4 1.4.2 C++标准 5 1.4.3 控制台应用程序 5 1.4.4 Windows编程概念 6 1.5 集成开发环境简介 7 1.6 使用IDE 9 1.6.1 工具栏选项 9 1.6.2 可停靠的工具栏 10 1.6.3 文档 11 1.6.4 项目和解决方案 11 1.6.5 设置Visual C++ 2005的选项 23 1.6.6 创建和执行Windows应用程序 24 1.6.7 创建Windows Forms应用程序 26 1.7 小结 29 第2章 数据、变量和计算 31 2.1 C++程序结构 31 2.1.1 程序注释 36 2.1.2 #include指令——头文件 37 2.1.3 命名空间和using声明 37 2.1.4 main()函数 38 2.1.5 程序语句 38 2.1.6 空白 40 2.1.7 语句块 41 2.1.8 自动生成的控制台程序 41 2.2 定义变量 42 2.2.1 命名变量 43 2.2.2 C++中的关键字 43 2.2.3 声明变量 44 2.2.4 变量的初值 44 2.3 基本数据类型 45 2.3.1 整型变量 45 2.3.2 字符数据类型 46 2.3.3 整型修饰符 47 2.3.4 布尔类型 48 2.3.5 浮点类型 48 2.3.6 ISO/ANSI C++中的基本类型 49 2.3.7 字面值 50 2.3.8 定义数据类型的同义词 50 2.3.9 具有特定值集的变量 51 2.3.10 指定枚举常量的类型 52 2.4 基本的输入/输出操作 53 2.4.1 从键盘输入 53 2.4.2 到命令行的输出 53 2.4.3 格式化输出 54 2.4.4 转义序列 55 2.5 C++中的计算 57 2.5.1 赋值语句 57 2.5.2 算术运算 58 2.5.3 计算余数 63 2.5.4 修改变量 63 2.5.5 增量和减量运算符 64 2.5.6 计算

2013-02-02

iPhone 4与iPad开发基础教程(创造销售奇迹的经典著作)--源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《iPhone 4与iPad开发基础教程》的源代码 对应的书籍资料见: iPhone 4与iPad开发基础教程(创造销售奇迹的经典著作) 基本信息 原书名: Beginning iPhone 4 Development: Exploring the iOS SDK 原出版社: Apress 作者: (美)Dave Mark    Jack Nutting    Jeff LaMarche 译者: 漆振 杨越 孙文磊 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115255525 上架时间:2011-7-8 出版日期:2011 年7月 开本:16开 页码:501 版次:1-1 编辑推荐   创造销售奇迹的经典著作 针对iOS SDK新特性全面改版    从这里,拥抱软件开发的未来 内容简介   iphone 是一个全新的移动平台,苹果公司为它推出了强大的软件开发工具包ios sdk。本书是一部关于ios sdk 开发的基础教程,内容翔实、语言生动。书中结合消费类设备上常见的实例,循序渐进地讲解了适用于iphone 4、ipad 及ipod touch 开发的基本流程,从下载安装开发工具到使用各种ios 界面元素,从不同的视图设计模式到构建表格的技巧,以及sqlite、coredata 等持久化技术,涵盖了ios 开发的方方面面。    《iphone 4与ipad开发基础教程》内容完整丰富,具有较强的通用性,编程领域中各层次读者都能通过本书快速学习ios 开发,提高相关技能。 作译者 作者: Dave Mark Dave Mark 深受爱戴的Apple技术开发专家,具有多年开发经验。他撰写过许多Mac平台畅销书,目前专注于iPhone技术图书的写作,包括本书姊妹篇《iPhone 3开发高级教程》(中文版即将由人民邮电出版社出版)、《iPad开发基础教程》(中文版已由人民邮电出版社出版)、Learn C on the Mac、Macintosh Programming Primer系列以及Ultimate Mac Programming。可以通过www.davemark.com与他联系。 作者: Jack Nutting Jack Nutting 资深Apple技术专家,Objective-C和Cocoa框架的坚定拥护者。除本书外,还与人合著了Learn Cocoa on the Mac。他有时会在www.nuthole.com上发表博客。 作者: Jeff LaMarche Jeff LaMarche 资深Apple平台专家,拥有多年企业级开发经验。他是MacTech Magazine和Apple公司开发人员网的专栏作家。 目录 封面 -14 封底 502 扉页 -13 版权 -12 版权声明 -11 对上一版的赞誉 -9 前言 -7 致谢 -6 目录 -5 第1 章 欢迎来到iPhone 世界 1 1.1 关于本书 1 1.2 必要条件 1 1.2.1 开发者的选择 3 1.2.2 必备知识 4 1.3 编写iOS 应用程序有何不同 4 1.3.1 只有一个应用程序正在运行 5 1.3.2 只有一个窗口 5 1.3.3 受限访问 5 1.3.4 有限的响应时间 5 1.3.5 有限的屏幕大小 5 1.3.6 有限的系统资源 6 1.3.7 不支持垃圾收集 6 1.3.8 新功能 6 1.3.9 与众不同的方法 7 1.4 本书内容 7 1.5 本次更新的内容 8 1.6 准备开始吧 8 第2 章 创建基本项目 9 2.1 在Xcode 中设置项目 9 2.2 Interface Builder 简介 14 2.2.1 nib 文件的构成 15 2.2.2 在视图中添加标签 16 2.2.3 改变属性 18 2.3 美化iPhone 应用程序 19 2.4 小结 22 第3 章 处理基本交互 23 3.1 MVC 范型 23 3.2 创建项目 24 3.3 创建视图控制器 24 3.3.1 输出口 25 3.3.2 操作 26 3.3.3 将操作和输出口添加到视图控制器 27 3.3.4 将操作和输出口添加到实现文件 30 3.4 使用应用程序委托 34 3.5 编辑MainWindow.xib 36 3.6 编辑Button_FunViewController.xib 37 3.6.1 在Interface Builder 中创建视图 37 3.6.2 连接所有元素 40 3.6.3 测试 43 3.7 小结 43 第4 章 更丰富的用户界面 44 4.1 满是控件的屏幕 44 4.2 活动和被动控件 46 4.3 创建应用程序 46 4.4 实现图像视图和文本字段 47 4.4.1 确定输出口 47 4.4.2 确定操作 48 4.4.3 添加图像视图 49 4.4.4 添加文本字段 52 4.4.5 设置第二个文本字段的属性 55 4.4.6 连接输出口 55 4.5 关闭键盘 55 4.5.1 完成输入后关闭键盘 56 4.5.2 通过触摸背景关闭键盘 57 4.6 实现滑块和标签 59 4.6.1 确定输出口和操作 59 4.6.2 添加输出口和操作 60 4.6.3 添加滑块和标签 61 4.6.4 连接操作和输出口 62 4.7 实现开关、按钮和分段控件 62 4.7.1 添加输出口和操作 62 4.7.2 添加开关、按钮和分段控件 65 4.7.3 连接开关输出口和操作 66 4.7.4 添加按钮 66 4.8 实现操作表和警报 67 4.8.1 遵从操作表委托方法 67 4.8.2 显示操作表 68 4.8.3 使用操作表委托 70 4.9 美化按钮 71 4.9.1 viewDidLoad 方法 71 4.9.2 控件状态 72 4.9.3 可拉伸图像 72 4.10 成为出色的内存使用者 73 4.11 小结 74 第5 章 自动旋转和自动调整大小 75 5.1 自动旋转机制 75 5.2 使用自动调整属性处理旋转 77 5.2.1 指定旋转支持 77 5.2.2 使用自动调整属性设计界面 79 5.2.3 大小检查器的自动调整属性 80 5.2.4 设置按钮的自动调整属性 81 5.3 在旋转时重构视图 82 5.3.1 声明和连接输出口 83 5.3.2 在旋转时移动按钮 84 5.4 切换视图 85 5.4.1 确定输出口和操作 86 5.4.2 声明操作和输出口 87 5.4.3 设计两个视图 88 5.4.4 实现交换和操作 88 5.5 小结 91 第6 章 多视图应用程序 92 6.1 多视图应用程序的常见类型 92 6.2 多视图应用程序的体系结构 94 6.2.1 根控制器 95 6.2.2 内容视图剖析 96 6.3 构建View Switcher 96 6.3.1 创建视图控制器和nib 文件 97 6.3.2 修改应用程序委托 99 6.3.3 SwitchViewController.h 101 6.3.4 添加视图控制器 101 6.3.5 构建包含工具栏的视图 103 6.3.6 编写根视图控制器 104 6.3.7 实现内容视图 108 6.3.8 制作转换动画 110 6.4 小结 113 第7 章 标签栏与选取器 114 7.1 Pickers 应用程序 114 7.2 委托和数据源 117 7.3 建立工具栏框架 117 7.3.1 创建文件 117 7.3.2 添加根视图控制器 118 7.3.3 编辑MainWindow.xib 120 7.3.4 连接输出口,然后运行 123 7.4 实现日期选取器 124 7.5 实现单个组件选取器 126 7.5.1 声明输出口和操作 126 7.5.2 构建视图 127 7.5.3 将控制器实现为数据源和委托 127 7.6 实现多组件选取器 131 7.6.1 声明输出口和操作 131 7.6.2 构建视图 132 7.6.3 实现控制器 132 7.7 实现独立组件 135 7.8 使用自定义选取器创建简单游戏 141 7.8.1 编写控制器头文件 141 7.8.2 构建视图 142 7.8.3 添加图像资源 143 7.8.4 实现控制器 143 7.8.5 最后的细节 149 7.8.6 链接Audio Toolbox 框架 153 7.9 小结 154 第8 章 表视图简介 155 8.1 表视图基础 156 8.1.1 表视图和表视图单元 156 8.1.2 分组表和无格式表 157 8.2 实现一个简单的表 158 8.2.1 设计视图 158 8.2.2 编写控制器 158 8.2.3 添加一个图像 161 8.2.4 表视图单元样式 163 8.2.5 设置缩进级别 165 8.2.6 处理行的选择 165 8.2.7 更改字体大小和行高 167 8.3 定制表视图单元 168 8.3.1 单元应用程序  168 8.3.2 使用UITableViewCell 的自定义子类 172 8.4 分组分区和索引分区 176 8.4.1 构建视图 176 8.4.2 导入数据 177 8.4.3 实现控制器 177 8.4.4 添加索引 181 8.5 实现搜索栏 181 8.5.1 重新考虑设计 181 8.5.2 深层可变副本 182 8.5.3 更新控制器头文件 184 8.5.4 修改视图 185 8.5.5 修改控制器实现 186 8.6 小结 197 第9 章 导航控制器和表视图 198 9.1 导航控制器 198 9.1.1 栈的性质 198 9.1.2 控制器栈 199 9.2 由6 个部分组成的分层应用程序:Nav 200 9.2.1 子控制器 200 9.2.2 Nav 应用程序的骨架 203 9.2.3 第一个子控制器:展示按钮视图 209 9.2.4 第二个子控制器:校验表 217 9.2.5 第三个子控制器:表行上的控件 221 9.2.6 第四个子控制器:可移动的行 227 9.2.7 第五个子控制器:可删除的行 233 9.2.8 第六个子控制器:可编辑的详细窗格 239 9.2.9 其他内容 257 9.3 小结 260 第10 章 iPad 开发注意事项 261 10.1 分割视图和浮动窗口 261 10.2 创建SplitView 项目 263 10.3 xib 定义结构 264 10.4 代码定义功能 265 10.5 显示总统信息 272 10.6 创建浮动窗口 276 10.7 小结 282 第11 章 应用程序设置和用户默认设置 283 11.1 设置束 283 11.2 AppSettings 应用程序 284 11.2.1 创建项目 286 11.2.2 使用设置束 286 11.2.3 读取应用程序中的设置 297 11.2.4 更改应用程序中的默认设置 302 11.2.5 实现逼真效果 305 11.3 小结 307 第12 章 保存数据 308 12.1 应用程序的沙盒 308 12.1.1 获取Documents 目录 309 12.1.2 获取tmp 目录 310 12.2 文件保存策略 310 12.2.1 单个文件持久性 310 12.2.2 多个文件持久性 311 12.3 属性列表 311 12.3.1 属性列表序列化 311 12.3.2 持久性应用程序的第一个版本 312 12.4 对模型对象进行归档 317 12.4.1 符合NSCoding 318 12.4.2 实现NSCopying 319 12.4.3 对数据对象进行归档和取消归档 319 12.4.4 归档应用程序 320 12.5 使用iPhone 的嵌入式SQLite3 324 12.5.1 创建或打开数据库 325 12.5.2 绑定变量 327 12.5.3 SQLite3 应用程序 327 12.6 使用Core Data 334 12.6.1 实体和托管对象 335 12.6.2 Core Data 应用程序 339 12.7 小结 348 第13 章 Grand Central Dispatch、后台处理及其应用 349 13.1 Grand Central Dispatch 349 13.2 SlowWorker 简介 350 13.3 线程基础知识 352 13.4 工作单元 353 13.5 GCD:低级队列 354 13.5.1 傻瓜式操作 354 13.5.2 改进SlowWorker 355 13.6 后台处理 360 13.6.1 应用程序生命周期 361 13.6.2 状态更改通知 361 13.6.3 创建State Lab 363 13.6.4 执行状态 364 13.6.5 利用执行状态更改 365 13.6.6 处理不活动状态 366 13.6.7 处理后台状态 370 13.7 小结 378 第14 章 使用Quartz 和OpenGL 绘图 379 14.1 图形世界的两个视图 379 14.2 Quart 绘图方法 380 14.2.1 Quartz 2D 的图形上下文 380 14.2.2 坐标系 381 14.2.3 指定颜色 382 14.2.4 在上下文中绘制图像 383 14.2.5 绘制形状:多边形、直线和曲线 383 14.2.6 Quartz 2D 工具示例:模式、梯度、虚线模式 384 14.3 QuartzFun 应用程序 384 14.3.1 构建QuartzFun 应用程序 384 14.3.2 添加Quartz Drawing 代码 394 14.3.3 优化QuartzFun 应用程序 398 14.4 GLFun 应用程序 401 14.4.1 构建GLFun 应用程序 402 14.4.2 使用OpenGL 绘图 404 14.4.3 完成GLFun 411 14.5 小结 411 第15 章 轻击、触摸和手势 412 15.1 多触摸术语 412 15.2 响应者链 413 15.2.1 响应者链中的对象 413 15.2.2 转发事件:保持响应者链的活动状态 414 15.3 多触摸体系结构 415 15.3.1 将触摸相关代码放在何处 415 15.3.2 4 个手势通知方法 415 15.4 检测触摸 416 15.4.1 构建一个Touch Explorer 应用程序 417 15.4.2 运行Touch Explorer 419 15.5 检测轻扫 419 15.5.1 构建Swipes 应用程序 420 15.5.2 使用自动手势识别 423 15.5.3 实现多个轻扫动作 424 15.6 检测多次轻击 425 15.7 检测捏合操作 430 15.8 创建和使用自定义手势 433 15.8.1 定义选中标记手势 433 15.8.2 将勾选标记手势附加到视图 435 15.9 小结 437 第16 章 Core Location 定位功能 438 16.1 位置管理器 438 16.1.1 设置所需的精度 439 16.1.2 设置距离筛选器 439 16.1.3 启动位置管理器 439 16.1.4 更明智地使用位置管理器 440 16.2 位置管理器委托 440 16.2.1 获取位置更新 440 16.2.2 使用CLLocation 获取纬度和经度 440 16.2.3 错误通知 442 16.3 尝试使用Core Location 442 16.3.1 更新位置管理器 446 16.3.2 确定移动距离 447 16.4 小结 447 第17 章 加速计 448 17.1 加速计物理学 448 17.2 不要忘记旋转 449 17.3 Core Motion 和动作管理器 449 17.3.1 基于事件的动作 450 17.3.2 主动动作访问 455 17.3.3 加速计结果 457 17.4 检测摇动 458 17.4.1 Baked-In 摇动 459 17.4.2 摇动与击碎 459 17.5 将加速计用作方向控制器 464 17.5.1 滚弹珠程序 464 17.5.2 编写Ball View 466 17.5.3 计算小球运动 469 17.6 小结 472 第18 章 iPhone 照相机和照片库 473 18.1 使用图像选取器和UIImagePicker-Controller 474 18.2 实现图像选取器控制器委托 475 18.3 实际测试照相机和库 476 18.3.1 设计界面 477 18.3.2 实现照相机视图控制器 477 18.4 小结 481 第19 章 应用程序本地化 482 19.1 本地化体系结构 482 19.2 字符串文件 483 19.2.1 字符串文件里面是什么 484 19.2.2 本地化的字符串宏 484 19.3 现实中的iPhone:本地化应用程序 485 19.3.1 创建LocalizeMe 485 19.3.2 测试LocalizeMe 489 19.3.3 本地化nib 文件 489 19.3.4 本地化图像 492 19.3.5 生成和本地化字符串文件 493 19.3.6 本地化应用程序显示名称 495 19.4 小结 496 第20 章 未来之路 497 20.1 别陷进单一的思路里 497 20.1.1 苹果公司的文档 497 20.1.2 邮件列表 498 20.1.3 论坛 498 20.1.4 网站 499 20.1.5 博客 499 20.2 参考资料 500 20.3 作者 501 20.4 再会 501 前言   本书上一版的前言一开始就感慨:“这真是一段令人难忘的经历!”确实如此。我们受到广泛关注,结交了许多新朋友,最重要的是,我们一直都在学习。iOS SDK继续在演化,在每一个新版本中,它都会带来全新的概念供用户探索,带来全新的设计模式供用户去掌握。   那么本书有哪些新内容呢?非常多!针对初学者,我们仔细检查了每一行代码并进行了必要的修改,使每个项目都与最新的iOS版本和最新发布的SDK保持一致。所有项目都是使用Xcode 3.2.5(最新的Xcode发布版)创建的。如你所愿,我们也全面修改了文字内容,使所有的解释说明都保持最新。   如果已经有了上一版,还需不需要购买本书呢?这个问题提得非常好。我们在整本书中进行了大量细微的调整,也进行了许多重要修改。我们添加了两章新内容:一章介绍iPad编程,另一章介绍线程和后台处理。这两章的代码完全是新写的,都以iOS 4为中心进行设计。   简言之,这个新版本更加完美了。如果你已经学习了上一版并且掌握了其中的所有内容,可以继续学习我们写的More iPhone 4 Development 。   如果你还没有完整地看过第一版或第二版,或者看过上一版但仍然感觉思绪有些不太清楚,或者你只是想支持一下我们,那么一定要买这一版。我们非常感谢你的支持。一定要访问http://iphonedevbook.com,悄悄告诉我们你开发了什么应用,也让我们分享你的快乐。我们期待在论坛上见到你。祝编码愉快!   Dave、Jack和Jeff    媒体评论   “本书是iOS SDK开发当之无愧的最佳资源。开发人员将深深地被本书吸引,本书的实用性将在他们创建新的iPhone应用时体现出来。如果你是一名对此新兴平台感兴趣的开发人员,怎能错过这本书呢?”   ——Chris Stewart,著名开发社区iPhoneDevSDK.com创始人   “如果你打算编写iPhone程序,请从这里开始。我对本书覆盖的内容之广感到非常惊讶。书中不仅涵盖了操作照相机等有趣的内容,还包括本地化等现实世界中的开发问题。”   ——Mark Dalrymple,著名Apple开发组织CocoaHeads创始人之一,《Objectiv-C基础教程》的作者   

2013-02-02

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到“[email protected]”。 3、新增QQ群方便交流,请加QQ群8035490。 ============================================================================

2017-10-14

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到“CruiseYoun

2017-10-14

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到“[email protected]”。 ============================================================================

2015-12-04

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到“[email protected]”。 ============================================================================

2015-12-04

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到“[email protected]”。

2015-08-15

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到“[email protected]”。

2014-05-29

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到“[email protected]”。

2014-05-28

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到“[email protected]”。

2014-05-26

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到“[email protected]”。

2013-05-26

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到“[email protected]”。

2013-05-26

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到“[email protected]”。

2013-05-04

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到“[email protected]”。

2013-04-13

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到“[email protected]”。

2013-04-13

精通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开发方面的图书,这是唯一一本我看得上的,它提供的正好是我在游戏开发中需要用到的知识。   ——亚马逊读者评论   

2013-02-08

精通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这一成熟的编程平台深深吸引!”   ——亚马逊读者评论   

2013-02-08

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。

2013-02-08

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月   [email protected]    前言   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日   

2013-02-06

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

2013-02-06

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旗舰版或商业版将十分理想,但并非必须如此。   代码下载   可以通过出版社网站下载本书的示例代码 。   联系作者   可以通过发邮件到[email protected]来联系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读者评论...

2013-02-06

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旗舰版或商业版将十分理想,但并非必须如此。   代码下载   可以通过出版社网站下载本书的示例代码 。   联系作者   可以通过发邮件到[email protected]来联系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读者评论...

2013-02-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除