一、数据库文件与普通文件区别:
1.普通文件对数据管理(增删改查)效率低
2.数据库对数据管理效率高,使用方便
二、常用数据库:
1.关系型数据库:
将复杂的数据结构简化为二维表格形式
大型:Oracle、DB2
中型:MySql、SQLServer
小型:Sqlite
2.非关系型数据库
以键值对存储,且结构不固定 //JSON、Redis、MongoDB
嵌入式数据库:sqlite3:stu.db
优点:
1.开源免费, c语言开发
2.代码量少,1万行左右,总大小10M以内
3.文件型数据库,可以移动
4.数据容量最大2T
sqlite3的安装
1.在线安装
sudo apt-get install sqlite3
sudo apt-get install libsqlite3-dev
sqlite常用命令:
.help 查看sqlite3支持的相关命令
.quit 退出sqlite3数据库
.tables 查看数据库中的所有表
.schema tablename 查看tablename创建时的SQL语句(表的结构)
.headers on/off 开启关闭列名称
.mode column 以左对齐列宽显示数据
.width 第一列宽度 第二列宽度 第三列宽度 ... 设置column模式显示下的每列的宽度
常用SQL语言:
1.create table 创建表
create table 表名称(列名称1 数据类型,列名称2 数据类型,列名称3 数据类型,....);
若表不存在,则创建,存在不创建
create table if not exists 表名称(列名称1 数据类型,列名称2 数据类型,列名称3 数据类型,....);
注: sqlite3数据类型:
INTEGER : int
REAL:double float
TEXT: char 字符串
NULL:值是一个 NULL值。
2.insert into 插入表
INSERT INTO 表名称 VALUES(值1, 值2,....)
3..select 查表
SELECT * FROM 表名称
SELECT 列名称 FROM 表名称
SELECT 列名称1,列名称2,列名称3 FROM 表名称
4.where
1)条件匹配
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
2)模糊查询
SELECT * FROM 表名称 WHERE 列名 like '%冬梅';
SELECT * FROM 表名称 WHERE 列名 like '马%';
SELECT * FROM 表名称 WHERE 列名 like '马__';
百分号(%)代表零个、一个或多个数字或字符。
下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。
3)顺序显示
selete * form 表名称 order by 列名 ASC; //升序查询
selete * form 表名称 order by 列名 DESC; //降序查询
5.delete 删除表中信息
DELETE FROM 表名称 WHERE 列名称 = 值
6.update 修改表中信息
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
7.datetime datetime('now', '+8 hours');
eg:select datetime('now', '+8 hours');
8. 设置主键值自动增长列
create table 表名称(id INTEGER PRIMARY KEY AUTOINCREMENT, 类名称 数据类型, ...);
11. drop table 表名称 删除一张表
sqlite3函数接口:
1.sqlite3_open
函数原型 int sqlite3_open(const char *filename, /* Database filename (UTF-8) */sqlite3 **ppDb /* OUT: SQLite db handle */);
功能:打开一个数据库文件获得操作数据库文件的句柄,如果数据库存在,则打开;不存在,则创建
参数:filename:数据库文件路径
ppDb:存放句柄指针空间的首地址
返回值:成功返回SQLITE_OK
2.sqlite3_errmsg
函数原型 const char *sqlite3_errmsg(sqlite3*);
功能:获得出错原因
3.sqlite3_close
函数原型 int sqlite3_close(sqlite3*);
功能:关闭数据库句柄,释放空间
4.sqlite3_exec
函数原型:
功能:
在数据库中执行SQL语句
参数:
sqlite3*:数据库句柄
sql :SQL语句字符串首地址
callback:回调函数(只有select时使用)
void * arg :回调函数的传参(只有select时使用)
char **errmsg:出错信息存放空间首地址
返回值:成功返回SQLITE_OK
回调函数类型:
注意:
1. 回调函数查询到几行数据就执行几次;
2.回调函数必须要返回0,否则sqlite3_exec调用失败
3.数据库中查出的数据均为字符串
5.sqlite3_free
void sqlite3_free(void*);
功能:释放保存出错信息的空间