Linux学习——sqlite3

1.sqlite3的使用

1.打开数据库

sqlite3 stu.db  //database

2.操作

输入 sqlite3,进入软件后,输入 sqlite3  软件自带的命令(.help,.databases,·quit,.exit)

3.增删改查

CREATE TABLE database_name.table_name(column1 datatype  PRIMARY KEY(one or more columns),column2 datatype,column3 datatype,.....columnN datatype,
);例子:
create table stu(name, sex, age, score);
create table stu1(name text, sex text, age int, score real);
创建一张表验证:.table //可以看到表的名字.schema//可以看到表的字段
//往表中添加信息
插入一条记录
语法:
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
VALUES (value1, value2, value3,...valueN);//全部列都给到
insert into stu values("tom", "male", 19, 88.5);
insert into stu1 values("ousca", "fmale", 18, 98.5);//给一部分列插入数据
insert into stu1(name, sex) values("jack", "male");

注意:sql语句后面必须以分号结尾

删除表中的数据
DELETE FROM table_name WHERE [condition];delete from 表名 where 条件;删除表
DROP TABLE database_name.table_name;drop table 表名;

添加字段
ALTER TABLE database_name.table_name RENAME TO new_table_name;
alter table 表名 add 列名;例子:
alter table stu add stuno;
name        sex         age         score       stuno     
----------  ----------  ----------  ----------  ----------
ousca       fmale       18          98.5                  
tom         male        19          88.5  
修改表的数据
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];update 表名 set 列1=值1 [,列2=值2,...][匹配条件];条件语句:
where 字句
where 列名 操作符 列值
where age    >     10update stu set stuno=110 where name="ousca"
name        sex         age         score       stuno     
----------  ----------  ----------  ----------  ----------
ousca       female      18          98.5        110       
tom         male        19          88.5        111 

//查询
SELECT column1, column2, columnN FROM table_name;select 列名1, 列名2,... from 表名;select * from 表名;//查看表的所有信息sqlite3命令:
.headers on //打开表头
.mode column //指定查询的输出格式, column是以列对齐的方式name        sex         age         score     
----------  ----------  ----------  ----------
ousca       female      18          98.5      
tom         male        19          88.5 
查询:
1.查询部分字段
select name from stu where score>80;
2.in语句
selectt * from stu where age in(18,19);
3.and语句//多个条件
select * from stu where age >18 and score > 80;
4.or语句
select * from stu where age > 18 or score > 80;
5.范围between...and ...
select * from stu where age between 19 and 20;
6. like
select * from stu where name like "tom";
select*from stuwhere name 1ike"&tom&";//%表示匹配任意多个字符
select * from stu where name like "_tom_";表示匹配任意一个字符

4.补充

//插入时间信息
create table user1(id int,name char,age int,dt datetime);
eg:insert into user1 values (1,'张三',18,datetime('now','+8 hours')); //utcid          name        age         dt                 
----------  ----------  ----------  -------------------
1           张三          18          2025-08-29 15:38:02
//自动增长列
create table user5 (id INTEGER PRIMARY KEY ASC,name char, age int);
PRIMARY KEY//主键
ASC//自动增长的顺序//int需要写成INTEGER才能实现自动增长
create table user4 (id int PRIMARY KEY ASC,name char, age int) ;id          name        age         dt                 
----------  ----------  ----------  -------------------
1           李四          21          2025-08-29 15:48:10
2           王二          22          2025-08-29 15:48:21
3           张三          25          2025-08-29 15:48:34

2.函数学习

类似于文件操作 ---- stu.db (单独的数据库文件)

1.打开

#include <sqlite3.h>
int sqlite3_open(char *db_name,sqlite3 **db);
功能:打开数据库。
参数:@db_name:数据库文件名,若文件名包含ASCII码表范围的之外的字符,则其必需是(UTF-8)编码。@db:数据库标识,此结构体为数据库操作句柄。通过此句柄可对数据库文件进行相应操作。
返回值:成功返回     SQLITE_OK失败返回     非SQLITE_OK

2.sql语句

