嵌入式数据库——sqlite3

2023-11-18

前言

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。

分类

数据库可以分为三种
小型:sqlite —嵌入式数据库
中型:mysql
大型:db2

数据库的设计

sqlite xx.db (有则打开,无责创建)
touch xx.db
4.2 创建数据库表 ===》行列式表格,可以创建多个;

首先登录数据库 sqlite3 xxx.db

1.系统命令:以.开头命令(对框的操作)
.help 查看帮助
.exit 退出
.database 查看当前的数据库的信息
.table 查看数据库中表的信息
.schema 表名 查看指定表结构 //学号 姓名 年龄 分数

.2创建表:
create table 表名(
列名1 数据类型 约束,
列名2 数据类型 约束
);
其中注意 sqlite3的语句必须是以分号结尾的(;)结尾的
约束:
primary key:主键,一个列的唯一标识符,该列数据必须是唯一,且不能为空
not null:非空,不能为空
null:默认约束,可以省略不写,代表该列数据可以为空

        数据类型:
            int 				整型
            varchar(长度)		字符串
            decimal(10,2) 		小数,(总长度,小数位的长度)     99999999.99
            bit:布尔值,		只接受0或1
            char(长度)    		字符串
            text:长文本
		/*例子:
		
			create table stu_info(
			id int primary key,
			name char(20) not null,
			age int null,
			score decimal(4,1)
			);		
		
		*/

4.3 表的增加 删除 修改 查询操作:SQL 语句

增:insert  into 表名(列名,列名,...) values (值1,值2,...);
eg: insert into user(id,name,pass) values (1,"zhangsan","123456");
    insert into user values(2,"abc",123);
	insert into user(id) values (3);
	//如果不写列名的话,就按照定义时候的顺序来插入
	//注意:如果是字符串需要使用''引号,如果表名后没有跟列名则数据顺序必须是按照表顺序
    //不能为空的列必须有实际的数据添加,可以为空列如果不想加数据用null占位

查:select 列名  from  表名称 [条件];
eg: select * from user;
	select id from user;
	select id,pass from user;
	select * from user where id = 1;
	select * from user where  id > 2;
	select * from user where  id > 1 and name = "abc";
	select * from user where  id < 10 or id > 20;
	select id,name from user where age > 11;
	 查询出的数据是有序:
                select * from 表 order by 列名 asc(默认升序,降序是desc);
	
	改:update  表名称 set 列名 = 值 [条件];
eg:
	update  user  set pass = "8888" where id = 1;
	update user set pass = "777" ; ///注意 会全表修改为777密码
	update user set pass = "666" where id>3; ///注意:会修改所有>3的id记录数据
	update user set pass = "666" ,name = "abc" where id = 1;
	update user set pass = "555" where id > 1 and name  = "ccc";
	update user set pass = "777" where id >1 and  id < 1;  //???

删: delete from 表名称 [条件];
eg: delete from user where id = 1; ///正常删除一行记录
	 delete from user where  id >3;
	 delete from user where  id > 3 and score <60;
     delete from user;   ///注意:全表数据清空
	 drop table user;    ///注意:表删除

数据库的表的增、删、修、查:基本格式:
insert into
delete from
update set
select from

逻辑运算:and(&&) or(||) not(!)
注意:
为空的数据查询条件不能用=
is null
is not null

数据库的表批量处理:数据库脚本 ===》xxx.sql

1、数据库的脚本导出:
sqlite3 xxx.db .dump > xxx.sql

单表导出:
sqlite>.output xxx.sql
slqite>.dump xxx 要导出的表名称
sqlite>.q
会在当前目录下自动创建一个xxx.sql存储的是xxx单表的数据内容。

2、数据库的脚本导入:
sqlite3 xxx.db < xxx.sql

sqlite3 的编程接口:

sqlite3中C语言开发接口函数:
头文件:<sqlite3.h>
编译时加上链接库:-lsqlite3

打开:
int sqlite3_open(
const char filename, / Database filename (UTF-8) */
sqlite3 *ppDb / OUT: SQLite db handle */
);

功能:该函数可以用于打开指定路径+名称的sqlite3数据库;
参数:filename 要打开的数据库路径+名称;
ppdb 打开之后的数据库句柄;
返回值:成功 0
失败 -1;

