【SQLite3 数据库】从安装、SQL 操作到 C/C++ API 实战

四、数据库

1.数据库文件与普通文件区别

复制代码
1.普通文件对数据管理(增删改查)效率低
2.数据库对数据管理效率高,使用方便

2.常用数据库:

复制代码
1.关系型数据库:
将复杂的数据结构简化为二维表格形式
大型:Oracle、DB2
中型:MySql、SQLServer
小型:Sqlite
2.非关系型数据库
以键值对存储,且结构不固定
//JSON
Redis
MongoDB

3.嵌入式数据库:

复制代码
sqlite3: stu.db 
1.开源免费, c语言开发 
2.代码量少,1万行左右,总大小10M以内 
3.文件型数据库,可以移动 
4.数据容量最大2T

4.sqlite3的安装

1.在线安装 sudo apt-get install sqlite3 sudo apt-get install libsqlite3-dev

5.sqlite3相关命令

创建数据库:sqlite3 xxx.db

复制代码
.help          
.tables    
查看数据库中的表名
.headers on/off 打开/关闭表头
.mode column     设置表左对齐
.quit           退出数据库

6.sqlite3提供的SQL语句

复制代码
不区分大小写:
sqlite数据类型:
    NULL : 空类型
    INTEGER: 整数类型
    REAL :浮点型
    TEXT :字符串类型(文本)
    BLOB:根据输入确定
1)创建数据库中的表
复制代码
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);
2)插入数据库数据
复制代码
insert into 表名 values(值1, 值2, 值3);
insert into class1 values(1, "zhangsan", 88.5);
TEXT类型的数据,插入时需要用"", ''引起来。
3)查找数据库
复制代码
查找数据库中的所有数据:
select * from 表名;
查找指定列数据:
select 列名1, 列名2 from 表名;
条件查找:
select * from where 列 关系运算符 值;
select * from where id=1;
=
>
>=
<=
<
!=
连接多个条件:
and
or
模糊查找:
% :模糊匹配若干个字符
_ : 模糊匹配一个字符
select * from class1 where name like "马%";
select * from class1 where name like "马__";
马冬梅
有序查找:
select * from 表名 order by 列名 ASC; //升序显示
select * from 表名 order by 列名 DESC; //降序显示
4)删除数据库数据
复制代码
delete from 表名 where 条件;
5)修改数据库数据
复制代码
update 表名 set 列=新值 where 条件;
6)删除表
复制代码
drop table 表名;
7)主键值自动增长列
复制代码
create table 表名(列名 INTEGER PRIMARY KEY AUTOINCREMENT, 列名 数据类型);
8)数据库的可视化工具
复制代码
sudo apt-get install sqlitebrowser
打开数据库:
sqlitebrowser xxx.db
NavicatSqlite3 -》Windows数据库可视化工具

7.sqlite3提供的c/c++ API接口

  • sqlite3_open

    int sqlite3_open(
    const char filename, / Database filename (UTF-8) */
    sqlite3 *ppDb / OUT: SQLite db handle */
    );
    功能:打开一个数据库文件
    参数:
    filename :数据库名称
    ppDb :保存数据库句柄的指针 sqlite3 *
    返回值:
    成功:SQLITE_OK
    失败:错误码

  • sqlite3_errmsg

    const char sqlite3_errmsg(sqlite3 pdb);
    功能:获取当前数据库错误码对应的错误信息
    参数:
    pdb :数据库句柄
    返回值:
    错误信息字符串

  • 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 :回调函数,当select查询时,若查询到数据,会触发回调函数执行
    arg :传递给callback的参数(实参)
    errmsg :保存出错信息
    返回值:
    成功:SQLITE_OK
    失败:错误码
    int (*callback)(void *arg,int n,charvalue,charname);
    功能:select查询到数据时执行的回调函数
    参数:
    arg :由sqlite3_exec的第4个参数传递的参数值(形参)
    n :select查询到的数据的列数
    value:查找到的数据的每一列的值 char *value[];
    name : 查找到的数据列的表头 char *name[];
    返回值:
    成功:0
    失败:!0

注意:

  1. callback必须要有返回值,返回0,表示正常;

  2. 当select查询数据时,每找到一条数据,callback就会被触发一次;

  3. 数据库中的数据,通过select查询出时,统一按照字符串处理;

相关推荐
这个DBA有点耶4 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G4 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备4 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远4 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_962218614 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren4 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安4 天前
MySQL-触发器
数据库·mysql
白远山4 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
Omics Pro4 天前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_965148114 天前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