当前位置: 首页 > news >正文

SQLite3 数据库

一、SQLite3 命令

1. 基本命令

  • .tables:用于查看数据库中的表。
  • .headers on/off:开启或者关闭表头,方便查看表结构。
  • .mode column:使列对齐,增强数据的可读性。
  • .width 列宽1 列宽2:设置每一列的列宽,可根据数据内容进行调整。
  • .schema 表名:查看指定表的结构,包括列名、数据类型等信息。

二、SQLite3 的 SQL 语句

1. 创建表

使用 create table 语句创建表,语法为 create table 表名(列名1 数据类型 ,列名2 数据类型, 类名3 数据类型)。例如:create table students(id INTEGER, name TEXT, age INTEGER);

2. 插入数据

通过 insert into 语句向表中插入数据,语法为 insert into 表名 values(值1, 值2, 值3)。例如:insert into students values(1, 'Tom', 18);

3. 查询

  • 可以使用 select 列名1,列名2 from 表名 来查询指定列的数据,或者使用 select * from 表名 查询表中的所有数据。
  • 条件查找:使用 select * from 表名 where 列 关系运算符 值,关系运算符包括 >、<、=、!=、>=、<= 等。例如:select * from students where age > 18;
  • 模糊匹配:使用 like 进行模糊匹配,% 可以通配多个字符,_ 只能通配一个字符。例如:select * from students where name like '%o%';
  • 排序:使用 order by 进行排序,ASC 为升序排列,DESC 为降序排列。例如:select * from students order by age DESC;

4. 删除一行

使用 delect from 表名 where 列名 关系运算符 值 删除满足条件的一行数据。例如:delect from students where id = 1;

5. 删除一张表

使用 drop 表名 删除整张表。例如:drop table students;

6. 修改

使用 update 表名 set 列名=新值 where 列=值 修改表中的数据。例如:update students set age = 19 where name = 'Tom';

7. 设置主键值自动增长列

  • 主键值自动增长列的数据类型必须是 INTEGER
  • 语法为 类名 INTEGER PRIMARY KEY AUTOINCREMENT。例如:create table students(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);

8. 多表联查

  • 内连接:INNER JOIN
  • 外连接:LEFT OUTER JOIN

三、SQLite3 提供的 C/C++ API 接口

1. sqlite3_open

功能是打开数据库,如果不存在,则创建。
参数:

  • filename:数据库名称。
  • ppDb:保存数据库句柄的地址。
    返回值:成功返回 SQLITE_OK,失败返回错误码。

2. sqlite3_exec

功能是执行 SQL 语句。
参数:

  • pdb:数据库句柄。
  • sql:要执行的 SQL 语句的首地址。
  • callback:当执行 select 语句时使用到的回调函数。
  • arg:当执行 select 语句时,传递给回调函数的第一个参数。
  • errmsg:存储错误信息的地址。
    返回值:成功返回 SQLITE_OK,失败返回错误码。
//打开本目录下的stu.db文件,创建class4列表并添加数据
int main(int argc, const char *argv[])
{sqlite3 *pdb;int ret = sqlite3_open("./stu.db", &pdb);	if (ret != SQLITE_OK){fprintf(stderr,"sqlite3_open fail : %s\n", sqlite3_errmsg(pdb));return -1;}char *sql = "create table if not exists class4(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score REAL);";ret = sqlite3_exec(pdb, sql, NULL, NULL, NULL);if (ret != SQLITE_OK){fprintf(stderr, "sqlite3_exec fail : %s\n", sqlite3_errmsg(pdb));sqlite3_close(pdb);return -1;}sql = "insert into class4 values(NULL, \"zhangsan\", 99);";ret = sqlite3_exec(pdb, sql, NULL, NULL, NULL);if (ret != SQLITE_OK){fprintf(stderr, "sqlite3_exec fail : %s\n", sqlite3_errmsg(pdb));sqlite3_close(pdb);return -1;}sqlite3_close(pdb);return 0;
}

3. 回调函数

int (*callback)(void*,int column_cnt,char**column_value,char**column_name),在使用 sqlite3_exec 执行 select 语句时,每查找到一条数据,则调用一次回调。
参数:

  • argsqlite3_exec 传递的第 4 个参数。
  • column_cnt:查找到的数据的列数。
  • column_value:查找到的一行数据的每一列值的地址的集合。
  • column_name:查找到的一行数据的每一列列名的地址的集合。
    返回值:必须返回 0。

注意事项:

  1. 每找到一行,回调被触发一次。
  2. 回调函数必须返回 0。 

SQLite3思维导图: 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux中全局变量配置,/etc/profile.d还是/etc/profile
  • 数据结构(15)——哈希表(2)
  • C#从入门到精通(22)—Path类的使用
  • 2024 高教社杯 数学建模国赛 (C题)深度剖析|农作物的种植策略|数学建模完整代码+建模过程全解全析
  • 【项目一】基于pytest的自动化测试框架day1
  • CRE6959AM70V055S 超低待机功耗反激式开关电源芯片
  • CSS解析:盒模型
  • linux~~目录结构远程登录教程(xshell+xftp)
  • 鼠标控制dom元素的大小。采用ResizeObserver——监听元素大小的变化
  • HarmonyOS开发实战( Beta5版)合理使用动画丢帧规范实践
  • SpringBoot+Vue实现大文件上传(断点续传-后端控制(一))
  • 卷积神经网络与小型全连接网络在MNIST数据集上的对比
  • 设计模式—2—单例模式
  • 基于 XILINX FPGA 的 Cameralink Full 模式相机采集系统技术实施方案研究报告
  • WebRTC协议下的视频汇聚融合技术:EasyCVR视频技术构建高效视频交互体验
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • C++11: atomic 头文件
  • JavaScript设计模式之工厂模式
  • passportjs 源码分析
  • spark本地环境的搭建到运行第一个spark程序
  • 安装python包到指定虚拟环境
  • 计算机在识别图像时“看到”了什么?
  • 理清楚Vue的结构
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 目录与文件属性:编写ls
  • 如何设计一个比特币钱包服务
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 算法-图和图算法
  • 找一份好的前端工作,起点很重要
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • #{} 和 ${}区别
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (12)目标检测_SSD基于pytorch搭建代码
  • (31)对象的克隆
  • (33)STM32——485实验笔记
  • (day18) leetcode 204.计数质数
  • (WSI分类)WSI分类文献小综述 2024
  • (笔试题)分解质因式
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .Net Core和.Net Standard直观理解
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .net连接oracle数据库
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)