自定义博客皮肤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 4711 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 17456 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 7132 1

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

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

2015-06-29 22:38:34 2110

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

1、nssize问题

2015-05-31 05:19:04 2186

原创 获取硬件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 52263

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

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

Visual Studio 2013开发环境UTF8设置

2015-02-25 10:08:28 3776

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

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

2014-12-16 17:30:35 3149 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 5695

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

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

2014-11-27 15:19:28 14830 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 10230

原创 将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 5204 10

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

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

2014-11-11 16:09:57 10333 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 5221

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

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

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

原创 Visual Studio 2013编译log4cplus

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

2014-08-07 15:58:21 6193

原创 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 11054 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 6113 1

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

msysgit - Git for WindowsTortoiseSVN

2014-06-24 15:10:32 6972

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

原创 nmake、cmake、Visual Studio编译libevent

dd

2014-05-18 12:09:31 8942

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

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

转载 用C编写Windows服务程序

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

2012-10-15 16:25:06 1546

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

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 ARM Cortex-A8嵌入式系统开发与实践——WinCE与Android平台 基本信息 作者: 倪旭翔    计春雷    出版社:中国水利水电出版社 ISBN:9787508481777 上架时间:2011-2-12 出版日期:2011 年1月 开本:16开 页码:315 版次:1-1 内容简介    本书以飞思卡尔应用处理器i.mx51为例,全面系统地讲述基于新一代高性能arm cortex-a8内核应用处理器以及wince 6.0和android 系统的软硬件系统开发指导。具体内容包括:以i.mx51应用处理器为例介绍基于cortex-a8内核的高性能应用处理器典型的功能模块,开发系统的主要硬件功能模块的结构与工作原理,典型硬件系统与典型应用;wince 6.0在cortex-a8系统上的移植与开发,系统地讲述windows embedded ce 6.0的体系结构、系统安装、环境设置,在i.mx51开发系统下的软件包的编译和调试,主要功能模块驱动程序的详细描述与开发指导,以及典型的嵌入式系统wince 6.0 应用开发例程;android 2.2在cortex-a8系统的移植与开发,系统讲述android体系结构、开发环境与编译,android bsp的移植与开发(包含bootloader、内核移植、hal实现等),以及android应用程序开发指导。    本书可作为工程技术人员学习最新的cortex-a8高端嵌入式系统软硬件开发技术的入门教材,掌握wince 6.0以及android系统在高端应用处理器系统上的实战演练,也可作为工程技术人员在实际工作中针对智能手持设备(平板电脑、智能手机)、高端嵌入式设备、汽车信息娱乐设备等系统开发的参考书。 目录 封面 -16 封底 -15 扉页 -14 版权 -13 序一 -12 序二 -11 前言 -10 ARM产品背景和ARM处理器系列介绍 -9 目录 -2 第1章 基于Cortex-A8的Freescale i.MX51体系构架 1 1.1 i.MX51系统框图与功能简介 1 1.1.1 i.MX51应用处理器的应用 2 1.1.2 i.MX51应用处理器CPU的结构 2 1.1.3 i.MX51应用处理器的多媒体能力 2 1.1.4 i.MX51应用处理器的物理性能及扩展能力 2 1.1.5 i.MX51应用处理器的特点 3 1.2 ARM Cortex-A8内核(CPU、Cache、NEON、VFP和ETM) 4 1.3 i.MX51应用处理器中的IPU与VPU单元 5 1.3.1 图像处理单元IPU 5 1.3.2 视频处理单元VPU 6 1.4 i.MX51应用处理器的图形处理(GPU)功能 6 1.4.1 3D 图形处理单元(3D GPU) 7 1.4.2 2D 图形处理单元(2D GPU) 7 1.5 i.MX51应用处理器的输入输出接口 8 1.6 i.MX51应用处理器的时钟、电源与JTAG口 9 1.7 i.MX51应用处理器的典型系统 12 1.8 参考文献 13 第2章 基于i.MX51的系统硬件介绍 14 2.1 内容概述 14 2.2 硬件系统的总体框图和功能组成 15 2.3 i.MX51应用处理器的启动模式设置 17 2.4 存储器部分(DDR2、SPI NOR、NAND Flash) 18 2.4.1 DDR2 SDRAM 18 2.4.2 NAND Flash 21 2.4.3 SPI NOR 22 2.5 电源管理 22 2.5.1 MC13892的电源输出 22 2.5.2 i.MX51与MC13892之间的信号接口控制 24 2.5.3 电池充放电电路 24 2.5.4 电阻触摸屏接口电路 26 2.6 USB接口 26 2.6.1 USB的定义 26 2.6.2 USB标准简介 27 2.6.3 USB-OTG设计 27 2.6.4 USB-HS设计 29 2.6.5 USB扩展接口 29 2.7 DVI显示接口 32 2.8 MMC/SD卡接口 33 2.9 UART调试串口和JTAG调试口 36 2.10 Ethernet网口 38 2.11 Audio CODEC与音频输入输出 39 2.12 Camera接口 42 2.13 键盘功能 43 2.14 扩展接口 43 2.14.1 Bluetooth和WIFI扩展接口 43 2.14.2 3G扩展接口 44 2.15 参考文献 45 第3章 基于Cortex-A8 i.MX51的WinCE 6.0系统移植与开发 46 3.1 Windows Embedded CE 6.0介绍 46 3.1.1 WinCE 6.0简介 47 3.1.2 WinCE 6.0的安装 48 3.1.3 WinCE 6.0编译环境 57 3.1.4 WinCE 6.0体系架构 85 3.2 WinCE 6.0软件开发包的安装、编译、下载与调试 94 3.2.1 WinCE 6.0 软件开发包的安装 94 3.2.2 WinCE 6.0软件开发包的编译 103 3.2.3 WinCE 6.0软件开发包的镜像下载 112 3.2.4 WinCE 6.0软件开发包的调试 117 3.3 基于怡鼎MX51开发系统的WinCE 6.0的Bootloader 121 3.3.1 i.MX51芯片内部Bootloader 121 3.3.2 怡鼎MX51 WINCE软件开发包的XLDR 130 3.3.3 怡鼎MX51 WinCE 6.0软件开发包的EBOOT 132 3.4 WinCE 6.0 OEM适配层 144 3.4.1 Windows CE操作系统的启动顺序 144 3.4.2 OAL的电源管理 156 3.5 WinCE 6.0驱动概述 161 3.5.1 文件系统驱动、线程驱动与本地驱动 162 3.5.2 用户模式驱动与内核模式驱动 164 3.5.3 加载驱动 164 3.5.4 驱动的中断处理 165 3.5.5 驱动的电源管理 165 3.6 怡鼎MX51 WinCE 6.0 驱动详述 166 3.6.1 音频编解码器驱动 166 3.6.2 显示驱动 170 3.6.3 摄影头驱动 176 3.6.4 eSDHC驱动 180 3.6.5 网络驱动 182 3.6.6 电源管理芯片驱动 184 3.6.7 USB OTG驱动 192 3.7 WinCE 6.0 应用程序开发与实践 203 3.7.1 导出并安装SDK 203 3.7.2 使用SDK编译Hello World 206 3.7.3 使用PB编译VPU测试代码 210 3.7.4 使用PB编译OpenGL ES 2.0 3D应用程序 211 3.7.5 多媒体 212 3.8 参考文献 217 第4章 基于Cortex-A8的i.MX51的Android系统移植与应用程序开发 218 4.1 Android简介 218 4.1.1 Android系统架构 218 4.1.2 Android核心组件 220 4.1.3 Android应用程序基础 227 4.2 基于i.MX51的怡鼎Android系统使用介绍 235 4.3 Android系统的开发环境及编译 247 4.3.1 搭建PC开发环境 248 4.3.2 获取Android官方代码 248 4.3.3 应用怡鼎补丁 249 4.3.4 Android源代码结构 249 4.3.5 源代码编译 252 4.4 Linux 内核及驱动程序 254 4.4.1 Linux内核简介 254 4.4.2 Linux驱动程序简介 256 4.5 Android BSP移植与开发 267 4.5.1 Bootloader 267 4.5.2 Android 内核移植 271 4.5.3 Android HAL移植与实现 279 4.5.4 常见问题 287 4.6 Android应用程序开发 288 4.6.1 搭建应用程序开发环境 289 4.6.2 Hello World应用程序 292 4.6.3 多媒体播放应用程序 296 4.6.4 浏览器应用程序 302 4.6.5 3D应用程序 307 4.7 本章小结 314 4.8 参考文献 315

