现在的位置: 首页 > 综合 > 正文

Sqlite常见问题解答教程

2013年03月20日 ⁄ 综合 ⁄ 共 2713字 ⁄ 字号 评论关闭

Sqlite常见问题解答教程

一、    SQLite 特点:

SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如TclPHPJava等,还有ODBC接口,同样比起MysqlPostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
SQLite
虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,它支持的SQL包括:
ATTACH DATABASE
BEGIN TRANSACTION
comment
COMMIT TRANSACTION
COPY
CREATE INDEX
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
DELETE
DETACH DATABASE
DROP INDEX
DROP TABLE
DROP TRIGGER
DROP VIEW
END TRANSACTION
EXPLAIN
expression
INSERT
ON CONFLICT clause
PRAGMA
REPLACE
ROLLBACK TRANSACTION
SELECT
UPDATE
同时它还支持事务处理功能等等。也有人说它象MicrosoftAccess,有时候真的觉得有点象,但是事实上它们区别很大。比如SQLite支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Access一样需要Office的支持。如果你是个很小型的应用,或者你想做嵌入式开发,没有合适的数据库系统,那么现在你可以考虑使用SQLite。目前它的最新版本是 3.2.2,它的官方网站是:http://www.sqlite.org,能在上面获得源代码和文档。同时因为数据库结构简单,系统源代码也不是很多,也适合想研究数据库系统开发的专业人士。

l   不需要配置,不需要安装,也不需要管理员

l   支持大部分SQL92

l   一个完整的数据库保存在磁盘上面一个文件

l   同一个数据库文件可以在不同机器上面使用

l   最大支持数据库到2T
字符和BLOB的支持仅限制于可用内存

l   整个系统少于3万行代码,少于250KB的内存占用(gcc)
大部分应用比目前常见的 客户端/服务端 的数据库快

l   没有其它依赖
源代码开放, 代码95%有较好的注释

l   简单易用的API. 官方带有TCL的编译版本。其它的单独提供

二、phpsqlite的一些例子

l   php 5.x 开始默认内置编译了SQLite, 4.x 需要通过pear 来安装 pear install sqlite SQLite 常用于嵌入到程序, 为一些需要数据库,但是不必要安装中/大型的数据库,而且进行的是比较普通的操作(例如select/insert/delete之类的)

l   以下为打开一个名叫sqlite.db的库, 如果不存在,会创建一个(需要目录可写)
$db_name='sqlite.db';
$db=new SQLiteDatabase($db_name, 0644, $error);
if ($error) exit($error);

l   创建一个表, 三个字段
user,
主键,非空,长度100varchar
pass,
非空,长度100varchar
date,
非空,整型,索引
这里使用了queryExec 而不是 query.因为只是执行,不需要返回结果
注意:在SQLite里面query也是可以执行多行语句,但是如果有结果返回的,则只会有执行第一个有结果返回的命令。
执行失败将会返回FALSE.
$db->queryexec("
CREATE TABLE user (
user VARCHAR ( 100 ) NOT NULL PRIMARY KEY,
pass VARCHAR ( 100 ) NOT NULL,
date INTEGER NOT NULL,
);
CREATE INDEX user_date ON user(date);
");

l   插入一条数据
$db->query("INSERT INTO user (user, pass, date) VALUES ('admin', 'password', 123456789)");
$db->query("INSERT INTO user (user, pass, date) VALUES ('super', 'password2', 123456790)");

l   对某条记录进行更新
$db->query("UPDATE user SET password='password1' WHERE user='admin'");

l   查询
PHP
下面SQLite的查询有很多形式
sqlite_array_query
进行一个查询,直接将返回的结果放入array
sqlite_query
是个普通的执行命令,返回为handle
返回来的handle 可以通过以下来获取结果
sqlite_fetch_all
获取所有结果并且将每条结果作为array,然后放入一个大的array里面
sqlite_fetch_array
获取下一个结果作为array
sqlite_fetch_column_types — Return an array of column types from a particular table
sqlite_fetch_object
获取下一个结果返回一个对象(obj)
sqlite_fetch_single
只获取第一列结果,返回为字符变量
sqlite_fetch_string
等同于 sqlite_fetch_single
因此会很方便写数据库的查询
例子:
$r=$db->singleQuery("SELECT password FROM user WHERE user='admin'");
// $r
则为返回来的 password1 字符串
$q=$db->Query("SELECT * FROM user");
while ($r=$q->fetch()) {
echo "User: $r[user] Password: $r[pass] Date: $r[date]n";
}

$r=$db->fetchAll("SELECT user, password FROM user");
print_r($r);
使用SQLite最大的好处是不用依赖使用其它DB,而且基本不需要担心DB server崩溃了你的程序就跟着挂了。
另外就是C/C++/delphi/java的可以把整个数据库引擎内嵌,不需要调用其它API,接口等。
三、sqlite简明教程

l   如何建立自动增长字段?

l   SQLite支持何种数据类型?

l   SQLite允许向一个integer

抱歉!评论已关闭.