文章目录
- 数据库
-
- 一、常用数据库
- 二、嵌入式数据库
- 三、sqlite3提供的相关命令
- 四、sqlite3提供的SQL语句
-
- [4.1 创建数据库中的表](#4.1 创建数据库中的表)
- [4.2 插入数据库数据](#4.2 插入数据库数据)
- [4.3 查找数据库](#4.3 查找数据库)
- [4.4 删除数据库数据](#4.4 删除数据库数据)
- [4.5 修改数据库数据](#4.5 修改数据库数据)
- [4.6 删除表](#4.6 删除表)
- [4.7 主键值自动增长列](#4.7 主键值自动增长列)
- [4.8 数据库的可视化工具](#4.8 数据库的可视化工具)
- [五、sqlite3提供的c/c++ API接口](#五、sqlite3提供的c/c++ API接口)
-
- [5.1 sqlite3_open](#5.1 sqlite3_open)
- [5.2 sqlite3_errmsg](#5.2 sqlite3_errmsg)
- [5.3 sqlite3_exec](#5.3 sqlite3_exec)
- 六、使用数据库的注意事项

数据库
数据库:专业的数据管理方式
一、常用数据库
- 关系型数据库:
将复杂的数据结构简化为二维表格形式
大型:Oracle、DB2
中型:MySql、SQLServer
小型:Sqlite - 非关系型数据库:
以键值对存储,且结构不稳定
//JSON
Redis
MongoDB
二、嵌入式数据库
sqlite3的特点
-
开源免费,c语言开发
-
代码量少,一万行左右,总大小10M以内
-
文件型数据库,可以移动
-
数据容量最大2T
Linux系统中安装sqline3终端指令:
sudo apt-get install sqlite3安装数据库
sudo apt-get install libsqlite3-dev安装数据库依赖的一些文件
sqlite3 name.db创建一个数据库文件(后缀为db),检查是否安装成功
sqlite3提供的相关命令
sqlite3提供的SQL语句
sqlite3提供的c/c++API接口
三、sqlite3提供的相关命令
查看手册.help
创建数据库:sqlite3 xxx.db(后缀必须为db)
查看数据库中的表:.tables 表名
打开/关闭表头:.headers on/off
设置表左对齐:.mode column
退出数据库:.quit
四、sqlite3提供的SQL语句
不区分大小写:
sqlite数据类型:
- NULL : 空类型
- INTEGER: 整数类型
- REAL :浮点型
- TEXT :字符串类型(文本)
- BLOB:根据输入确定
4.1 创建数据库中的表
c
create table 表名(列名1 数据类型1, 列名2 数据类型2, 列名3 数据类型3);
CREATE TABLE 表名(列名1 数据类型1, 列名2 数据类型2, 列名3 数据类型3);
create table class1(id INTEGER, name TEXT, score REAL);
4.2 插入数据库数据
c
insert into 表名 values(值1, 值2, 值3);
insert into class1 values(1, "zhangsan", 88.5);
TEXT类型的数据,插入时需要用"", ''引起来。
4.3 查找数据库
查找数据库中的所有数据:
c
select * from 表名;
查找指定列数据:
c
select 列名1, 列名2 from 表名;
条件查找:
c
select * from where 列 关系运算符 值;
select * from where id=1;
= > >= <= < !=
连接多个条件:
and or
模糊查找:
% :模糊匹配若干个字符
_ : 模糊匹配一个字符
c
select * from class1 where name like "马%";
select * from class1 where name like "马__";
马冬梅
有序查找:
c
select * from 表名 order by 列名 ASC; //升序显示
select * from 表名 order by 列名 DESC; //降序显示
4.4 删除数据库数据
c
delete from 表名 where 条件;
4.5 修改数据库数据
c
update 表名 set 列=新值 where 条件;
4.6 删除表
c
drop table 表名;
4.7 主键值自动增长列
c
create table 表名(列名 INTEGER PRIMARY KEY AUTOINCREMENT, 列名 数据类型);
4.8 数据库的可视化工具
c
sudo apt-get install sqlitebrowser
打开数据库:
sqlitebrowser xxx.db
NavicatSqlite3 -》Windows数据库可视化工具
五、sqlite3提供的c/c++ API接口
5.1 sqlite3_open
-
函数原型:
cint sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */ ); -
功能: 打开一个数据库文件。
-
参数:
filename:数据库名称;ppDb:保存数据库句柄的指针sqlite3 * -
返回值:
成功:SQLITE_OK;
失败:错误码。
5.2 sqlite3_errmsg
-
函数原型:
cconst char *sqlite3_errmsg(sqlite3* pdb); -
功能: 获取当前数据库错误码对应的错误信息
-
参数:
pdb:数据库句柄 -
返回值: 错误信息字符串。
5.3 sqlite3_exec
-
函数原型:
cint 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:回调函数,当select查询时,若查询到数据,会触发回调函数执行arg:传递给callback的参数(实参)errmsg:保存出错信息 -
返回值: 成功:
SQLITE_OK失败:错误码
-
回调函数:
-
函数原型:
cint (*callback)(void *arg,int n,char**value,char**name); -
功能:
select:查询到数据时执行的回调函数参数:
arg:由sqlite3_exec的第4个参数传递的参数值(形参)n:select查询到的数据的列数value:查找到的数据的每一列的值 char *value\[\];name: 查找到的数据列的表头 char *name\[\]; -
返回值: 成功:0
失败:!0
-
六、使用数据库的注意事项
- callback必须要有返回值,返回0,表示正常;
- 当select查询数据时,每找到一条数据,callback就会被触发一次;
- 数据库中的数据,通过select查询出时,统一按照字符串处理;