2013-02-08

精通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月   hjli@w3china.cn    前言   MySQL是目前最流行的开源数据库系统。尽管MySQL是免费的,但它仍然是可靠的和快速的,并在过去曾经使用过Oracle和SQL Server的领域中快速增长起来。感谢MySQL给我们带来这么多实用开发包,使管理变得很容易。在这些应用程序编程接口(application programming interface,API)中,我们很容易地应用MySQL的接口来开发自己的软件。.   本书为MySQL的语句和函数提供了一个快速参考、管理应用程序以及最流行的API。前几章用以帮助读者开启MySQL的大门。同时,每一章中的API以一个入门指南来开始。   在本书编写之际,MySQL 5.0版本是可用的,MySQL 5.1和6.0版本正处于开发中,虽然这两个版本都是可用的,但是当时它们并不稳定。因此你将会发现,在本书中涉及的内容大多数是以5.0.x版本为例来阐述的。另外,在更新的版本中会涉及的新特性本书也会有所提及。   本书目标   本书目标在于为读者提供一个快速参考:   MySQL语句和函数   MySQL服务器、实用程序的命令行选项和配置信息   访问MySQL数据库的最流行的API   本书随后几章是以指南的形式加以讲解,但是我们的中心目标在于填补人们的知识空白。令读者轻松地使用关系数据库。   对于每一个语句或者函数的描述,本书遵循这样的格式:先进行简单的描述性说明,然后深入地探讨其具体用法。如果你了解正在查询的这些语句或者函数,但是记不起它的语法来了,你将能在本书迅速找到它。如果你需要更多的信息来推动你的记忆力或者阐明其可用性,或许你将会在我们解释的第一个句子中发现它。如果你想把它理解得更清楚一些,你可以继续放慢步伐来领会这些语句或者函数。几乎所有语句和函数都提供了示例用法。   总之,本书的目标是,当你阅读它时,你会觉得本书简要但不失完整地阐述了这些细节内容。   本书组织结构   本书分成19个章和3个附录,如下所示。   第一部分 简介和指南   第1章,讲述了MySQL的主要组件以及与MySQL相关的其他一些指导准则。   第2章,描述了在MySQlAB公司所支持的通用操作系统上如何运行MySQL。   第3章,介绍了结构化查询语言(StructuredQuery Language,SQL)和mysql命令行界面。这并不能代替学习SQL和关系数据库的设计,但是它对于读者学习MySQL会有所帮助。   第二部分 SQL语句和函数   第4章,涵盖了与用户账户和安全有关的SQL语句和函数。   第5章,列举、解释并提供了SQL语句和函数的示例,这些语句和函数与创建、修改以及删除数据库、表、索引和视图有关。 .  第6章,涵盖了与数据操纵有关的SQL语句和函数——insert、update和delete。..   第7章,包括了SQL语句和函数的一些细节和示例,这些细节和示例在数据库、表和服务器的管理方面能够派得上用场。   第8章,包括了与复制过程严格有关的SQL语句。这一章也包括了复制过程的指南和解释,同时也阐述了复制状态用以帮助读者解决问题。   第9章,涵盖了相关语句的语法,尤其是与事件、存储过程、触发器和用户定义函数相关的语句。   第10章,主要讲述聚集子句、聚集函数和子查询,并把聚集子句(如6ROUP BY)和聚集函数结合在一起,聚集函数主要用在聚集子句中。同时,也包括了关于子查询的一个指南,因为它们用于聚集数据中。   第11章,涵盖了与操纵字符串数据有关的函数。   第12章,涵盖了与日期和时间相关的函数。   第13章,阐述并列举了与数学运算有关的一些精密函数。   第14章,涵盖了控制流程函数如CASE和IF。   第三部分,MySQL服务器与客户端工具   第15章,涵盖了mysqld daemon和MySQL客户端以及与之对应的选项。同时,本章介绍了用于启动服务器的脚本(如mysqld_safe)。   第16章,描述了管理MySQL服务器和数据的实用程序。同时也包括了像mysqldump这样的备份数据的实用工具。   第四部分,API和连接器   第17章,涵盖了由MySQL的基本C类库所提供的函数。   第18章,介绍了Perl DBI模块,用于从编程浯言Perl中访问MySQL数据库。   第19章,介绍了用于查询和操纵MySQL数据库的PHP函数。   附录   附录A列举了MySQL所支持的所有数据类型。   附录B列举了MySQL操作符,如数学符号以及LIKE和IS NU趾比较操作符。   附录C列举了用于查阅MySQL服务器、客户机和其他实用工具的操作系统的环境变量。   排版约定   在这本书中使用如下的排印约定:   斜体(Itailc)   表示新的条目,网址、电子邮件地址、文件名和文件扩展名。   宽体(Constant width)   用于程序列表,文本中涉及的程序元素,如变量或函数名、数据库、数据类型、环境变量、语句、应用、关键词以及模块。   宽粗体(Consrant width bold)   显示命令或其他应该由用户逐个输入的文本。   宽斜体(Constant width italic)   显示应该由用户提供的值或上下文确定的值进行替换的文本。   使用示例代码   这部分内容可以更好地帮助你完成工作。总的来说,你无需获得授权就可以在你的程序和文档中使用本书的代码,除非你对代码最重要的部分进行了二次加工。例如,使用本书的代码片段编写程序,并不需要特别的许可,但销售或者分发包含本书示例代码的光盘则必须获得许可。引用本书的问题解答或示例代码是不需要授权的,然而,如果要将本书示例中的核心代码放入你的产品文档中,则需要获得许可。   我们重视图书的版权要求,然而并非必需。图书版权通常包括标题、作者、出版商以及ISBN。例如:“MySQL in a Nutshell,Second Edition,by Russell J.T.Dyer.Copyright 2008 Russell J.T.Dyer,978-0-596-51433-4.”   如果你在使用示例代码过程中发现了错误,或者希望获得上述授权,敬请联系我们:permissions@oreilly.com。...    序言   如果说MySQL是开源世界中唯美的一把利剑,那么本书则是驾驭MySQL的圣洁而壳丽的剑谱。.   从红军兄手中拿到本书,认真阅读,发现这是不同寻常的一本书。用心研读了本书,它给我未知的问题带来了答案,终结了潜伏在我内心的疑惑。本书让我不再为维护MySQL而苦恼,因为我熟知了MySQL的命令行参数;不再让我因为查找某个特别的SQL语句而翻遍搜索引擎却难寻解决方法,因为我领略了SQL语句的不尽奥秘;同时不再苦于应用程序无法和MySQL高度集成,依靠书中提供的API,我们可以轻松地在应用程序和MySQL之间搭建起桥梁。除此之外,书中有许多亮点值得我们去发掘。..   书中理论和示例紧密结合,既授之以鱼,又授之以渔,能同时兼具这二者是难能可贵的,也是我欣赏这本书的一个方面。   本书是一本优秀的工具书,它能启迪MySQl爱好者的智慧,让大家在使用MySQL的道路上畅通无阻,也能让大家早日得心应手地使用MySQL。   MySQL是开源世界的一颗启明星,它照亮了开源的道路,使得开源的道路前行得更快更好,而拥有了本书,我们就可以顺利打开通往MySQL殿堂的大门。   本书的出版,将是送给MySQL爱好者和DBA们的一份大礼,希望它能受大家欢迎并能为大家带来帮助,也期待本书能取得成功。...   开源人网站站长   杜占源   2009年1月1日   

