SQLite是一款轻型的数据库,它的设计目标是嵌入式的,并且目前已经在不少嵌入式产品中使用了它,它占用资源很是的低,在嵌入式设备中,可能只 须要几百K的内存就够了。它可以支持Windows/Linux/Unix等等主流的操做系统,同时可以跟不少程序语言相结合,好比Tcl、PHP、 Java等,还有ODBC接口,一样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来说,它的处理速度比他们都快。php
轻型数据库SQLite结合PHP的开发html
SQLite是一款轻型的数据库,它的设计目标是嵌入式的,并且目前已经在不少嵌入式产品中使用了它,它占用资源很是的低,在嵌入式设备中,可能只 须要几百K的内存就够了。它可以支持Windows/Linux/Unix等等主流的操做系统,同时可以跟不少程序语言相结合,好比Tcl、PHP、 Java等,还有ODBC接口,一样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来说,它的处理速度比他们都快。java
SQLite虽然很小巧,可是支持的SQL语句不会逊色于其余开源数据库,它支持的SQL包括:mysql
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 linux
同时它还支持事务处理功能等等。也有人说它象Microsoft的Access,有时候真的以为有点象,可是事实上它们区别很大。好比SQLite 支持跨平台,操做简单,可以使用不少语言直接建立数据库,而不象Access同样须要Office的支持。若是你是个很小型的应用,或者你想作嵌入式开 发,没有合适的数据库系统,那么如今你能够考虑使用SQLite。目前它的最新版本是 3.2.2,它的官方网站是:http://www.sqlite.org,能在上面得到源代码和文档。同时由于数据库结构简单,系统源代码也不是不少,也适合想研究数据库系统开发的专业人士。sql
如今咱们开始简单的介绍,主要我是想讲清楚几个问题,一是如何安装使用,二是如何跟PHP结合开发。shell
1、安装数据库
1. Windows平台express
下载windows下的文件,其实就是一个命令行程序,(下载地址:http://www.sqlite.org/sqlite-3_2_2.zip),这个命令行程序用来包括生成数据库文件、执行SQL查询、备份数据库等等功能。
下载后好比咱们解压缩到 D:/Downloads/sqlite/sqlite-3_2_2 这个目录下,那么咱们进入cmd,而且进入该目录:
cd D:/Downloads/sqlite/sqlite-3_2_2
D:/Downloads/sqlite/sqlite-3_2_2>sqlite3 test.db
# 若是test.db不存在,那么就产生一个数据库文件,若是存在就直接使用该数据库文件,至关于mysql中的use
SQLite version 3.2.2
Enter ".help" for instructions
sqlite>
# SQLite的提示符,若是想查看命令帮助输入 .help,在sqlite中全部系统命令都是 . 开头的:
sqlite> .help
.databases List names and files of attached databases
.dump ?TABLE? ... Dump the database in an SQL text format
.echo ON|OFF Turn command echo on or off
.exit Exit this program
.explain ON|OFF Turn output mode suitable for EXPLAIN on or off.
.header(s) ON|OFF Turn display of headers on or off
.help Show this message
.import FILE TABLE Import data from FILE into TABLE
.indices TABLE Show names of all indices on TABLE
.mode MODE ?TABLE? Set output mode where MODE is one of:
csv Comma-separated values
column Left-aligned columns. (See .width)
html HTML windows
# 咱们建立一个数据库catlog
sqlite> create table catalog(
...> id integer primarykey,
...> pid integer,
...> name varchar(10) UNIQUE
...> );
sqlite>
# 若是表存在就会提示:
SQL error: table catalog already exists
# 咱们建立索引信息
create index catalog_idx on catalog (id asc);
# 咱们查看表的信息,看有多少个表
sqlite> .table
aa catalog
# 查看表的结构:
sqlite> .schema catalog
CREATE TABLE catalog(
id integer primary key,
pid integer,
name varchar(10) UNIQUE
);
CREATE INDEX catalog_idx on catalog(id asc);
# 给数据表插入一条记录
sqlite> insert into catalog (ppid,name) values ('001','heiyeluren');
# 成功无任何提示,若是表达式错误提示错误信息:
SQL error: near "set": syntax error
# 检索有多少条记录
sqlite> select count(*) from catalog;
1
# 检索搜索记录
sqlite> select * from catalog;
1|1|heiyeluren
反正使用标准的SQL来操做就没有问题,不清楚能够去官方网站上查看帮助信息。另外还要说明的是SQLite不支持修改表结构,若是要修改表结构,只有删除表从新再创建,因此创建表的时候必定要考虑扩展性。估计之后这方面的功能会增强。
2. Linux/Unix 平台
error: 目前还没装过,呵呵,不过估计跟Windows差很少,改天把这部份内容补上。
2、PHP对SQLite的开发
PHP 5开始再也不默认支持Mysql,而是默认支持SQLite,可见它的影响力多么大,因此若是你想作SQLite的PHP开发,建议你使用PHP 5.0.0以上版本,我目前使用的是 PHP 5.0.4版本,直接支持SQLite扩展,这里我就不仔细讲如何安装PHP扩展,若是不清楚能够查看PHP相关文档。
这里我主要是讲针对SQLite的开发。目前PHP的主流DB类都支持SQLite的驱动,包括PEAR::DB类、ADOdb类都支持,因此使用DB来来作开发也是个好的选择。
(如下操做为了简便,都是再Windows xp平台进行的)
1. 使用PHP操做已经创建好的sqlite数据库
若是你有一个已经经过sqlite.exe创建好了的数据库和表结构,那么你就可以直接对它进行操做。php中针对sqlite的处理函数比较多,你能够查看PHP手册得到详细信息。
咱们使用sqlite_open()函数来打开一个sqlite数据库,它成功返回一个操做资源,失败返回false,那么之后的全部操做都是在这个资源上进行的,执行一个sql查询使用sqlite_query函数。
下面我假设你在当前PHP程序目录下有一个abc.db的sqlite数据库文件,咱们对该文件进行操做:
<?php
//打开sqlite数据库
$db = @sqlite_open("abc.db");
//异常处理
if (!$db) die("Connection Sqlite failed./n");
//添加一个叫作foo的数据库
@sqlite_query($db, "CREATE TABLE foo (bar varchar(10))");
//插入一条记录
@sqlite_query($db, "INSERT INTO foo VALUES ('fnord')");
//检索全部记录
$result = @sqlite_query($db, 'select bar from foo');
//打印获取的结果
print_r(sqlite_fetch_array($result));
?>
咱们看到的输出结果是:
Array
(
[0] => fnord
[bar] => fnord
)
证实咱们代码执行成功,没有输入请检查程序,或者你的数据库文件是否存在。
那么有了这个基本操做,你就可以考虑使用更复杂的操做和SQL来操做它,让它帮你管理信息,你能够作一个留言本,或者作一个CMS系统,我想都是没有问题的。
2. 使用PHP创建数据库而且操做
若是你没有任何sqlite.exe之类的工具,那么你也可以经过php来建立一个sqlite数据库,而且对它进行管理。
其实经过 sqlite.exe程序创建的数据库,内容是空的,其实只有后来等建立表,添加数据之后,数据库文件才有,那么咱们是否是可以手工添加一个文件,好比一 个空的 test.db 文件,而且对它进行操做。这是彻底能够,下面咱们就使用PHP程序来完成建立一个数据库,而且执行简单的创建数据表,插入数据和检索数据的功能。
首先咱们来看代码:(代码比较长,但比较容易理解)
<?php
/**
* 文件:sqlite.php
* 功能:对sqlite数据库的处理
* 做者:heiyeluren
* 时间:2005-8-5
*/
define("LN", __LINE__);//行号
define("FL", __FILE__);//当前文件
define("DEBUG", 0);//调试开关
$db_name = "heiyeluren.db";
//建立数据库文件,文件内容为空
if (!file_exists($db_name)) {
if (!($fp = fopen($db_name, "w+"))) {
exit(error_code(-1, LN));
}
fclose($fp);
}
//打开数据库文件
if (!($db = sqlite_open($db_name))) {
exit(error_code(-2, LN));
}
//产生数据表结构
if (!sqlite_query($db, "DROP TABLE test")) {
exit(error_code(-3, LN));
}
if (!sqlite_query($db, "CREATE TABLE test (id integer primary key,pid integer,name varchar(10) UNIQUE)")) {
exit(error_code(-3, LN));
}
//插入一条数据
if (!sqlite_query($db, " INSERT INTO test (name) VALUES ('heiyeluren') ")) {
exit(error_code(-4, LN));
}
//把数据检索出来
if (!($result = sqlite_query($db, "SELECT * FROM test"))) {
exit(error_code(-5, LN));
}
//获取检索数据并显示
while ($array = sqlite_fetch_array($result)) {
echo "ID: ". $array[id] ."
Name: ". $array[name] ;
}
/* 错误信息代码函数 */
function error_code($code, $line_num, $debug=DEBUG)
{
if ($code<-6 || $code>-1) {
return false;
}
switch($code) {
case -1: $errmsg = "Create database file error.";
break;
case -2: $errmsg = "Open sqlite database file failed.";
break;
case -3: $errmsg = "Create table failed, table already exist.";
break;
case -4: $errmsg = "Insert data failed.";
break;
case -5: $errmsg = "Query database data failed.";
break;
case -6: $errmsg = "Fetch data failed.";
break;
case -7: $errmsg = "";
break;
default: $errmsg = "Unknown error.";
}
$m = "[ Error ]
File: ". basename(FL) ."
Line: ". LN ."
Mesg: ". $errmsg ."";
if (!$debug) {
($m = $errmsg);
}
return $m;
}
?>
若是你操做无误的话,那么程序最后输出:
ID: 1
Name: heiyeluren
咱们以上的程序包括了比较完整的功能,有调试、异常处理、存取数据库等功能,算是一个简单应用。若是你有兴趣也能够进行扩展。
* 结束:
咱们基本的操做就讲到这里,之后有空我会把内容补全。若是你们有兴趣能够去研究一下,也许你的我的主页就须要这样的小型数据库来帮助你。
* 参考文档:
http://www.donews.net/limodou/archive/2004/03/21/7997.aspx
http://www.linuxsir.org/bbs/showthread.php?p=1213668#post1213668
* SQLite资源
官方网站:http://www.sqlite.org
SQL语法: http://www.sqlite.org/lang.html
开发文档:http://www.sqlite.org/docs.html
常见问题:http://www.sqlite.org/faq.html
下载地址:http://www.sqlite.org/download.html
Author: heiyeluren
Date: 2005-8-5