视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Sqlite的简单介绍和应用
2020-11-09 16:22:14 责编:小采
文档

Sqlite的简单介绍和应用 (一)为什么要用sqlite3? 相信很多人跟我一样一开始对sqlite不太了解,不明白为什么要用sqlite,为什么不用Mysql(也是我喜欢的数据库之一)?其实,安我的理解是最重要的两点就是简单方便和小巧玲珑,不过还是把sqlite的特点跟大家


Sqlite的简单介绍和应用

(一)为什么要用sqlite3?

相信很多人跟我一样一开始对sqlite不太了解,不明白为什么要用sqlite,为什么不用Mysql(也是我喜欢的数据库之一)?其实,安我的理解是最重要的两点就是简单方便和小巧玲珑,不过还是把sqlite的特点跟大家说一下吧,

sqlite3的优点: www.2cto.com

(1)实现了绝大多数SQL92标准。整个数据库存储在一个单一的文件中

(2)数据库文件可以在不同字节许的机器之间自由共享

(3)提供了多种语言的绑定,如C/C++,python,java

(4)相对比较流行的客户/服务器数据库引擎运行的更快

(5)没有外部依赖,源代码位于公共域,可以用于任何用途。

(6)源代码开放,代码95%有较好的注释

(7)不需要配置,不需要安装,也不需要管理员

(8)sqlite不是一个用于连接到大型数据库服务器的客户端,而是非常适合桌面程序(如字典等)和小型网站的数据库服务器。

(9)sqlite直接读写在硬盘上的数据库文件。

(二)sqlite的安装 www.2cto.com

(1)用系统的包管理器安装

sudo apt-get install sqlite3 sqlite3-doc

若是要安装图形界面,则输入以下指令

sudo apt-get install sqliteman sqliteman-doc

(2)编译安装

到官网(www.sqlite.org)上下载压缩包sqlite-3.*.*.tar.gz

$tar -xvf sqlite-3.*.*.tar.gz

$cd sqlite-3.*.*

$./configure

$make

$sudo make install

(三)sqlite的简单使用

sqlite3兼容大部分的SQL92语法,所以我们只需要学习几个sqlite3的几个特殊命令就可以了。不过为了完整,我还是在下面为大家演示了一些基本操作(如果看不懂的话,那么我想你需要补一点数据库的知识了:-))

首先在命令行执行 sqlite *.db就新建了一个库文件,我们的数据就都保存在这个文件里

$ sqlite3 test.db

SQLite version 3.7.9 2011-11-01 00:52:41

Enter ".help" for instructions

Enter SQL statements terminated with a ";"

sqlite> create table test( www.2cto.com

...> ID integer primary key,

...> name varchar(12)

...> );

sqlite> insert into test values(1,"one");

sqlite> insert into test values(2,"Two");

sqlite> insert into test values(3,"Three");

sqlite> select * from test;

1|one

2|Two

3|Three

sqlite> update test set name="One" where ID=1;

sqlite> select * from test;

1|One

2|Two

3|Three

sqlite> delete from test where ID=3;

sqlite> create index ID_INDEX on test(ID);

好了,上面的操作都是符合SQL92标准的,下面的一些命令才是sqlite的特色

sqlite的特殊命令都是以.开头的,比如刚开始进入sqlite的命令行时提示说“ Enter ".help" for instructions",其中“.help"就是特殊命令,我们输入.help会看到以下信息,都是以"."开头的。 www.2cto.com

sqlite> .help

.backup ?DB? FILE Backup DB (default "main") to FILE

.bail ON|OFF Stop after hitting an error. Default OFF

.databases List names and files of attached databases

.dump ?TABLE? ... Dump the database in an SQL text format

......

这里面有几个经常使用的,跳出来说一下。

sqlite> .tables --显示所有的表

test

sqlite> .schema --显示所有的定义

CREATE TABLE test(

ID integer primary key,

name varchar(12)

);

CREATE INDEX ID_INDEX on test(ID);

另外

.quit | .exit 退出

.output FILENAME 备份数据库

其他的自己看在线文档吧,就是.help命令了。

(四)sqlite的特别用法 www.2cto.com

sqlite可以在shell直接运行命令

$sqlite3 test.db "select * from test;" --显示表的内容

$sqlite3 -html test.db "select * from test;" --将表输出为HTML

$sqlite3 test.db ".dump">test.sql --备份数据库

$sqlite3 test.db < test.sql --输出数据库

(五)用C/C++操作sqlite

我们若是用包管理器安装的sqlite3,那么很遗憾我们并没有用C操作sqlite3所需要的库,我们必须安装libsqlite3-dev

$sudo apt-get install libsqlite3-dev

若是编译安转的话,那么恭喜你,你已经可以用C操作sqlite3了,下面是我编写的一个关于test数据库的创建,插入,删除,更新,查询等的一个C程序,给大家献丑了。

//name:testdb.c

//Autor:prape

//date:2012-10-7

#include

#include

#include

int main(int argc,char **argv){

sqlite3 *db=NULL; www.2cto.com

char *errmsg=0;

int sf;//打开sqlite3库返回的状态

//打开数据库

sf=sqlite3_open("test.db",&db);//打开test.db,并把打开的数据库付给db

if(sf){

printf("can't open database test.db\n");

sqlite3_close(db);

return 0;

}

else{

printf("open test.db successfully\n");

} www.2cto.com

//创建数据库

char *sql="create table test(\

ID integer primary key,\

name varchar(12)\

);";

sqlite3_exec(db,sql,0,0,&errmsg);

//插入记录

sql="insert into \"test\" values(1,\"one\");";

sqlite3_exec(db,sql,0,0,&errmsg);

sql="insert into \"test\" values(2,\"Two\");";

sqlite3_exec(db,sql,0,0,&errmsg);

sql="select * from \"test\";";

//查询记录

int row=0,column=0;

char **result;

sqlite3_get_table(db,sql,&result,&row,&column,&errmsg);

int i=0;

for(i=0;i<(row+1)*column;i++)

printf("result[%d]=%s\n",i,result[i]);

sqlite3_free_table(result);//清除表占内存

sql="delete from \"test\" where ID=3;";

sqlite3_exec(db,sql,0,0,&errmsg);

sqlite3_close(db);

return 0; www.2cto.com

}

然后编译执行

$gcc testdb.c -lsqlite3 -o testdb.exe

如果前面你安装了libsqllite3-dev的话,那么你一定编译成功了,不过记住要链接sqlite3库。

这个程序里面还有许多不足之处,比如每次表的内容更改以后将表格打印出来会好很多,但是代码都是重复的,这里我就不了(本人有点懒),就当留给大家尝试的内容好了。

下载本文
显示全文
专题