2013-02-06

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

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

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

2013-02-06

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

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle DBA手记2:数据库诊断案例与内部恢复实践 基本信息 作者: 盖国强    崔华    郭岳    晶晶小妹    怀晓明    梁敬彬    颜志芳    出版社:电子工业出版社 ISBN:9787121119460 上架时间:2010-11-12 出版日期:2010 年11月 开本:16开 页码:281 版次:1-1 编辑推荐    电信运营商DBA工作手记    DBA小故事之SQL诊断    Ora—600错误深入探究案例两则    深入解析DEPENDENCY$对象的恢复 内容简介    《oracle dba手记2:数据库诊断案例与内部恢复实践》由多位数据库技术专家和爱好者合著而成,集合了各行业dba的工作经验与思考,包含了精心挑选的数据库诊断案例与数据库恢复实践。内容涉及oracle典型错误的分析和诊断,oracle600内部错误的外理和解决,优化器与sql的行为与分析,以及很多内部深入技术的实践。    《oracle dba手记2:数据库诊断案例与内部恢复实践》的主要内容以原理分析、内容实践、故障解决为依据,将oracle数据库的深层技术层剖缕析抽丝剥茧地展示给读者。希望能够帮助读者加深对于oracle技术的认知和理解,并将这些技术应用到实践中去。 作译者    盖国强 网名Eygle Oracle ACE总监,恩墨科技创始人,ITPUB论坛超级版主,远程DBA服务的倡导者和实践者,致力于以技术服务客户。著有《深入解析Oracle》、《循序渐进Oracle》、《深入浅出Oracle》等书;从2010年开始,致力于《Oracle DBA手记》的撰写与编辑工作,并与张乐奕共同创立了ACOUG用户组,在国内推进公益自由的Oracle技术交流活动。    崔华 2004年开始从事DBA工作,在Oracle的安装、升级、开发、性能调整、故障处理方面有丰富的经验,对Oracle的体系结构具有深入了解;深入理解Oracle的内存结构、物理存储(各种块格式)、锁机制、优化机制等;深入了解Oracle的备份恢复机制,熟悉Oracle的各种备份方法,能够处理各种情况下的复杂数据恢复情况。    郭岳 资深Oracle DBA,Oracle 10G OCM。目前就职于杭州某手机软件平台型企业,任DB技术经理;曾服务于某Oracle服务提供商,负责维护亚洲最大,全球第二的电信行业的Oracle数据库,包括性能,监控,问题处理,方案制定及项目协调。超过6年的专职Oracle维护经验,ACOUC成员。曾经的ITPUB以及CNOUG版主。目前致力于Oracle高可用和性能优化。专注于互联网企业数据库架构。    张晶晶 晶晶小妹是ITPUB上的明星,以女儿之身于2008年前后20岁许迅速崛起,其光亮闪耀一时。晶晶在ITPUB上发表的一系列技术研究和个人感悟文章,以自我独特的学习研究视角,将技术内容细致人微的展现出来,形成了自己独特的技术风格。晶晶做过程序员、DBA、讲师,目前在北京从事OCP任证培训等相关工作。    怀晓明(网名lastwinner) ITPUB Oracle开发版等版块版主,兴趣广泛,视野广阔,曾获得第一届ITPUB最佳建议奖。在多个大型IT企业多年的工作历练中,积累了大量的系统架构设计经验,擅长数据库和Web的设计、开发,精于故障诊断与处理,具有丰富的省部级电子政务行业工作经验及项目管理经验。    梁敬彬,网名wabjtam123 ITPUB数据库新技术板块版主,福建富士通公司在聘数据库专家,多年从事电信相关行业工作,负责系统架构设计、优化等工作,有着丰富的数据库管理、设计、开发、培训经验和电信行业经验。    颜志芳 网名yanzfcu 现任职于上航某民航业IT公司系统架构师兼开发DBA,主要从事数据库及BI应用的架构设计与开发工作。2004年在工作上开始接触Oracle,后来逐渐被其之博大精深所吸引,故而也产生了浓厚的学习兴趣,2008年获得9i OCP证书,拜读了Tom Kyte、Cary Millsap、Jonathan Lewis、Christian Antognini等大师的许多书籍后,才发现自己的Oracle之旅才刚刚开始,相信旅途中一定充满着挑战和快乐。 目录 封面 -9 封底 -8 扉页 -7 版权 -6 本书编委会成员介绍 -5 会泽百家 始成江河——《Oracle DBA 手记 2》编程始末 -4 目录 -2 Part 1 DBA之路 1 0 天道酬勤——从头细数来时路 3 Part 2 DBA手记 15 1 Eygle的DBA工作手记 17 承前启后——Failed Login Count带来的性能问题 17 OEM罪几何?—— 空间监控的性能问题 20 Grid Control的必要监控——进程累积导致的宕机 23 DBA诊断利器——Event 10046和 10053 26 ORA-00600 kcratr1_lostwrt之解决与原理分析 29 ORA-00600 kcratr_nab_less_than_odr案例一则 30 Cache-Low RBA与On-Disk RBA的恢复证明 31 定时任务带来的问题 —— auto_space_advisor_job_proc 33 定时任务GATHER_STATS_JOB与SQL执行 36 GATHER_STATS_JOB跨月的“BUG” 42 执行计划的cardinality (rows)评估 47 X$KTUXE与Oracle的死事务恢复 51 2 崔华的DBA工作手记 57 利用AWR报告的诊断案例一 57 利用AWR报告的诊断案例二 62 利用AWR报告的诊断案例三 64 一次逻辑读异常的诊断过程 65 3 电信运营商DBA工作手记 73 电信运营商数据库特点 73 电信运营商数据库维护原则及维护禁区 74 典型案例 79 小结 90 4 航空业DBA工作手记 91 SYS用户通过TNS连接出现ORA-01031异常 91 撤销用户访问ALL_USERS权限 92 Oracle 11g查看package导致ORA-03137错误的解决过程 93 使用SQL Profiles影响已经加入hints的SQL执行计划 94 使用SQL Plan Baselines影响已加入hints的SQL执行计划 98 探究Oracle的列长度统计 102 Part 3 开发基础 105 5 深入解析回滚段 107 回滚段基础知识 107 细看回滚段 111 回滚段的使用 114 Seq(序列值)、Wrap(环绕)和Extend(扩展) 119 回滚和提交 123 自己动手构造CR块 124 6 Connect By可以做什么? 133 Connect by是什么? 133 Connect by可以做什么? 134 小结 146 Part 4 诊断案例 147 7 DBA小故事之SQL诊断 149 困惑迷案 149 疑云重重 150 无所适从 151 峰回路转 155 大白天下 157 乘胜追击 157 余音绕梁 160 8 System State 转储分析案例一则 161 状态转储的常用命令 161 WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!案例 162 DUMP转储文件分析定位问题 162 ROW CACHE对象的定位 165 使用ass109.awk脚本辅助分析 168 AWR报告的辅助诊断 170 状态转储的常用命令 171 9 Ora-600 错误深入探究案例两则 173 BBED的介绍与常用用法 173 如何解决ora-600[4000]错误 187 解决system回滚段损坏导致的ora-600[4193]错误 195 10 Eygle的数据恢复手记 201 备份恢复与数据字典检查 201 遭遇ORA-00600 25013 / 25015错误 204 来龙去脉——表空间创建 205 Drop Tablespace Internal 211 ORA-600 4348错误的成因 220 一致性损坏的显示错误 229 实际的处理过程 232 字典检查何时发生? 233 11 深入解析 DEPENDENCY$对象的恢复 235 重现Move表失效索引的故障 235 故障的解决思路 237 获得字典表信息 237 Index Cluster Internal 243 Oracle Update Internal 252 尝试恢复操作 258 手工的DDL维护工作 265 数据字典不一致问题的解决 268 参考文献 281 索引 283

