Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1492364
  • 博文数量: 465
  • 博客积分: 8915
  • 博客等级: 中将
  • 技术积分: 6365
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-30 15:05
文章分类

全部博文(465)

文章存档

2017年(33)

2016年(2)

2015年(4)

2014年(29)

2013年(71)

2012年(148)

2011年(178)

分类: SQLite/嵌入式数据库

2012-10-31 16:07:47

SQLite权威指南(第二版)

[]Grant Allen(格兰特·艾伦),Mike Owens(迈克·欧文斯) 

杨谦,刘义宣,谢志强

ISBN 978-7-121-14924-5

2012 1 月出版

价:69.00

16

404

这是一本关于SQLite 起源、特性、简介、使用、深度解析的书。

全书首先从 SQLite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用SQLite。接着,介绍SQLite 的一般SQL 和高级功能的SQL,采取举例说明,使得本书内容生动有趣。然后,全面介绍了各种语言如何与SQLite 进行编程交互,重点介绍SQLite 原生语言C 语言中的API,使得使用者可以不管扩展SQLite 的功能。本书还介绍了目前火热的IOS Android 开发中如何使用SQLite,并给出实际例子。最后,介绍了SQLite 内部架构设计,使得读者可以深入理解SQLite,高级开发者可以进一步参与SQLite 开发或者开发自己的SQLite

不管您是 SQLite 的初学者,还是SQLite 资深用户或者是对SQL 语言和程序设计感兴趣的技术爱好者,都可以从本书汲取营养。

译者序

您用过FireFox(火狐)浏览器吗?您用过金山词霸、iPhoneiPadAndroid系统吗?如果答案是Yes,说明您已经是SQLite用户或者从SQLite中受益了。SQLite作为一款嵌入式关系数据库,应用十分广泛,已经被大量应用在许多基础的软件中,并成为这些基础软件的组成部分。例如,您手中的iPhoneAndroid手机,您电脑上的浏览器或者其他软件,您访问的用PHP编写的网站等。

虽然SQLite被越来越广泛地应用,但是一直缺乏一本全面、深入浅出地介绍SQLite的书,本书就是这样一本从零开始不断深入探究SQLite的书。

本书特色鲜明,它不仅为开发人员提供了全新的数据库选择,并且全面介绍了如何应用这种选择。全书第12章全面细致且重点突出地介绍了SQLite的起源和特点,并与主流大型关系数据库进行比较,这可作为数据库选型的重要参考。本书也是嵌入式关系数据库研究人员的知音,因为它介绍了嵌入式数据库中最典型的代表SQLite,并对SQLite内核做了简要介绍。最重要的是,本书是SQLite相关开发者的重要帮手。从第3章开始,全面介绍SQLite中的SQL、高级SQL、核心API和扩展API以及各种语言扩展、iPhoneAndroid开发中如何应用SQLite等。内容翔实,实例丰富,理论与实践并举。

译者在翻译本书时,一边是感到万分的荣幸,一边也是战战兢兢。吉尔伯特·海特(美国教育家)曾经说过:写了一本很糟糕的书只是犯错而已,而把一本好书翻译得很糟糕则是犯罪。但是对于本书这样最佳的SQLite理论与实践之作,即便是冒着犯罪的风险,也值得翻译出来并推荐给大家。

本书承载的内容丰富而深入。在翻译的过程中,译者也常感汗颜,原来自诩对SQLite颇为了解的我深刻感受到自己知识面的浅薄和不完整,于是翻译过程也成为了自己检讨和学习的过程,收获颇丰。本书的作者是SQLite方面的知名研究者与实践者,其中一位是PySQLite的创建者。他们有着丰富的IT从业经验,书中的很多内容都是他们长年实践的经验和心得。因此,希望大家反复阅读,必定受益无穷。

由于本书作者的知识广博,经验丰富,而译者本人知识有限、时间仓促,难免对作品的个别之处无法原汁原味地呈现给读者,在此敬请各位读者多多包涵,不辞吝教,指出纰漏。我也希望能就本书的内容与读者有更多的交流,我的邮箱是yqbjtu@live.com

最后,我要感谢电子工业出版社博文视点公司的张春雨编辑在译书的过程中给予我们的莫大帮助。我还要感谢我的朋友雷昕、李晓亮、杨艳、刘争涛、吴林、杨建轩、尹相乐、季旻、房华、张晓光和东莞经济贸易学校的谢志强老师等。特别感谢技术总监、Itpub Oracle数据库管理版版主张乐奕(网名kamus),SQLite中文站()站长林轩,原Oracle亚洲研发中心高级DBA,现玛氏信息技术服务有限公司亚太区数据库运营经理叶熙昌,他们的参与使得本书的质量得到了进一步的保证。

 

         

