sqlite是嵌入式SQL数据库引擎SQLite(SQLite Embeddable SQL Database Engine)的一个扩展。
SQLite是一个实现嵌入式SQL数据库引擎小型C语言库(C library),实现了独立的,可嵌入的,零配置的SQL数据库引擎。
特性包括:事务操作是原子,一致,孤立,并且持久的,即使在系统崩溃和电源故障之后。零配置——不需要安装和管理。
实现了绝大多数SQL92标准。整个数据库存储在一个单一的文件中。数据库文件可以在不同字节序的机器之间自由地共享。
支持最大可达2T的数据库。字符串和BLOB类型的大小只受限于可用内存。完整配置的少于250KB,忽略一些可选特性的少于150KB。
在大多数常见操作上比流行的客户/服务器数据库引擎更快。 简单易于使用的API。 内建TCL绑定。
另外提供可用于许多其他语言的绑定。具有良好注释的源代码,代码95%有较好的注释。
独立:没有外部依赖。源代码位于公共域,可用于任何用途。
用 SQLite连接的程序可以使用SQL数据库,但不需要运行一个单独的关系型数据库管理系统进程(separate RDBMS process)。
SQLite不是一个用于连接到大型数据库服务器(big database server)的客户端库(client library),
而是非常适合桌面程序和小型网站的数据库服务器。SQLite直接读写(reads and writes directly)在硬盘上的数据库文件。
本文将告诉你怎么开始体验 SQLite ,这里没有长长的说明和冗烦的配置。
一、sqlite-3.3.8编译安装
请阅读在安装包里的 INSTALL或者README 文件。SQLite已经内置了,你不需要安装任何附加的软件(additional software)。
Windows users可以下载SQLite扩展DLL。
这里简单介绍一下:
假设你得到的是源代码sqlite-3.3.8.tar.gz,这里将告诉你怎么编译它。
解压sqlite-3.3.8.tar.gz 到 /home目录下
For example:
tar zxvf sqlite-3.3.8.tar.gz -C /home
cd /home
mkdir sqlite-3.3.8-ix86
cd /home/sqlite-3.3.8-ix86/
../sqlite-3.3.8/configure --prefix=/home/sqlite-3.3.8-ix86
编译并安装,然后生成帮助文档
make && make install && make doc
如果出现下列错误
../sqlite-3.3.8/src/tclsqlite.c: In function `DbUpdateHandler':
../sqlite-3.3.8/src/tclsqlite.c:333: warning: passing arg 3 of `Tcl_ListObjAppendElement' makes pointer from integer without a cast
../sqlite-3.3.8/src/tclsqlite.c: In function `tclSqlFunc':
../sqlite-3.3.8/src/tclsqlite.c:419: warning: passing arg 1 of `Tcl_NewByteArrayObj' discards qualifiers from pointer target type
...
这个都是tcl相关的错误,可以先安装ActiveTcl以解决.假如你不需要tcl支持,那么这个错误可以这样避免:
cd /home/sqlite-3.3.8-ix86/
../sqlite-3.3.8/configure --disable-tcl --prefix=/home/sqlite-3.3.8-ix86
编译并安装,然后生成帮助文档
make && make install && make doc
不出意外,将不会出现错误,那么
Libraries have been installed in:
/home/sqlite-3.3.8-ix86/lib
库文件已经生成在 /home/sqlite-3.3.8-ix86/lib 目录下
可执行文件sqlite3已经生成在 /home/sqlite-3.3.8-ix86/bin 目录下
下面创建一个新的数据库文件名叫"zieckey.db" (当然你可以使用不同的名字) 来测试数据库.
直接输入: /home/sqlite-3.3.8-ix86/bin/sqlite3 test.db
如果出现下面字样表明编译安装已经成功了.
SQLite version 3.3.8
Enter ".help" for instructions
sqlite>
二 、SQLite的基本语法
这一章我们将会学习到sqlite的基本语法,sqlite的语法现象和SQL92是比较相象的,
或者说sqlite3兼容大部份SQL92的语法现象。
下面我们看看怎么用这些语法现象来创建数据库以及对数据库的各种操作。
2.1 新建一个数据库
例如我们想新建一个数据库命名为zieckey.db ,可以直接在shell下输入 sqlite3 zieckey.db ,
前提是:先进放sqlite的安装文件夹下然后执行下面的操作:
# ./sqlite3 zieckey.db
SQLite version 3.0.8
Enter ".help" for instructions
sqlite>
这里 SQLite version 3.0.8 是SQLite的版本信息。也就是说本文使用的sqlite版本为 version 3.0.8 .
这样就创建了一个新的数据库文件,命名为 zieckey.db
2.2 创建表和插入值
刚刚我们创建了一个新的数据库zieckey.db,加入我们想在其中新建一个名为 SensorData 的表,其包含五个列元素。
可以用CREATE TABLE语法命令。
CREATE TABLE语句基本上就是"CREATE TABLE"关键字后跟一个新的表名以及括号内的一堆定义和约束。表名可以是字符串或者标识符。以"sqlite_"开头的表名是留给sqlite数据库引擎使用的。每个字段的定义是字段名后跟字段的数据类型,接着是一个或多个的字段约束。字段的 数据类型并不限制字段中可以存放的数据。更多信息,参见sqlite的CREATE TABLE语法。
这里具体作法如下:
# sqlite3 zieckey.db
SQLite version 3.0.8
Enter ".help" for instructions
sqlite> CREATE TABLE SensorData(
...> ID INTEGER PRIMARY KEY,
...> SensorID INTEGER,
...> SiteNum INTEGER,
...> Time VARCHAR(12),
...> SensorParameter REAL
...> );
注意sqlite下除了特殊命令都要以分号 “;” 结尾,否则它将一直等待第一个分号的出现才判断这条命令结束。
现在我们可以用 schema 命令看看我们刚刚创建的表。具体作法如下:
sqlite> .schema
CREATE TABLE SensorData(
ID INTEGER PRIMAR