2013-02-06

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

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

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

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

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server 2008宝典 共2部分:此为第002部分 基本信息 作者: 刘智勇    刘径舟    丛书名: 宝典丛书 出版社:电子工业出版社 ISBN:9787121102820 上架时间:2010-3-27 出版日期:2010 年3月 开本:16开 页码:802 版次:1-1 内容简介   《SQL Server 2008宝典》全面介绍了SQL Server 2008各方面的知识,全书由6部分组成:第1部分为数据库的基础篇,介绍了数据库的类型、概念、对象、SQL语言等;第2部分为SQLServer 2008的准备篇,介绍了SQL Server 2008的功能、特性、各版本的比较、安装方法、SQL Server 2008的服务、客户端的工具等;第3部分为SQL Server 2008的基本操作篇,介绍如何管理与配置SQL Server 2008服务器、如何创建数据库和数据表、如何对数据库里的数据进行操作;第4部分为数据库管理篇,介绍如何使用T-SQL程序对数据进行复杂的运算,以及如何使用视图、存储过程、触发器、索引、用户定义数据类型、用户定义函数、全文索引、游标、事务和锁、统计信息和同义词等方面的知识;第5部分为SQL Server高级技术,介绍如何进行数据库备份与恢复、如何规划数据库、如何保证数据库的安全、复制与发布、自动化管理、如何使用性能工具优化数据库、数据的导入导出、SQL Server邮件的使用、Analysis Services、Reporting Services、SQL Server与XML的应用,以及如何使用客户端和应用程序访问SQL Server;第6部分为SQL Server 2008改进篇,介绍了SQL Server 2008相对于之前版本进行了哪些方面的重大改进和优化,进一步帮助读者了解SQL Server 2008更多的独有特性。   《SQL Server 2008宝典》适合SQL Server 2008的初学者学习,也适合子数据库的管理人员和开发人员阅读和参考。 编辑推荐   《SQL Server 2008宝典》:实例丰富,内容充实。书中针对每一个知识点列举了大量实例来说明该功能如何实现,全书共有超过500个精彩实例。   讲解通俗,步骤详细。通过通俗易懂的语言讲解SQL Server 2008的各个强大功能,并配以插图讲解和详细的步骤说明,帮助读者快速掌握实用技能。   由浅入深,难易穿插。《SQL Server 2008宝典》面向入门级和提高级两类读者,每个知识点都采用由浅入深的讲解方式,并穿插介绍重点和难点。   提供源码,方便学习。书中涉及到的T—SQL程序在网站上提供下载,打开相应SQL文件即可直接执行其中的代码。   SQL Server 2008是一个能用于大型联机事务处理、数据仓库和电子商务等方面应用的数据库平台,也是一个能用于数据集成、数据分析和报表解决方案的商业智能平台,为用户提供了强大、集成、便于使用的工具,使系统管理员与普通用户能更方便、更快捷地管理数据库或设计、开发应用程序。 目录 封面 -33 封底 803 扉页 -32 版权 -31 前言 -30 目录 -26 第1部分 基础篇 1 第1章 认识数据库 2 1.1 数据库的类型 2 1.1.1 结构型数据库 2 1.1.2 网络型数据库 2 1.1.3 关系型数据库 2 1.1.4 面向对象型数据库 3 1.2 数据库的基本概念 3 1.2.1 数据 3 1.2.2 数据库 3 1.2.3 数据库管理系统 3 1.2.4 数据库系统 3 1.3 常见的数据库对象 3 1.3.1 表与记录 4 1.3.2 主键与外键 4 1.3.3 索引 4 1.3.4 约束 5 1.3.5 视图 5 1.3.6 关系图 5 1.3.7 默认值 5 1.3.8 规则 5 1.3.9 存储过程 6 1.3.10 触发器 6 1.3.11 用户和角色 6 1.4 数据库管理系统的基本功能 6 1.4.1 定义数据 6 1.4.2 处理数据 6 1.4.3 保证数据安全 6 1.4.4 备份和恢复数据 6 1.5 SQL语言简介 6 1.5.1 SQL语言的历史 7 1.5.2 SQL语言的优点 7 1.5.3 SQL语言分