20118月于北京志新村

推荐序1

SQLite——一个被广泛使用的嵌入式关系数据库,在短短的几年时间里飞速发展。大家对SQLite已经不再陌生,越来越多的人开始学习它、使用它,并且爱上它。记得2005年第一次在项目中使用SQLite时,它还仅仅是一个新兴的开源项目,那一年它获得了GoogleO’REILLY的年度开源大奖。虽然那时的SQLite功能还不是很完备,稳定性上也还有些许瑕疵,但是它小巧的身姿、极高的运行效率以及广泛的平台支持,还是深深地吸引了我。之后我便一发而不可收拾,在许多开发的软件项目中都自然而然地用到了它。当然,事实证明我的选择是正确的,如今无数的软件巨头如GoogleAppleAdobeMozilla等也都在自己的产品中开始使用SQLite,并且积极地为SQLite开发社区提供技术和资金等方面的支持,从而确保了社区能够拥有持续的活力。我相信,随着以SQLite作为底层存储引擎的Android操作系统的日益流行和其他移动领域开发的增多,今后会有更多的开发人员投入到SQLite的相关开发中来。

然而,一直以来困扰所有开发者的是,缺乏一本深入讲解SQLite的书籍,无论是入门者还是希望更深入了解的人,只能寄托于在网上搜索相关资料,这样无疑会增加学习的成本。为此,我建立了SQLite中文社区,希望能让所有的开发人员更方便地找到所需资料。本书作为SQLite经典著作的第二版,其第一版发表于2006年,书中详细而精辟地讲述了有关SQLite的开发技术,内容可谓深入到各个方面。在新版中,作者特意加入了SQLiteiOSAndroid系统中的开发内容,从而为Mobile领域的开发人员学习SQLite提供了帮助。今天,在很多人的辛勤付出之下,本书的中文版终于能够与读者见面,这对于国内的SQLite开发者无疑是一件非常值得庆祝的事。

作为一名普通的SQLite爱好者,能够参加中文版的审阅工作,使我有幸在第一时间看到了本书的中文版。在此,我对译者的翻译功底深表钦佩,其深厚的技术功底跨越了语言障碍,完整而准确地将原书的内容表达无遗。此外,中文版的排版行文风格也与原书做到了高度的统一。因此,在阅读之后,我非常高兴地向大家推荐这本书,希望它能够帮助大家跨入SQLite的世界,领略它轻巧而灵动的美。

 

SQLite中文社区站长  林轩

推荐序2

您可能是一名资深的SQLite用户或者开发人员,也可能阅读这本书是您第一次走进SQLite世界。不论您是何种背景,每天都在不知不觉中使用着 SQLite。因为SQLite是一款被广泛应用于移动设备的数据库,从iPhoneiPods到最新的平板电脑、iPad、媒体播放器等。

这是本书第9章的开篇语,正如您看到的,在智能移动设备被炒得火热并且确实在领导今后科技发展潮流的今天,哪怕本书仅仅只有第910章,对于立志于在移动开发领域有所涉猎的您来说,这本书都是值得购买的。

Itpub Oracle数据库管理版与Oracle高可用版版主,
  技术总监  张乐奕

推荐序3

其实不用我多说,大家也知道现在移动开发有多火。君不见大街小巷,男男女女,老老少少手上都有一部iPhoneiPadAndroid手机,这些移动设备已经如潮水般地涌入我们的日常生活。iOSAndroid作为一种移动设备操作系统,自然也有对应的数据库管理数据,而这个数据库就是本书介绍的SQLite SQLite作为一种便携式轻量级数据库,非常适合移动开发,有志于从事这个行业的人都应该了解如何使用SQLite开发出健壮的移动应用程序。另外,SQLite是完全开源的数据库,那些对数据库底层引擎有兴趣的朋友们,相信读完此书会有获益匪浅的感受。

Oracle 10g OCM,玛氏信息技术服务有限公司亚太区数据库运营经理  叶熙昌

关于作者

