数据库文件与普通文件区别:
1.普通文件对数据管理(增删改查)效率低
2.数据库对数据管理效率高,使用方便
常用数据库:
1.关系型数据库:
将复杂的数据结构简化为二维表格形式
大型:Oracle、DB2
中型:MySql、SQLServer
小型:Sqlite
2.非关系型数据库
以键值对存储,且结构不固定
Redis
MongoDB
嵌入式数据库:
sqlite3:
stu.db
1.开源免费, c语言开发
2.代码量少,1万行左右,总大小10M以内
3.文件型数据库,可以移动
4.数据容量最大2T
sqlite3 xxx.db
1.sqlite3相关命令
.help 查看相关手册
.databases 查看当前数据库所在的路径和名称
.tables 查看当前数据库中的表
.schema 查看创建表的结构
.mode column 列设置位左对齐
.width 列宽1 列宽2 列宽3 设置各列的宽度
2. sqlite3相关sql语句
增删改查
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
删除表中信息
DELETE FROM 表名称 WHERE 列名称 = 值
update
改表中信息
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
datetime
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'));
drop table 表名称
删除一张表
3. sqlite3相关c函数接口
1.sqlite3_open():
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
功能:打开一个数据库,如果不存在则创建
参数:
filename : 数据库名称
ppDb : sqlite3句柄的地址
返回值:
成功: SQLITE_OK
失败:错误码
2.sqlite3_exec:
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
3.sqlite3_close();
int sqlite3_close(sqlite3*);
功能:
关闭数据库句柄,释放空间
4.sqlite3_errmsg():
const char *sqlite3_errmsg(sqlite3*);
功能:
获得出错原因
使用linux调用sqlite3函数,将英文字典写入sqlite数据库中,并使用相关函数直接查找打印: