SQLite 简单教程

前端之家收集整理的这篇文章主要介绍了SQLite 简单教程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

好,上一篇文章已经将sqlite编译成功,编译出dll文件和lib文件。那下面就讲讲如何去用

官方网站上有一个快速入门的例子http://www.sqlite.org/quickstart.html

这个例子我就不多说了,很简单都能看懂,自己可以写一下,当然在编译的时候需要把我们编译好的lib和dll文件用上,在代码中加一句#pragma comment(lib,"sqlite3.lib")

接下来介绍如何使用sqlite命令

官方有一篇关于命令使用文档http://www.sqlite.org/sqlite.html

使用sqlite,需要在命令行(sqlite3 程序自行到官方网站下载)输入"sqlite3" 后跟 sqlite 数据库文件名,如果文件不存在就会自动新建一个新的数据库。然后你可以直接输入sql语句,再按下"Enter"键来执行。

例如,新建一个名为 "ex1"的 sqlite 数据库,再为它新建一个 "tb1" 的数据表,你可以这样做:

$ sqlite3 ex1
sqlite version 3.3.10
Enter ".help" for instructions
sqlite> create table tbl1(one varchar(10),two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye',20);
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>

你可以输入系统的结束字符(通常使用 Control-D)或者中断字符(通常使用 Control-C)来结束 sqlite3 程序。

你要确保在每条sql语句后面输入分号,sqlite3 会寻找分号(;)来识别sql语句是否完成。如果你漏掉了分号,sqlite3 会提示你继续输入,这个特性允许你输入多行的sql命令。例如:

sqlite> CREATE TABLE tbl2 (
...> f1 varchar(30) primary key,
...> f2 text,
...> f3 real
...> );
sqlite>

查询 sqlITE_MASTER 表

一个sqlite数据库的数据结构是存贮在 "sqlite_master" 表中。你可以像其他数据表一样对 sqlite_master 表执行 “SELECT” 语句,例如:

$ sqlite3 ex1
sqlite vresion 3.3.10
Enter ".help" for instructions
sqlite> select * from sqlite_master;
type = table
name = tbl1
tbl_name = tbl1
rootpage = 3
sql = create table tbl1(one varchar(10),two smallint)
sqlite>

但是你不能够对sqlite_master 表执行 DROP TABLE,UPDATE,INSERT or DELETE ,当你创建或者删除表的时候,sqlite_master 表会自动更新。你不能手工改变 sqlite_master 表。

临时表的结构不会存贮到 sqlite_master 表中,临时表是存贮在另一个特殊的表,叫做 "sqlite_temp_master"。"sqlite_temp_master" 表本身就是临时的。

将结果写到文件

默认情况下,sqlite3会将结果发送到标准输出,你可以使用 ".output" 来改变,只是将输出到的文件名作为参数传递给 .output,所有后面的查询结果都会写到文件里。开头使用 ".output stdout" 会再次写到标准输出,例如:

sqlite> .mode list
sqlite> .separator |
sqlite> .output test_file_1.txt
sqlite> select * from tbl1;
sqlite> .exit
$ cat test_file_1.txt
hello|10
goodbye|20
$

查询数据库结构

sqlite3 提供了很多方便的命令用来查看数据库的结构,这些命令只是提供一个缩写。

例如,查看数据库的数据表的一个列表,你可以输入 ".tables":

sqlite> .tables
tbl1
tbl2
sqlite>

".tables" 命令和一下的查询相似:

SELECT name FROM sqlite_master 
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
WHERE type IN ('table','view')
ORDER BY 1

事实上,如果你查看 sqlite3 的源代码(在 /src/shell.c 中),你会找到上面具体查询

".indices" 命令以相似的方法列出一个特殊表的索引。".indices" 命令以一个数据表的名字作为参数。左后是 ".schema" 命令,不带参数的 .schema 命令会显示用来创建数据库的 “CREATE TABLE and CREATE INDEX” 语句,如果你给一个表名为参数,他会显示用来创建表和索引(如果有的话)的 CREATE 语句。

sqlite> .schema
create table tbl1(one varchar(10),two smallint)
CREATE TABLE tbl2 (
f1 varchar(30) primary key,
f2 text,
f3 real
)
sqlite> .schema tbl2
CREATE TABLE tbl2 (
f1 varchar(30) primary key,
f3 real
)

查询中使用 "%s" 来代替你的参数,可以让你查看数据库子集的结构。

sqlite> .schema %abc%

备份数据库到 ASCII 码的文本文件

使用 ".dump" 命令来导出数据库内容到ASCII 文本文件。这个文件可以被还原回原来sqlite3的数据库

备份数据库的一个好方法

$ echo '.dump' | sqlite3 ex1 | gzip -c >ex1.dump.gz

这里会生成一个名字为 ex1.dump.gz文件,这个文件包含你以后需要重构数据库的所有内容,为了重构这个数据可,你需要输入:

$ zcat ex1.dump.gz | sqlite3 ex2

这个文本的格式是纯 sql ,所以你也能够使用 .dump 命令来导出一个 sqlite 数据库到其他的流行的数据库引擎,像这样:

$ createdb ex2
$ sqlite3 ex1 .dump | psql ex2

其他sqlite的特别用法sqlite可以在shell底下直接执行命令:sqlite3 film.db "select * from film;"输出 HTML 表格:sqlite3 -html film.db "select * from film;"将数据库「倒出来」:sqlite3 film.db ".dump" > output.sql利用输出的资料,建立一个一模一样的数据库加上以上指令,就是标准的sql数据库备份了):sqlite3 film.db < output.sql在大量插入资料时,你可能会需要先打这个指令:begin;插入完资料后要记得打这个指令,资料才会写进数据库中:commit;

猜你在找的Sqlite相关文章