Grant Allen具备20多年的IT工作经验,做过软件开发公司的首席技术官(CTO)和Google的数据架构师。他的工作横跨多个行业,有政府部门和学术部门,大型系统设计、开发、性能、创新以及破坏性改变的咨询。Grant也是学术会议和行业会议的常客,他经常做一些关于数据挖掘、协作技术、关系数据库以及技术业务的报告。Grant在高新技术公司领导破坏性创新理论项目的业余时间取得了他的博士学位。

Mike Owens是德克萨斯州沃斯堡一家大型房地产公司的IT主管,他负责开发和管理公司的核心系统。之前他在橡树岭国家实验室(该实验室是美国能源部所属的一个大型国家实验室)担任流程设计工程师,在Nova信息系统公司当过C++程序员。他是PySQLite的最初创建者,PySQLiteSQLitePython扩展。Mike毕业于田纳西大学诺克斯维尔分校,获得化学工程学士学位。

Mike喜欢慢跑、弹吉他、滑雪,以及与同伴们一起在德克萨斯州狭长的地带上打猎。他与妻子、两个女儿以及两只小猎狗在德克萨斯州沃斯堡生活。

SQLite权威指南》全面介绍了SQLiteSQLite相关的知识,以及多种情况下使用SQLite的经验。不管您是坚定的C开发者、移动设备爱好者,还是想知道最好的嵌入式小型数据库引擎是如何开发的,本书都适合您。

先决条件

本书假设您之前没有SQLite知识,但是不管哪种水平的人都能从中受益。SQLite是用C语言编写的,带有扩展的C API,也支持很多其他语言,例如PythonTclRubyJava。作为数据库引擎,它也使用SQL。虽然本书的例子可以使具有各种水平的读者受益,但是限于篇幅,不在这里教授这些语言。

本书组织结构

本书由11章组成,主要包含以下内容:

SQLite介绍、获取和安装。

使用SQLite中的SQL

SQLite中的C API

其他语言例如PythonTclRubyJava中如何使用SQLite

移动设备开发中如何使用SQLite

SQLite内核与新特性。

您可以随便跳到自己喜欢的章节,但是第57章都是与C API相关的,最好按顺序阅读。

如何获取示例的源代码

本书示例中的所有源代码都可从Apress网站( 1430232250)中下载。在“Book Resources”框中单击“Source Code”链接即可。

译者序    IV

推荐序1 VI

推荐序2 VIII

推荐序3 IX

关于作者       XX

关于技术评审       XXI

致谢       XXII

简介       XXIII

1  SQLite介绍    1

嵌入式数据库       1

开发者的数据库    2

管理员的数据库    4

SQLite历史   4

谁在使用SQLite   5

体系结构       6

接口       6

编译器    7

虚拟机    7

后端       9

工具和测试代码    9

SQLite的特性和设计理念   10

零配置    10

移植性    10

紧凑性    11

简单性    11

灵活性    12

自由授权       12

可靠性    12

易用性    12

性能和限制    13

本书面向的读者    16

本书的组织结构    17

附加说明       18

总结       19

2  入门       21

何处获取SQLite   21

Windows上的SQLite    22

获得命令行程序    22

获取SQLite动态链接库(DLL)  25

Windows上编译SQLite源代码      26

使用微软Visual C++构建SQLite DLL       29

Visual C++构建动态链接SQLite的客户端   31

MinGW构建SQLite 32

Linux、苹果Mac OS X以及其他POSIX系统上的SQLite     34

二进制和包    34

从源代码编译       35

命令行程序    37

Shell模式下的CLP      37

命令行模式的CLP       39

数据库管理    40

创建数据库    40

获得数据库的Schema信息  42

导出数据       43

导入数据       44

格式化    45

导出带分隔符的数据    46

执行无人值守维护       46

备份数据库    47

获得数据库文件的信息       48

其他SQLite工具   50

总结       51

3  SQLite中的SQL   53

数据库示例    53

安装       55

运行示例       55

语法       56

命令       58

常量       58

关键字和标识符    59

注释       59

创建数据库    59

创建表    60

修改表    61

数据库查询    62

关系操作       62

select命令与操作管道  63

过滤       66

限定和排序    71

函数(Function)和聚合(Aggregate)  73

分组(Grouping)   74

去掉重复       79

多表连接       80

名称和别名    85

子查询    87

复合查询       89

条件结果       91

处理SQLite中的Null   93

总结       95

4  SQLite中的高级SQL   97

修改数据       97

插入记录       97

更新记录       101

删除记录       102

数据完整性    102

实体完整性    103

域完整性       108

存储类    113

