答案:
SQLite 介绍入门(一) 目标读者
介绍
啥是SQLite?
它对我有啥用?
SQLite 扩展类库
安装SQLite
使用SQLite
链式查询
新的函数
SQLite迭代器
工具函数
缓存优势
客户化函数
概要
关于作者关于译者
目标读者
本文是为那些对学习SQLite 扩展类库感兴趣的PHP程序员而写的.本文将向读者介绍PHP SQLite扩展类库的功能,并且对SQLite与其它数据库系统的优势关系做了概要介绍.
假设读者对PHP和SQL有个基本的了解.如果有过MySQL或者PostgreSQL的经验那就是最好不过了.在近几个月以来,你也许听过一个新的PHP数据库扩展类库SQLite.好多人认为SQLite是自有面包片以来最好的东东,其提供了一个快速的访问平面文件数据库的接口.并且提供了访问大容量数据库的简洁的手段,但是并没有所意想的功能或者速度上的损失.在本文中,我们将探讨这个新的激动人心的扩展库,并且希望以此来验证其传说中的优势和好处.
SQLite 是实现了SQL 92标准的一个大子集的嵌入式数据库.其以在一个库中组合了数据库引擎和接口,能将所有数据存储于单个文件中而著名.我觉得SQLite的功能一定程度上居于MySQL 和PostgreSQL之间.尽管如此,在性能上面,SQLite常常快2-3倍 (甚至更多).这利益于其高度调整了的内部架构,因为它除去了服务器端到客户端和客户端到服务器端的通信.
所有这些都集在一个包中,也仅仅比MySQL的客户端的库稍微大一点.而令人印象深刻的特点是你可将你的整个数据库系统放在其中.利用非常高效的内存组织,SQLite只需在很小的内存中维护其很小的尺寸,远远比其它任何数据库系统都小.这些特点使得其成为在需要高效地应用数据库的任务中一个非常方便的工具.
除了速度和效率,SQLite还有其它好多的优势使得其能成为许多任务中一个理想的解决方案.因为SQLite的数据库都是简单文件,因此无须一个管理队伍花时间来构造复杂的权限结构来保护用户的数据库.因为权限通过文件系统自动进行.这也同时意味着(数据库空间的大小只与环境有关,与本身无关)无段特殊的规则来了解用户磁盘空间.用户可以从创建他们想要的任意多的数据库和对其对这些数据库的绝对控制权而得到好处.
数据库就是一个文件的事实使用SQLite可以轻易地在服务器间移动.SQLite也除去了需要大量内存和其它系统资源的伺候进程.即使当数据库在大量地使用时也是如此.作为最新的数据库扩展库,SQLite很幸运地没有遗留代码.不象其它的数据库比如MySQL,它必须为了保持向下兼容而维护一大堆陈旧过时的行为特性.它也使用扩展库可以利用最新的PHP特性来获得最高级的性能和功能.扩展库的开发人员努力地使用户可以很方便地将其它数据库迁移到SQLite.并且同时保持已经用PHP实现的界面.
SQLite也支持面向过程接口中数据库资源传递的灵活机制.使得其可以一样容易地从MySQL和PostgreSQL中迁移而来,MySQL中数据库资源是向后传递的( passed last),而PostgreSQL中是向前传递的(passed first).
SQLite 也具有强大的面向对象接口来从数据库中高效地存取数据.减少了你实现你对于过程接口的面向对象外包的时间.正如如下示例所示,面向对象接口可以避免你一次传递所有资源.( passing resources altogether.)
// 构造新数据库(面向对象接口)
$db = new SQLiteDatabase("db.sqlite");
// 创建foo表并插入示例数据
$db->query("BEGIN;
CREATE TABLE foo(id INTEGER PRIMARY KEY, name CHAR(255));
INSERT INTO foo (name) VALUES('Ilia');
INSERT INTO foo (name) VALUES('Ilia2');
INSERT INTO foo (name) VALUES('Ilia3');
COMMIT;");
// 执行一个查询
$result = $db->query("SELECT * FROM foo");
// 迭代地读取行
while ($result->valid()) {
// 获得当前行数据
$row = $result->current();
print_r($row);
// 前进到下一行
$result->next();
}
// 不一定需要此句PHP会自动关闭链接
unset($db);
?>在 PHP 5.0安装SQLite 是很轻易的事,因为其已经易做图了SQLite扩展和库.因此所有你需要做的是在人的配置命令行中加入–with-sqlite 就可以了. 但我仍然推荐你安装一个SQLite库.这仅仅是因为这个扩展库是二进制的,你可以在没有PHP的情况下也可以打开和操纵SQLite数据库.这对于你在各种时间趋势下来调试和执行以及测试你的查询是很方便的.经常地,你会发展易做图的SQLite库有点过时了,因此,用外部的库来编译你的PHP程序,可以使得你能获益于扩展库的最新修正和SQLite的最新特性.这也允许你在无需重新编译PHP的情况下来更新你的SQLite库.
用一个外部的扩展库来编译SQLite扩展用如下命令就可以了 –with-sqlite=/path/to/lib/.
我同样应当提到的是SQLite扩展同时提供了一系列可以理解的测试SQLite所支持的单个函数和方法面向对象和面向过程的测试.这不仅仅是理解如何运用每个函数和方法工作的绝佳的示例资源.也提供了预期的的输出,使你可以看见每个操作的最终结果.
上一个:在pear中使用sqlite
下一个:php5_sqlite使用举例