嵌入式数据库——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中设置自增主键id从1开始

    可能遇到过这种问题 当你只想新增一条数据时 发现使用Insert语句后 发现id并不是从1开始的 握草 怎么回事 其实很简单 通过执行一下SQL 对应你的表就可以解决 ALTER TABLE user AUTO INCREMENT 1 具体
  • 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
  • Nexus5596交换机支持3层需要的子卡

    3层子卡 nexus5596如果没有这块子卡 无法支持3层特性 TEST Cisco N5596 1 show modu Mod Ports Module Type Model Status 1 48 O2 32X10GBase T 16X
  • 进程间通信

    进程间通信 进程间通信介绍 进程间通信目的 数据传输 一个进程需要将它的数据发送给另一个进程 资源共享 多个进程之间共享同样的资源 通知事件 一个进程需要向另一个或一组进程发送消息 通知它 它们 发生了某种事件 如进程终止 时要通知父进程
  • 内网穿透的应用-使用Net2FTP轻松部署本地Web网站并公网访问管理内网资源

    文章目录 1 前言 2 Net2FTP网站搭建 2 1 Net2FTP下载和安装 2 2 Net2FTP网页测试 3 cpolar内网穿透 3 1 Cpolar云端设置 3 2 Cpolar本地设置
  • 6 - 数据备份与恢复|innobackupex

    数据备份与恢复 innobackupex 数据备份与恢复 数据备份相关概念 物理备份与恢复 逻辑备份 推荐 使用binlog日志文件实现对数据的时时备份 使用日志 恢复数据
  • 【计算机毕业设计】病房管理系统

    当下 如果还依然使用纸质文档来记录并且管理相关信息 可能会出现很多问题 比如原始文件的丢失 因为采用纸质文档 很容易受潮或者怕火 不容易备份 需要花费大量的人员和资金来管理用纸质文档存储的信息 最重要的是数据出现问题寻找起来很麻烦 并且修改
  • 【计算机毕业设计】个人日常事务管理系统

    进入21世纪网络和计算机得到了飞速发展 并和生活进行了紧密的结合 目前 网络的运行速度以达到了千兆 覆盖范围更是深入到生活中的角角落落 这就促使 管理系统的发展 管理系统可以实现远程处理事务 远程工作信息和随时追踪工作的状态 网上管理系统给
  • 【计算机毕业设计】基于web的山东红色旅游信息管理系统

    有效的处理想要的相关信息和如何传播有效的信息 一直是人类不断探索的动力 人类文明火种的传承都是通过了多种媒介作为载体 也是随着社会生产力的发展不断的更新 随着互联网的到来 信息传播与管理都上升了一个新的台阶 并且方便应用的同时也要考虑信息传
  • 【计算机毕业设计】北关村基本办公管理系统

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

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理

    文章目录 1 什么是DES 2 DES的基本概念 3 DES的加密流程 4 DES算法步骤详解 4 1 初始置换 Initial Permutation IP置换 4 2 加密轮次 4 3 F轮函数 4 3 1 拓展R到48位 4 3 2
  • 电商数据api接口商品评论接口接入代码演示案例

    电商数据API接口商品评论 接口接入入口 提高用户体验 通过获取用户对商品的评论 商家可以了解用户对商品的满意度和需求 从而优化商品和服务 提高用户体验 提升销售业绩 用户在购买商品前通常会查看其他用户的评论 以了解商品的实际效果和质量 商
  • 深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析

    Python MongoDB 排序 对结果进行排序 使用 sort 方法对结果进行升序或降序排序 sort 方法接受一个参数用于 字段名 一个参数用于 方向 升序是默认方向 示例 按名称按字母顺序对结果进行排序 import pymongo
  • 【计算机毕业设计】北工国际健身俱乐部

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

    随着世界经济信息化 全球化的到来和互联网的飞速发展 推动了各行业的改革 若想达到安全 快捷的目的 就需要拥有信息化的组织和管理模式 建立一套合理 动态的 交互友好的 高效的二手图书交易系统 当前的信息管理存在工作效率低 工作繁杂等问题 基于
  • 【计算机毕业设计】趵突泉景区的智慧导游小程序_5ztvv

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统趵突泉景区的智慧导游采取了人工的管理方法 但这种管理方法存
  • 【计算机毕业设计】宝鸡文理学院学生成绩动态追踪系统

    研究开发宝鸡文理学院学生成绩动态追踪系统的目的是让使用者可以更方便的将人 设备和场景更立体的连接在一起 能让用户以更科幻的方式使用产品 体验高科技时代带给人们的方便 同时也能让用户体会到与以往常规产品不同的体验风格 与安卓 iOS相比较起来
  • MongoDB - 库、集合、文档(操作 + 演示 + 注意事项)

    目录 一 MongoDB 1 1 简介 a MongoDB 是什么 为什么要使用 MongoDB b 应用场景 c MongoDB 这么强大 是不是可以直接代替 MySQL d MongoDB 中的一些概念 e Docker 下载 1 2
  • 每日变更的最佳实践

    在优维公司内部 我们采用发布单的方式进行每天的应用变更管理 这里给各位介绍优维的最佳实践 变更是需要多角色合作的 而且他是整体研发流程的一部分 在优维内部 我们坚持每日变更 打通开发环节到最终发布上线的全过程 在保证质量的前提下 尽可能提升

随机推荐