视图       116

索引       118

触发器    120

事务       124

事务的范围    124

冲突解决       125

数据库锁       128

死锁       129

事务的类型    130

数据库管理    131

附加数据库    131

数据库清理    133

数据库配置    133

系统目录       137

查看查询计划       137

总结       138

5  SQLite设计与概念       139

API 140

主要数据结构       140

连接和语句    141

核心API 142

可操作的控制       150

使用线程       151

扩展API 151

创建用户自定义函数    151

创建用户自定义聚合    152

创建用户自定义排序    153

事务       153

事务生命周期       154

锁状态    154

读事务    156

写事务    157

调整页面缓存       160

过渡到独占状态    161

调整页面缓存       161

等待锁    162

繁忙处理       162

使用恰当的事务    164

代码       165

使用多个连接       165

finalize()函数的重要性 167

共享缓存模式       168

总结       168

6  核心C API     171

查询封装       171

连接与断开连接    172

执行查询       174

获取表查询    178

查询准备       179

编译       180

执行       181

完成与重置    182

获取记录       184

获取字段信息       184

获取字段值    186

一个实例       187

查询参数化    189

参数编号       192

参数命名       192

Tcl参数  193

错误与异常    194

错误处理       194

繁忙情况处理       196

模式改变处理       197

操作控制       198

提交钩子       198

回滚钩子       199

更新钩子       199

授权函数       200

线程       210

共享缓存模型       210

线程与内存管理    213

总结       214

7  扩展C API     215

API 216

注册函数       217

步骤函数       218

返回值    219

函数       220

返回值    222

数组与内存清理器       223

错误处理       224

返回输入值    224

聚合       225

注册函数       226

实例       226

排序规则       230

排序法定义    231

简单例子       234

按需排序       237

总结       238

8  语言扩展       239

选择一种扩展语言       240

Perl 242

安装       242

连接       243

查询处理       243

参数绑定       245

用户自定义函数    246

聚合       247

Python    248

安装       248

连接       249

查询处理       249

参数绑定       251

用户自定义函数    253

聚合       253

APSW(另一种Python接口)   254

Ruby       255

安装       255

连接       256

查询处理       256

参数绑定       257

用户自定义函数    259

Java 260

安装       260

连接       261

查询处理       262

自定义函数和聚合       264

JDBC      266

Tcl   268

安装       268

连接       268

查询处理       269

用户自定义函数    272

PHP 272

安装       273

连接       273

查询       274

用户自定义函数和聚合       276

总结       278

9  iOS开发中的SQLite    279

SQLite iOS开发的先决条件       279

注册成为Apple软件开发者 280

下载并安装XcodeiOS SDK   280

其他开发环境       283

建立iSeinfeld iOS SQLite应用   284

第一步:创建一个新的Xcode工程    285

第二步:将SQLite框架添加到工程   285

第三步:准备Foods数据库 287

第四步:为食品数据创建类       289

第五步:访问和查询SQLite数据库   293

第六步:最后包装和配置iSeinfeld应用程序   297

运行iSeinfeld 297

iOS中处理大型SQLite数据库   299

总结       300

10  Android开发中的SQLite   301

SQLite Android开发的先决条件 301

检查先决条件和JDK   302

下载和安装Android SDK Starter   302

下载和安装Android开发工具    303

添加Android平台和组件    304

Android SQLite类和接口     306

使用基础帮助类:SQLiteOpenHelper 307

SQLiteDatabase 308

在实际中应用SQLiteOpenHelperSQLiteDatabase 312

使用SQLiteQueryBuilder类查询SQLite数据库       315

搭建Seinfeld Android SQLite应用程序     317

创建新的Android工程 318

Seinfeld SQLite数据库添加到工程       319

查询Food数据库表     319

定义用户接口       320

连接数据和用户接口    321

查看完成的Seinfeld应用程序    322

SQLite Android应用程序的注意事项 322

Android数据库的备份  323

Android系统处理大型SQLite数据库 324

总结       324

11  SQLite内部机制及新特性  325

B-treePager模块      325

数据库文件格式    325

B-tree API      330

显示类型、存储类以及亲缘性介绍    332

显示类型       333

类型亲缘性    335

亲缘性和存储       336

执行中的亲缘性    336

预写日志       340

WAL工作原理      341

激活和配置WAL   342

WAL的优缺点      343

启用WALSQLite数据库的操作问题    343

总结       345

索引       347

阅读(2311) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~