一、数据库文件与普通文件区别
1、普通文件对数据管理(增删改查)效率低
2、数据库对数据管理效率高,使用方便
二、常用数据库
1、关系型数据库:
将复杂的数据结构简化为二维表格形式
大型:Oracle、DB2
中型:MySql、SQLServer
小型;Sqlite
2、非关系型数据库
以键值对存储,且结构不稳定
Redis
MonqoDB
三、嵌入式数据库
sqlite3:
1、开源免费,C语言开发
2、代码量小,一万行左右,总大小10M以内
3、文件型数据库,可以移动
4、数据容量最大2T
1、sqlite 相关命令
.tables 查看数据库中的表
.headers on/off 开启/关闭表头
.mode column 列对齐
.width 列宽1 列宽2 设置每一列列宽
.schema 表名 查看表的结构
2、sqlite的SQL语句
语句后需加 ;号
1、创建表
create table 表名(列名1 数据类型,列名2 数据类型,列名3 数据类型);
2、插入数据
insert into 表名 values(值1,值2,值3);
CREATE table class1(id INTEGER,name TEXT,age INTEGER,score REAL);
INSERT into class1 VALUES (1,"zhangsan",20,99);
3、查询
select 列名1,列名2 from 表名;
select * from 表名; * 指(所有列)
SELECT score FROM class1 ;
SELECT * FROM class1 ;
条件查找:
select * from 表名 where 列 关系运算符 值;
模糊查找:
select * from 表名 where 列名 like “ % 查找内容”;
升序排列
select * from 表名 order by 列名 ASC
降序排序
select * from 表名 order by 列名 DESC
4、删除一行
delete from 表名 where 列名 关系运算符 值;
delete from class1 where name = "xialuo";
5、删除一张表
drop 表名;
6、修改
update from 表名 set 列名 = 新值 where 列名 = 名字
UPDATE class1 set score=100 WHERE name = "xialuo";
7、设置主键值自动增长列
1、主键值自动增长列的数据类型必须是INTEGER
2、THTEGER PRIMARY KEY AUTOINCREMENT
3、函数接口
1、sqlite3_open ( )
int sqlite3_open(const char *filename, sqlite3 **ppDb);
功能:打开一个数据库文件获得操作数据库文件的句柄,如果数据库存在,则打开;不存在,则创建
参数: filename:数据库文件路径
ppDb:存放句柄指针空间的首地址返回值: 成功返回SQLITE_OK,失败:错误码
2、sqlite3_exec ( )
int sqlite3_exec(sqlite3* pDb,const char *sql,nt (*callback)(void*,int,char**,char**), void *arg, char **errmsg;
功能:在数据库中执行SQL语句
参数: sqlite3*:数据库句柄
sql :SQL语句字符串首地址
callback:回调函数(只有select时使用)
void * :回调函数的传参(只有select时使用)
char **errmsg:出错信息存放空间首地址返回值: 成功返回SQLITE_OK 0,失败:错误码
3、sqlite3_close ( )
int sqlite3_close(sqlite3*);
功能:关闭数据库句柄