2013-02-06

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

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL Server 2008宝典 共2部分:此为第001部分 基本信息 作者: 刘智勇    刘径舟    丛书名: 宝典丛书 出版社:电子工业出版社 ISBN:9787121102820 上架时间:2010-3-27 出版日期:2010 年3月 开本:16开 页码:802 版次:1-1 内容简介   《SQL Server 2008宝典》全面介绍了SQL Server 2008各方面的知识,全书由6部分组成:第1部分为数据库的基础篇,介绍了数据库的类型、概念、对象、SQL语言等;第2部分为SQLServer 2008的准备篇,介绍了SQL Server 2008的功能、特性、各版本的比较、安装方法、SQL Server 2008的服务、客户端的工具等;第3部分为SQL Server 2008的基本操作篇,介绍如何管理与配置SQL Server 2008服务器、如何创建数据库和数据表、如何对数据库里的数据进行操作;第4部分为数据库管理篇,介绍如何使用T-SQL程序对数据进行复杂的运算,以及如何使用视图、存储过程、触发器、索引、用户定义数据类型、用户定义函数、全文索引、游标、事务和锁、统计信息和同义词等方面的知识;第5部分为SQL Server高级技术,介绍如何进行数据库备份与恢复、如何规划数据库、如何保证数据库的安全、复制与发布、自动化管理、如何使用性能工具优化数据库、数据的导入导出、SQL Server邮件的使用、Analysis Services、Reporting Services、SQL Server与XML的应用,以及如何使用客户端和应用程序访问SQL Server;第6部分为SQL Server 2008改进篇,介绍了SQL Server 2008相对于之前版本进行了哪些方面的重大改进和优化,进一步帮助读者了解SQL Server 2008更多的独有特性。   《SQL Server 2008宝典》适合SQL Server 2008的初学者学习,也适合子数据库的管理人员和开发人员阅读和参考。 编辑推荐   《SQL Server 2008宝典》:实例丰富,内容充实。书中针对每一个知识点列举了大量实例来说明该功能如何实现,全书共有超过500个精彩实例。   讲解通俗,步骤详细。通过通俗易懂的语言讲解SQL Server 2008的各个强大功能,并配以插图讲解和详细的步骤说明,帮助读者快速掌握实用技能。   由浅入深,难易穿插。《SQL Server 2008宝典》面向入门级和提高级两类读者,每个知识点都采用由浅入深的讲解方式,并穿插介绍重点和难点。   提供源码,方便学习。书中涉及到的T—SQL程序在网站上提供下载,打开相应SQL文件即可直接执行其中的代码。   SQL Server 2008是一个能用于大型联机事务处理、数据仓库和电子商务等方面应用的数据库平台,也是一个能用于数据集成、数据分析和报表解决方案的商业智能平台,为用户提供了强大、集成、便于使用的工具,使系统管理员与普通用户能更方便、更快捷地管理数据库或设计、开发应用程序。 目录 封面 -33 封底 803 扉页 -32 版权 -31 前言 -30 目录 -26 第1部分 基础篇 1 第1章 认识数据库 2 1.1 数据库的类型 2 1.1.1 结构型数据库 2 1.1.2 网络型数据库 2 1.1.3 关系型数据库 2 1.1.4 面向对象型数据库 3 1.2 数据库的基本概念 3 1.2.1 数据 3 1.2.2 数据库 3 1.2.3 数据库管理系统 3 1.2.4 数据库系统 3 1.3 常见的数据库对象 3 1.3.1 表与记录 4 1.3.2 主键与外键 4 1.3.3 索引 4 1.3.4 约束 5 1.3.5 视图 5 1.3.6 关系图 5 1.3.7 默认值 5 1.3.8 规则 5 1.3.9 存储过程 6 1.3.10 触发器 6 1.3.11 用户和角色 6 1.4 数据库管理系统的基本功能 6 1.4.1 定义数据 6 1.4.2 处理数据 6 1.4.3 保证数据安全 6 1.4.4 备份和恢复数据 6 1.5 SQL语言简介 6 1.5.1 SQL语言的历史 7 1.5.2 SQL语言的优点 7 1.5.3 SQL语言分

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章由冯宇晖翻译,全书由冯宇晖负责统稿。限于译者的水平,译文中难免有错误与不足之处,敬请读者和同行批评指正。译者的邮箱:fengyh1999@163.com和jwf@lit.edu.cn。...    前言   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章由冯宇晖翻译,全书由冯宇晖负责统稿。限于译者的水平,译文中难免有错误与不足之处,敬请读者和同行批评指正。译者的邮箱:fengyh1999@163.com和jwf@lit.edu.cn。...    前言   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)--随书源代码

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)》的随书源代码 对应的书籍资料见: OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053) 基本信息 原书名: 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)--详细书签版(第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

Visual Studio Help Downloader Plus v5.0.1.0

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

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到“CruiseYoung@Outlook.com”。 ============================================================================

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到“CruiseYoung@Outlook.com”。 ============================================================================

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到“CruiseYoung@Outlook.com”。

2015-08-15

Visual Studio Help Downloader Plus v3.0.0.2

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

2015-08-13

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

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

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到“CruiseYoung@Outlook.com”。

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到“CruiseYoung@Outlook.com”。

2014-05-26

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

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

2013-06-27

Visual Studio 2012 Help Downloader 增强版 v2.0.0.1

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

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到“CruiseYoung@Outlook.com”。

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到“CruiseYoung@Outlook.com”。

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到“CruiseYoung@Outlook.com”。

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到“CruiseYoung@Outlook.com”。

2013-04-13

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

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

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旗舰版或商业版将十分理想,但并非必须如此。   代码下载   可以通过出版社网站下载本书的示例代码 。   联系作者   可以通过发邮件到robin@fat-belly.com来联系Robin Dewson,也可以通过他的网站(http://www. fat-belly.com)与他取得联系。   致谢   这里,要再次感谢许许多多的人:感谢热心的Damian Fisher,多谢你教我打鼓;感谢Andrew和host-it Internet Solutions(我的ISP)的所有人,谢谢你们容忍我在SQL Server和DotNetNuke上喋喋不休的争辩;感谢我的老板Bill Cotton和Aubrey Lomas,以及在Lehman Brothers的同事Andrew O’Donnell,还有优秀的数据库管理员Andrew Harding;感谢我大学时的好朋友Robert McMillan(Toad),时隔多年,我们才又取得了联系;还要感谢Simon Collier,我们每周打乒乓球,你总把我打得无还手之力;感谢Bedford Blues橄榄球俱乐部的所有人,你们让我每个周六都激动不已。   由于许许多多的原因,我必须感谢Red Gate Software的几个人,他们是Tony Davis和Richard Collins。多年来,在我的SQL Server工作中,Tony Davis一直是那么出色,而Richard Collins安排了Apress和Red Gate的合作。此外,还要感谢SalarO的Salar Golestanian,他制作了精美的皮肤,我把它们用在我的网站建设上。   同样,要感谢我的岳母Jean,多谢她极为出色地处理需要解决的事情,并让我的妻子保持头脑清醒。还要感谢我已故的岳父David,对我们全家来说,他是一个十分英明的人。   当然,还要感谢Apress的全体人员,特别是为本书提供帮助的Kylie Johnston和Jonathan Gennick,以及Paul Carlstroem和Gary Cornell。   最后,还得感谢Barr夫妇,多谢他们配制的苏格兰另类民族饮料。...    媒体评论   “本书是SQL Server数据库初学者的明智选择。它不仅很好地介绍了SQL Server的主要特性,还深入浅出地阐述了数据库开发和设计的一般性概念。”.   ——Amazon读者评论..   “即使是我这种原本对SQL Server一无所知的人,在开始读这本书后,也会兴趣陡增,热情高涨,满怀信心地靠它从新手变为专家。相信你的成效一定比我更大。”   ——Amazon读者评论...

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旗舰版或商业版将十分理想,但并非必须如此。   代码下载   可以通过出版社网站下载本书的示例代码 。   联系作者   可以通过发邮件到robin@fat-belly.com来联系Robin Dewson,也可以通过他的网站(http://www. fat-belly.com)与他取得联系。   致谢   这里,要再次感谢许许多多的人:感谢热心的Damian Fisher,多谢你教我打鼓;感谢Andrew和host-it Internet Solutions(我的ISP)的所有人,谢谢你们容忍我在SQL Server和DotNetNuke上喋喋不休的争辩;感谢我的老板Bill Cotton和Aubrey Lomas,以及在Lehman Brothers的同事Andrew O’Donnell,还有优秀的数据库管理员Andrew Harding;感谢我大学时的好朋友Robert McMillan(Toad),时隔多年,我们才又取得了联系;还要感谢Simon Collier,我们每周打乒乓球,你总把我打得无还手之力;感谢Bedford Blues橄榄球俱乐部的所有人,你们让我每个周六都激动不已。   由于许许多多的原因,我必须感谢Red Gate Software的几个人,他们是Tony Davis和Richard Collins。多年来,在我的SQL Server工作中,Tony Davis一直是那么出色,而Richard Collins安排了Apress和Red Gate的合作。此外,还要感谢SalarO的Salar Golestanian,他制作了精美的皮肤,我把它们用在我的网站建设上。   同样,要感谢我的岳母Jean,多谢她极为出色地处理需要解决的事情,并让我的妻子保持头脑清醒。还要感谢我已故的岳父David,对我们全家来说,他是一个十分英明的人。   当然,还要感谢Apress的全体人员,特别是为本书提供帮助的Kylie Johnston和Jonathan Gennick,以及Paul Carlstroem和Gary Cornell。   最后,还得感谢Barr夫妇,多谢他们配制的苏格兰另类民族饮料。...    媒体评论   “本书是SQL Server数据库初学者的明智选择。它不仅很好地介绍了SQL Server的主要特性,还深入浅出地阐述了数据库开发和设计的一般性概念。”.   ——Amazon读者评论..   “即使是我这种原本对SQL Server一无所知的人,在开始读这本书后,也会兴趣陡增,热情高涨,满怀信心地靠它从新手变为专家。相信你的成效一定比我更大。”   ——Amazon读者评论...

2013-02-06

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

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

2013-02-06

空空如也

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

TA关注的人

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