SQLite权威指南The Definitive Guide to SQLite(内容摘要)Michael Owens Copyright . 2006 by Michael Owens 本书的示例代码可到下载推荐者的话最近对SQLite很感兴趣,认真学习有一个多月了学习时基本找不到既好又系统的中文文章,也买不到好的中文书籍,看来SQLite在国内还是不够流行,这么好的东西,可惜了以我中等偏下的眼界,《The Definitive Guide to SQLite》是我所见到的最好的“SQLite入门+大全”了,可惜也是英文的实在找不到别的,也只好看它了,尽管我英语很不好由于英语很不好,又因为是打字员出身的干部,所以多年来养成了一个更不好的毛病,就是在不得不看英文资料时总喜欢一边看一边翻,主要是怕下次再看时还是看不懂看《The Definitive Guide to SQLite》时这个毛病也没改,当然了,看的时候就是挑着看的,翻的也只是书中的一小部分了一般情况下看完也就看完了,很少有“下次再看”的机会,这次例外由于越学越觉着SQLite好玩,就想向身边的人也介绍一下,就“再看”了越看越羞愧,本来英语就差,还随看随翻,结果可想而知。
但由于没什么动力,也就无意再重新润色了,就这样吧,反正也没什么人看,估计遗害不会太广SQLite是没有版权的,但这本书却是受版权保护的,也不知我这样做是否合法发到网上也只是想做一个好事,响应SQLite的共享精神估计不会有人来告我吧,反正我没钱另外,我也只翻译了书中很小的一部分,也许根本算不上翻译(不能乱抬高自己),就算是对SQLite和《The Definitive Guide to SQLite》一书的一个推荐吧,同样对SQLite感兴趣但又看不懂我的中文的兄弟,强烈建议看原文感谢Richard Hipp编出这么好的程序,感谢Michael Owens写出这么好的书空转”只是我的网名之一,网上网下知之者甚少,也就是一起骑车的几个人知道吧如果本文对您能有一点点帮助,也算是我对SQLite做了一点贡献吧本文中带有“空注”的内容是我个人所做的简单说明和忏悔,与原作者无关(以我的翻译水平,估计全文跟原作者都没什么关)接触SQLite时间不长,所以本文难免会有很多错误,不是故意误导大家,是真的水平低如果有兄弟想对我提出指导,我的邮箱是:njgaoyi@如果我没有回信,不是因为不想回,是因为我很少上网,在此先行谢过。
分析源程序时,发现每个SQLite源文件的头部都有这样一段话:The author disclaims copyright to this source code. In place of a legal notice, here is a blessing:May you do good and not evil.May you find forgiveness for yourself and forgive others.May you share freely, never taking more than you give.这几句话我很喜欢,翻译不好,就拿原文出来吧,与大家共勉空转Ver 1.00: 2009-11-07 于南京(如果以后有时间、兴趣,就把翻译过的内容好好修改一下,或者再多翻一些但愿还有以后的版本)总目录■前言■第1章 SQLite介绍■第2章 入门■第3章 关系模型■第4章 SQL■第5章 设计和概念■第6章 核心C API■第7章 扩充C API■第8章 语言扩展■第9章 SQLite内核■附录A SQL参考■附录B C API参考■附录C Codd的12条准则■索引目录SQLite权威指南 1总目录 2目录 3前言 1第1章 SQLite介绍 2内嵌式数据库 2开发者的数据库 3管理员的数据库 3SQLite的历史 3谁使用SQLite 4体系结构 4接口(Interface) 5编译器(Compiler) 5虚拟机(Virtual Machine) 5后端(Back-end) 6工具和测试代码(Utilities and Test Code) 7SQLite的特色 7零配置 7兼容性 7紧凑性 7简单 8适应性 8不受拘束的授权 8可靠性 8易用性 8性能和限制 9附加信息 9第2章 入门 10从哪得到SQLite 10在Windows上使用SQLite 10获得命令行程序 10获得SQLite的动态链接库(DLL) 10在Windows环境下编译SQLite源代码 10用Microsoft Visual C++构建SQLite DLL 11用Microsoft Visual C++构建SQLite CLP 11使用SQLite数据库 11Shell模式下使用CLP 11在命令行方式下执行CLP 15数据库管理 15创建、备份和删除数据库 15获得数据库文件的信息 16其它SQLite工具 16第3章 关系模型 17第4章 SQL 18关系模型 18查询语言 18SQL的发展 18示例数据库 18建立 19运行示例 19语法 19命令 20常量 20保留字和标识符 20注释 20创建一个数据库 21创建表 21改变表 21在数据库中查询 22关系操作 22操作管道 23过滤 23限定和排序 25函数(Function)和聚合(Aggregate) 26分组(Grouping) 27去掉重复 27多表连接 27名称和别名 28修改数据 28插入记录 28修改记录 28删除记录 29数据完整性 29实体完整性 29域完整性 30存储类(Storage Classes) 31弱类型(manifest typing) 32类型亲和性(Type Affinity) 33事务 35事务的范围 36冲突解决 36数据库锁 36死锁 37事务的种类 38数据库管理 38视图 38索引 39触发器 39附加(Attaching)数据库 40清洁数据库 40数据库配置 40系统表 42查看Query的执行 42第5章 设计和概念 44API 44SQLite版本3的新特性 44主要的数据结构 45核心API 46操作控制 52扩充API 53事务 54事务的生命周期 54锁的状态 55读事务 56写事务 56调整页缓冲区 58等待加锁 59编码 60使用多个连接 60表锁 61有趣的临时表 62定案的重要性 63共享缓冲区模式 63第6章 核心C API 65封装的查询 65连接和断开连接 65执行Query 66字符串处理 69Get Table查询 70预处理的查询 71取记录 73参数化的查询 76错误和意外 76处理错误 76处理忙状态 78操作控制 78提交Hook函数 78回卷Hook函数 78修改Hook函数 78授权函数 79线程 84共享缓冲区模式 85线程和内存管理 85第7章 扩充C API 86API 86注册函数 86步进函数 86返回值 86函数 86返回值 86一个完整的例子 86一个实际的应用程序 88聚合 88一个实际的例子 88排序法 90排序法定义 90一个简单的例子 90按需排序(Collation on Demand) 92一个实际的应用程序 93第8章 语言扩展 100第9章 SQLite内核 101虚拟数据库引擎(VDBE) 101栈(Stack) 103程序体 103程序开始与停止 104指令的类型 105B-Tree和Pager模型 105数据库文件格式 106B-Tree API 109编译器 111分词器(Tokenizer) 111分析器(Parser) 112代码生成器(Code Generator) 113优化 1143前言2000年春天,当我刚开始编写SQLite时,根本没想到它会在编程社区受到如此强烈的认可。
今天,有成百万的SQLite拷贝在默默地运行,在计算机中,或在不同公司生产的各种各样的小设备中你可能已经在无意识的情况下使用过SQLite,在你的、MP3或机顶盒里可能就有SQLite在你的计算机里也可能至少会有一个SQLite的拷贝,它可能来自Apple的Mac OS X,或者在大多数的Linux版本中,或者在Windows中安装某个第三方软件时很多Web网站的后台都使用SQLite,这要感谢它已经被包含为PHP5语言的一部分SQLite也被用于很多航空电子设备、建模和仿真程序、工业控制、智能卡、决策支持包、医药信息系统等因为没有SQLite使用的全面报告,所以,肯定还有很多我不知道的SQLite部署SQLite的普及很大程度上应该归功于Michael OwensMike在The Linux Journal (June 2003)和The C/C++ Users Journal (March 2004)上的文章吸引了无数程序员每篇文章发表后,SQLite网站的访问量都会显著上升通过这本书你可以看到Mike的才华和他所做的大量工作,相信你不会失望本书包含了关于SQLite所需要了解的所有内容,你应该一直把它放在伸手可及的地方。
SQLite是自由软件尽管我是它的架构师和代码的主要编写者,但SQLite并不是我的程序SQLite不属于任何人,也不在版权的保护范围之内所有曾经为SQLite项目贡献过代码的人都签署过一个宣誓书将他们的贡献发布到公共域,我把这些宣誓书的原件保存在办公室的保险箱里我还尽力保证在SQLite中不使用专利算法,这些预防措施意味着你可以以任何形式使用SQLite,而不需要付版税、许可证费用或受到其它任何限制SQLite仍然在发展但我和其他开发者都坚守它的核心价值我们将保持代码的小规模——核心库不会超过250KB我们将保持公共API和文件格式的向上兼容性我们将继续保证SQLite是充分测试的和无bug的我们希望你总是能够将新版本的SQLite放到你老的程序中,既得到它新的特性和优化,又不需要或仅需要很少的代码改动,且不需要做进一步的调试2004年,我们将SQLite从版本2升级到版本3时确实没能保持向上兼容性,但从那以后,我们已经能够达到上述所有目标并准备在将来继续这样做没有SQLite版本4的计划真诚希望你觉着SQLite是有用的,我代表SQLite的所有贡献者保证,使用SQLite你会:做出美好的产品,你的产品将会是快速、稳定和易用的。
寻求宽恕并宽恕他人因为你已经免费地得到了SQLite,也请你免费地给予他人一些东西作为回报做一回志愿者,贡献出其它的软件项目或找到其它途径来回报Richard Hipp Charlotte, NC April 11, 2006 第1章 SQLite介绍SQLite是一个开源。