sqlite3_exec 函数:
int sqlite3_exec(sqlite3*db,const char *sql,exechandler_t callback,void *arg,char **errmsg);功能:
执行sql指向的SQL 语句,若结果集不为空,函数会调用函数指针callback所指向的函数。参数:db:数据库的标识。sql:SQL语句(一条或多条),以';'结尾。callback:是回调函数指针,当这条语句执行之后,sqlite3会去调用你提供的这个函数。arg:当执行 sqlite3_exec 的时候传递给回调函数的参数。errmsg:存放错误信息的地址,执行失败后可以查阅这个指针。返回值:成功返回SQLITE_OK,失败返回 非SQLITE_OK。打印错误信息方法:printf("%s\n"errmsg);
回调函数指针:
typedef int(*exechandler_t)(void *para,int n_column,char **column_value,char **column_name);功能:此函数由用户定义,当sqlite3_exec函数执行sql查询语句后,结果集不为空时sqlite3_exec函数会自动调用此函数,每次调用此函数时会把结果集的一行信息传给此函数。参数:@para:sqlite3_exec传给此函数的参数,para为任意数据类型的地址。@n_column:结果集的列数。@column_value:指针数组的地址,其存放一行信息中各个列值的首地址。@column_name:指针数组的地址,其存放一行信息中各个列值对应列名的首地址。返回值:若为非0值,则通知 sqlite3_exec终止回调。
sqlite3_get_table 函数:
int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resultp,int *nrow,int *ncolumn,char **errmsg);功能:
执行Sql指向的SQL语句,函数将结果集相关的数据的地址保存在函数的参数中。参数:db:数据库的标识。sql:SQL语句(一条或多条),以';'结尾。resultp:指针数组的地址,其记录了结果集的数据。内存布局:先依次存放各列的列名,然后是每一行各列的值。nrow:结果集的行数(不包含列名)。ncolumn:结果集的列数。errmsg:错误信息。
sqlite3 free_table 函数:
void sqlite3_free_table(char **resultp);
功能:释放sqlite3_get_table分配的内存。
参数:结果集数据的首地址。

3.关闭

int sqlite3_close(sqlite3 *db);
功能:关闭数据库、释放打开数据库时申请的资源。 
参数:db:数据库的标识。
返回值:成功返回  SQLITE_OK。失败返回 非 SQLITE_OK。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95258.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【线性代数基础 | 那忘算9】基尔霍夫(拉普拉斯)矩阵 矩阵—树定理证明 [详细推导]

之前学的不扎实导致现在还得回来再学。 专栏指路&#xff1a;《再来一遍一定记住的算法&#xff08;那些你可能忘记了的算法&#xff09;》 前置知识&#xff1a; 生成树&#xff1a;在一个无向连通图中&#xff0c;能够连接所有顶点的树结构。 点的度数&#xff1a;与这个点…

Chrome高危零日漏洞PoC公开,已被用于野外攻击

谷歌此前披露了Chrome浏览器V8 JavaScript引擎中存在一个高危零日漏洞&#xff08;CVE-2025-5419&#xff09;。而在近日&#xff0c;该漏洞的概念验证&#xff08;PoC&#xff09;利用代码已被公开。相关补丁已经发布&#xff0c;用户应尽快进行更新。 **核心要点** 1. CVE-2…

HTTP 接口调用工具类(OkHttp 版)

说明 HTTP 基本知识序号方法请求体描述1GET一般没有&#xff0c;可以有从服务器获取资源。用于请求数据而不对数据进行更改。例如&#xff0c;从服务器获取网页、图片等。2POST有向服务器发送数据以创建新资源。常用于提交表单数据或上传文件。发送的数据包含在请求体中。3PUT有…

Spring/Spring MVC/iBATIS 应用 HTTP 到 HTTPS 迁移技术方案

Spring/Spring MVC/iBATIS 应用 HTTP 到 HTTPS 迁移技术方案概述本方案详细介绍了将基于 Spring、Spring MVC 和 iBATIS 的传统 Java Web 应用从 HTTP 迁移到 HTTPS 的完整流程。这种传统架构的迁移需要考虑更多手动配置和兼容性问题。一、环境评估与准备工作1.1 当前环境分析首…

多智能体系统设计:5种编排模式解决复杂AI任务

当你有一个由研究员、文案、数据分析师和质检员组成的团队时&#xff0c;如果没有合理的协调机制&#xff0c;再优秀的个体也可能产生冲突的结论、停滞的流程&#xff0c;或者解决错误的问题。AI智能体同样如此。 随着系统从单体模型向多智能体架构演进&#xff0c;编排成为核…

CVPR上的多模态检索+视频理解,LLM助力提效翻倍

关注gongzhongaho【CVPR顶会精选】多模态研究正处在爆发期&#xff0c;从图文融合到视频、语音、传感器数据&#xff0c;模型能力边界不断扩展。顶会顶刊已将其视为具身智能与通用AI的核心方向。但写论文时常遇到痛点&#xff1a;方法多、任务杂&#xff0c;缺乏统一框架&#…

Docker部署单节点使用KRaft模式的Kafka3.8.0版本与可视化界面Kafka-Map

记录一下Docker部署单节点Kafka与部署可视化界面KafkaMap容器 目录 一、Kafka早已经弃用了ZooKeeper 二、Docker部署单机版Kafka 1、--name kafka-server 2、--network kafka-stand 3、--restart unless-stopped 4、-p 9092:9092 5、-p 9093:9093 6、-e ALLOW_PLAINTE…

Elasticsearch面试精讲 Day 2:索引、文档与映射机制

【Elasticsearch面试精讲 Day 2】索引、文档与映射机制 在“Elasticsearch面试精讲”系列的第二天&#xff0c;我们将深入探讨索引&#xff08;Index&#xff09;、文档&#xff08;Document&#xff09;与映射&#xff08;Mapping&#xff09;机制。这是Elasticsearch中最基础…

