1.普通文件对数据管理(增删改查)效率低
2.数据库对数据管理效率高,使用方便
将复杂的数据结构简化为二维表格形式
大型:Oracle、DB2
中型:MySql、SQLServer
小型:Sqlite
以键值对存储,且结构不固定
Redis
MongoDB
sqlite3:
stu.db
1.开源免费, c语言开发
2.代码量少,1万行左右,总大小10M以内
3.文件型数据库,可以移动
4.数据容量最大2T
.help 查看相关手册
.databases 查看当前数据库所在的路径和名称
.tables 查看当前数据库中的表
.schema 查看创建表的结构
.mode column 列设置位左对齐
.width 列宽1 列宽2 列宽3 设置各列的宽度
增删改查
create table 表名(列名1 数据类型,列名2 数据类型,列名3 数据类型);
create table class1(id integer, name text, age integer, score real);
insert into 表名 values(值1, 值2, 值3);
insert into class1 values(1, "张三", 17, 89.5);
select 列名 from 表名;
select 列名1,列名2 from 表名;
select * from 表名;
select * from 表名 order by 列名 ASC; //升序排序
select * from 表名 order by 列名 DESC; //降序排序
select * from 表名 where 列名 运算符 值;
select * from class1 where score>=90;
运算符:
=
>
<
>=
<=
!=
and
or
like
select * from 表名 where 列名 like "值%";
模糊查找和"值****"匹配的行
% 可以模糊匹配多个字符
_只能模糊匹配一个字符
select * from 表名 where 列名 like "值_";
delete from 表名 where 条件;
delete from class1 where score>90;
update 表名 set 列名=新值 where 列名=值;
update class1 set score= 99 where name="张三";
datetime("now", "+8 hours");
insert into class2 values(1, "zhangsan", 68, datetime("now", "+8 hours"));
主键值 INTEGER
create table 表名(id INTEGER PRIMARY KEY AUTOINCREMENT, XXXXX);
drop table 表名;
selete * form 表名称 order by 列名 ASC; //升序查询
selete * form 表名称 order by 列名 DESC; //降序查询
select * from class1 order by score ASC; 升序查询
select * from class1 order by score DESC;降序查询
删除表中信息
DELETE FROM 表名称 WHERE 列名称 = 值
改表中信息
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
datetime('now', '+8 hours');
select datetime('now', '+8 hours');
查询当前东八区时间
insert into class3 values(1, 'zhangsan', 99, datetime('now', '+8 hours'));
insert into class3 values(2, 'lisi', 100, datetime('now', '+8 hours'));
insert into class3 values(3, 'wanger', 98, datetime('now', '+8 hours'));
删除一张表
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
功能:打开一个数据库,如果不存在则创建
参数:
filename : 数据库名称
ppDb : sqlite3句柄的地址
返回值:
成功: SQLITE_OK
失败:错误码
int sqlite3_exec(
sqlite3*pdb, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void * arg, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
功能:用来执行sql语句
参数:
pdb : 数据库句柄
sql : 要被执行的sql语句的首地址
callback : 当使用查询方式时,每查询到一条结果,该回调函数会被触发
int (*callback)(void*arg,int column,char**value,char**title);
arg : sqlite3_exec第4个参数
column :查询到的数据的列数
value :查询到的一行数据多列值的首地址集合
title : 查询到的一行数据多列标题的首地址集合
注意:1. 回调函数必须要return;
2. 每查找到一条,都会触发一次回调
arg : 回调函数的第一个参数
返回值:成功: SQLITE_OK
int sqlite3_close(sqlite3*);
功能:
关闭数据库句柄,释放空间
const char *sqlite3_errmsg(sqlite3*);
功能:
获得出错原因
使用linux调用sqlite3函数,将英文字典写入sqlite数据库中,并使用相关函数直接查找打印:
下一篇:算法【位图】