关闭:
int sqlite3_close(sqlite3 *db);
功能:关系已经打开的数据库;
参数:db要关闭的数据库句柄
返回值: 成功 0
失败-1;

操作:查询
int sqlite3_get_table(
sqlite3 db, / An open database */
const char zSql, / SQL to be evaluated */
char **pazResult, / Results of the query */
int pnRow, / Number of result rows written here */
int pnColumn, / Number of result columns written here */
char *pzErrmsg / Error msg written here */
);

功能:该函数主要用于对数据库中指定表的查询操作;
参数:db 已经打开的数据库句柄 == sqlite3_open的参数2 的值;
zSql 表示要在数据库中执行的sql语句,一般是select语句;
pazResult 结果集,表示最终查询的结果地址;
pnRow 结果集中数据的行个数;
pnColum 结果集中数据的列个数;
pzErrmsg 查询异常的信息记录;
返回值:成功 0
失败 -1;

操作:通用
int sqlite3_exec(
sqlite3db, / An open database /
const char sql, / SQL to be evaluated /
int (callback)(voidarg,int,char
,char**), /* Callback function /
void * arg, /
1st argument to callback */
char *errmsg / Error msg written here */
);

功能:该函数用于数据库中所有的常规操作,主要用于可能改动数据的
增加 删除 修改操作。
参数: db 要执行操作的数据库句柄;
sql 要执行的sql操作语句,主要是 insert delete update
callback 回调函数指针,只用于查询的时候生效。
arg 回调函数的第一个参数;
errmsg 执行sql的异常信息;
返回值:成功 0
失败-1

回调函数:callback 用于sqlite3_exec执行查询语句的是调用;
int (callback)( voidarg,int num ,char** va,char**na), /* Callback function */
参数:arg 由外部sqtlie3_exec的传入的参数;
num 执行sql语句的结果个数;
va 执行sql之后的数据值
na 执行sql之后的数据列名称
返回值: 成功 0
失败 -1 ;