Vue2 与 Vue3 路由钩子的区别及用法详解

Vue2 与 Vue3 路由钩子的区别及用法详解 一、核心区别概览特性Vue2 (选项式API)Vue3 (组合式API)定义方式组件选项形式在setup()中调用函数形式钩子名称beforeRouteEnter/Update/LeaveonBeforeRouteUpdate/Leavethis访问beforeRouteEnter不能访问this无this概念&#xff0c;直接…

STM32的内存分配与堆栈

使用过cortex-M4内核单片机的朋友对下面这张图一定不会感到陌生&#xff0c;它是ST原厂手册里面的memory map&#xff0c;里面的信息量其实非常多&#xff0c;今天简单说明一部分。我们在编写stm32代码的时候最长使用的地址有两块&#xff0c;第一块是0x0000 0000~0x3FFF FFFF,…

OpenStack 03:创建实例

修改默认安全组 管理规则 添加规则 添加端口22规则 添加ping 规则 下载镜像文件 Get images — Virtual Machine Image Guide documentation https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/42/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-42-1.1.x86_64.qcow2 …

企业级架构师综合能力项目案例一(各种组件集群搭建+SpringBoot整合)

架构图 用户请求 → Nginx → Spring Cloud Gateway → 微服务集群↓MySQL集群主从复制(ShardingSphere) Redis集群主从复制(Sentinel)ES集群 MongoDB集群(分片)RocketMQ集群 Seata分布式事务搭建集群 Nginx集群和配置┌─────────…

学习stm32 窗口看门狗

窗口看门狗1.WWDG简介窗口看门狗用于监测单片机程序运行时效是否精准&#xff0c;主要检测软件异常&#xff0c;一般用于需要精准检测程序运行时间的场合。不仅防止程序 “卡死不喂狗”&#xff0c;还能避免程序 “异常早喂狗”&#xff08;如死循环中误执行喂狗指令&#xff0…

Selenium 等待机制:编写稳定可靠的自动化脚本

一、为什么需要等待机制&#xff1f;网页是动态加载的&#xff0c;元素出现的时间不确定。如果脚本在元素还没加载完成时就尝试操作它&#xff0c;就会抛出 NoSuchElementException 异常。三种等待方式&#xff1a;强制等待&#xff1a;time.sleep() - 简单但低效隐式等待&…

蓓韵安禧活性叶酸独立包装防漏贴心设计

蓓韵安禧叶酸新升级 近期&#xff0c;蓓韵安禧在叶酸产品上进行了重要的优化升级。这次升级的核心在于产品形态和使用体验的显著提升&#xff0c;尤其体现在其包装设计上。新版本采用了独立密封的小包装形式&#xff0c;每一份都精准包含每日所需的叶酸量。这种设计不仅有效避免…

8针脚的1.8寸IIC接口的TFT彩屏的八个引脚都需要使用吗?

核心结论 不需要全部使用8个引脚。实际仅需连接 4根核心线&#xff08;GND, VCC, SCL, SDA&#xff09; 即可基本工作&#xff0c;其余引脚为功能增强或备用设计。具体需根据屏幕型号确认&#xff0c;但通用规则如下&#xff1a;8针脚功能分解引脚标号典型名称是否必需作用不连…

刷题日记0831

今日计划5道早上起来不困&#xff0c;吃好早饭开始困了&#xff0c;感觉刷不动题&#xff0c;就先做别的事&#xff0c;不困。现在别的事做好了&#xff0c;感觉能刷动题了。开始开始。7/5134. 加油站 中等超时了。看下题解。不是&#xff0c;怎么上数学了&#xff1f;假设从 x…

【2025.8.31】自学Java三个月,谈谈心路历程顺便给自己灌点鸡汤

自学Java三个月&#xff0c;谈谈心得顺便给自己灌点鸡汤 6月1开始上班&#xff0c;到今天刚好三个月。从上班第一天决定开始自学java&#xff0c;到今天也是正好3个月整&#xff0c;想借这个机会简单记录一下学习java的契机和进度&#xff0c;α一些碎碎念。&#xff08;括号恐…

linux内核trace_begin和trace_end使用分析

1,strace/ftrace的实现和使用 echo 1 > /sys/kernel/debug/tracing/tracing_on echo function > /sys/kernel/debug/tracing/current_tracer 2, 手动插入追踪点 在内核代码中,可以使用trace_printk函数手动插入追踪点,标记代码段的开始和结束: trace_printk(&…

Linux-驱动积累

Linux 设备驱动概述​Linux 设备驱动是内核与硬件交互的核心桥梁&#xff0c;负责屏蔽硬件细节、提供统一操作接口。其以内核模块为主要存在形式&#xff0c;支持动态加载 / 卸载&#xff0c;核心功能涵盖硬件初始化、中断处理、电源管理及数据传输&#xff0c;是嵌入式 Linux …