注意:该回调函数在每查询到一条记录就执行一次;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式数据库——sqlite3 的相关文章

  • 猫头虎博主的MySQL救援指南:轻松解决初始化问题(nysqld: Can create directort :mysgl mysg! 9-winx64 data errno such file o)

    博主猫头虎的技术世界 欢迎来到 猫头虎的博客 探索技术的无限可能 专栏链接 精选专栏 面试题大全 面试准备的宝典 IDEA开发秘籍 提升你的IDEA技能 100天精通Golang Go语言学习之旅 领域矩阵 猫头虎技术领域矩阵 深入探索各技
  • sql临时表、创建虚拟表、select临时表、多行数据、自定义数据、插入数据

    SELECT FROM VALUES John 25 Jane 30 Mike 35 AS table name name age 方法2 select 1 2 union all select 3 4
  • 如何处理不稳定的自动化测试?

    abluecolor 在解决这个问题之前 请停止编写更多测试 因为这将花费你较高的测试维护成本 你需要尽快行动起来对不稳定的原因进行深入研究 找到不稳定的根因 并且尝试在流程 环境和代码方面做一些优化工作解决它 MasterKindew 如
  • Nexus5596交换机支持3层需要的子卡

    3层子卡 nexus5596如果没有这块子卡 无法支持3层特性 TEST Cisco N5596 1 show modu Mod Ports Module Type Model Status 1 48 O2 32X10GBase T 16X
  • Kali Linux 安全渗透核心总结,444页核心知识点

    就像IT人离不开Linux系统一样 网安人也离不开Kali Linux 作为攻击性防御和渗透测试的代名词 越来越多的人开始学习Kali 如果你也对kali感兴趣 又想深入了解这方面内容 不妨收藏一下这份Kali Linux安全渗透教程 共4
  • 天猫数据分析工具推荐(天猫第三方数据平台)

    在电商迅速发展的大背景下 做好天猫数据分析能够在多方面帮助品牌商家更好地运营店铺 塑造品牌 如通过数据分析了解消费者的需求 购买偏好 这有利于品牌商家及时调整商品结构 产品推广 商品宣传等等 灵活制定品牌的销售策略 那么 天猫平台行业 品牌
  • 成为一个黑客,就按照这个路线来!

    前几天一个同学在聊天中提到毕业后想要从事网络安全方向的工作 虽然他本身也是学计算机的 但是又怕心有余而力不足 因为 从事网络安全方面的工作向来起点都比较高 大学里少有开设这类课程的 在学校能够学到的知识比较有限 网上的关于这方面课程的质量又
  • 软件开发和网络安全哪个更好找工作?

    为什么今年应届毕业生找工作这么难 有时间去看看张雪峰今年为什么这么火就明白了 这么多年人才供给和需求错配的问题 在经济下行的今年 集中爆发 供给端 大学生越来越多 需求端 低端工作大家不愿去 高端岗位又太少 很多基础行业 比如机械 土木 所
  • 亚信安慧AntDB引领数字化转型:浙江移动成功实现CRM系统全域改造

    数字时代 通信运营商在不断迭代的背景下 需要不断探索数字化转型的路径 以适应快速发展的市场和技术环境 在这一浪潮中 浙江移动站在前沿 率先完成了其CRM系统的全域改造 采用了亚信安慧公司研发的AntDB数据库 为整个行业树立了数字化转型的标
  • AntDB内存管理之内存上下文之如何使用内存上下文

    5 如何使用内存上下文 使用内存上下文之前 我们需要先对其进行创建 AntDB启动时已经创建并初始化好了部分内存上下文 例如 TopMemoryContext 这个TopMemoryContext是所有内存上下文的父节点或者祖先节点 一般我
  • 【计算机毕业设计】病房管理系统

    当下 如果还依然使用纸质文档来记录并且管理相关信息 可能会出现很多问题 比如原始文件的丢失 因为采用纸质文档 很容易受潮或者怕火 不容易备份 需要花费大量的人员和资金来管理用纸质文档存储的信息 最重要的是数据出现问题寻找起来很麻烦 并且修改
  • Navicat 16 for MySQL:打造高效数据库开发管理工具

    随着数据的快速增长和复杂性的提升 数据库成为了现代应用开发中不可或缺的一部分 而在MySQL数据库领域 Navicat 16 for MySQL作为一款强大的数据库开发管理工具 正受到越来越多开发者的青睐 Navicat 16 for My
  • 【计算机毕业设计】北关村基本办公管理系统

    在如今社会上 关于信息上面的处理 没有任何一个企业或者个人会忽视 如何让信息急速传递 并且归档储存查询 采用之前的纸张记录模式已经不符合当前使用要求了 所以 对北关村基本办公信息管理的提升 也为了对北关村基本办公信息进行更好的维护 北关村基
  • 基于java的饮食分享平台系统设计与实现

    基于java的饮食分享平台系统设计与实现 I 引言 A 研究背景和动机 近年来 随着人们生活水平的提高和健康意识的增强 饮食健康已经成为越来越多人的关注焦点 因此 一个方便快捷的饮食分享平台就显得尤为重要 基于Java的饮食分享平台系统设计
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【计算机毕业设计】北工国际健身俱乐部

    本系统为会员而设计制作北工国际健身俱乐部 旨在实现北工国际健身俱乐部智能化 现代化管理 本北工国际健身俱乐部管理自动化系统的开发和研制的最终目的是将北工国际健身俱乐部的运作模式从手工记录数据转变为网络信息查询管理 从而为现代管理人员的使用提
  • 【计算机毕业设计】二手图书交易系统

    随着世界经济信息化 全球化的到来和互联网的飞速发展 推动了各行业的改革 若想达到安全 快捷的目的 就需要拥有信息化的组织和管理模式 建立一套合理 动态的 交互友好的 高效的二手图书交易系统 当前的信息管理存在工作效率低 工作繁杂等问题 基于
  • 【计算机毕业设计】宝鸡文理学院学生成绩动态追踪系统

    研究开发宝鸡文理学院学生成绩动态追踪系统的目的是让使用者可以更方便的将人 设备和场景更立体的连接在一起 能让用户以更科幻的方式使用产品 体验高科技时代带给人们的方便 同时也能让用户体会到与以往常规产品不同的体验风格 与安卓 iOS相比较起来
  • 毕业设计:基于python人脸识别系统 LBPH算法 sqlite数据库 (源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业

随机推荐