Linux系统编程-数据库-SQLite
一、数据库基础概念1. 什么是数据库数据库是一个应用程序可以对数据进行存储、管理和统计多和服务器搭配使用。数据组织方式数据以**表table**的形式组织在一起一张表可以分为多个记录行一条记录可以分为多个字段列2. 数据库分类规模代表产品大型ORACLE中型MYSQL / MSSQL小型嵌入式SQLite/ DBII / powdb以上都是关系型数据库3. 常见名词缩写全称含义DBDatabase数据库select/update/databaseDBMSDatabase Management System数据库管理系统MISManagement Information System管理信息系统OAOffice Automation办公自动化4. SQLite3 简介官网www.sqlite.org / www.kernal.orgGNU 开源特点开源C 语言开发代码量少1 万行左右总大小 10M 以内绿色软件无需安装文件型数据库可以移动整个数据库就是一个.db文件数据容量最大2T二、SQL 语言SQL 是什么SQLStructured Query Language结构化查询语言专门操作关系型数据库。SQL 细分为三类分类全称作用关键字DDLData Definition Language建表、删表CREATEDROPDMLData Modify Language增、删、改一行数据INSERTDELETEUPDATEDQLData Query Language查询数据SELECT三、数据库安装与启动3.1 安装sudo apt-get install sqlite3 sudo apt-get install libsqlite3-dev # C语言编程需要这个开发库3.2 启动打开/创建数据库sqlite3 aaa.db # 打开aaa.db不存在则自动创建3.3 控制台常用指令以.开头的是内置命令指令功能.database列出当前库和系统中那个文件在关联.tables列出当前数据库中的所有表.schema xxx列出当前指定的 xxx 表结构.headers on查询数据的时候显示列名.exit/.quit/.q退出数据库控制台四、SQL 语句详解4.1 DDL — 建表 / 删表-- 建表语法 create table 表名 (字段名 类型, 字段名 类型, ...); -- 示例 create table user(id int, name char, age int); -- 删除一个表 drop table 表名; drop table user;常用数据类型类型说明int整数char/text字符串datetime日期时间INTEGER PRIMARY KEY ASC自动增长主键4.2 DML — 插入数据-- 插入语法全部字段 insert into 表名 values (值1, 值2, ...); -- 插入语法指定字段 insert into 表名 (字段名1, 字段名2) values (值1, 值2); -- 示例 insert into user (id, age) values (1, 10); insert into user values(3, wang, 11); insert into user (age) values (12); -- 其他字段为NULL4.3 DQL — 查询数据-- 查询语法 select 列名 from 表名 条件; -- 查询所有列 select * from user; -- 查询指定列 select id from user; -- 带条件查询 select id, name from user where not age 30;通配符用于模糊查询 LIKE-- 查名字是张X张后面只有一个字且 id 5 select * from user where name like 张_ and id 5; -- 查名字以张开头且 id 5 select * from user where name like 张% and id 5;4.4 DML — 修改数据-- 修改语法 update 表名 set 字段名 值 [where 条件]; -- 示例 update user set id 1 where name li; update user set id 1 where name li and passwd 123; update user set id 2 where name li or name zhao;⚠️ 不加 where 条件会修改所有行4.5 DML — 删除数据-- 删除语法 delete from 表名 [where 条件]; -- 删除表中所有数据 delete from user; -- 删除指定条件的数据 delete from user where id 1; delete from user where id 1 and name zhang; delete from user where id 1 or id 2;4.6 高级用法插入时间列-- 建表时加 datetime 类型 CREATE TABLE user1(id int, name char, age int, dt datetime); -- 插入时用 datetime(now, 8 hours) 获取北京时间 insert into user1 values(2, 张三, 23, datetime(now, 8 hours));自动增长列主键-- INTEGER PRIMARY KEY ASC 表示自动增长主键 CREATE TABLE user3(id INTEGER PRIMARY KEY ASC, name char, age int, dt datetime); -- 插入时 id 填 NULL数据库自动分配 insert into user3 values(NULL, 李四, 23, datetime(now));PRIMARY KEY主键唯一性如果用主键作为搜索条件比普通字段块。五、数据库导入导出5.1 数据导出sqlite3 xxx.db .dump xxx.sql # 将数据库名称为xxx的数据库整体导出到脚本中5.2 数据导入sqlite3 xxx.db xxx.sql六、C 语言操作 SQLite36.1 编程步骤打开数据库 读写数据库增、删、改、查 关闭数据库6.2 相关函数3.1 打开数据库sqlite3_openint sqlite3_open(char *path, sqlite3 **db);3.2 关闭数据库sqlite3_closeint sqlite3_close(sqlite3 *db);3.3 执行 SQL 语句sqlite3_execfun回调函数如果 sql 语句是查询操作SELECT需要这个函数来回收查询的结果非查询操作填NULL。获取错误信息6.3 完整示例代码增删改#include stdio.h #include stdlib.h #include string.h #include sqlite3.h int main(int argc, char **argv) { sqlite3 *db NULL; // 1. 打开数据库获得数据的句柄相当于linux中的文件描述符 int ret sqlite3_open(aaa.db, db); if (SQLITE_OK ! ret) { fprintf(stderr, open db error %s\n, sqlite3_errstr(ret)); sqlite3_close(db); return 1; } char *errmsg NULL; // 需要执行的sql语句不要执行查询语句(select) char sql_cmd[512] insert into user values(7,帅哥,20); // 2. 执行sql语句对数据库的读写 ret sqlite3_exec(db, sql_cmd, NULL, NULL, errmsg); if (SQLITE_OK ! ret) { fprintf(stderr, sqlite3_exec sql_cmd:[%s] ,%s\n, sql_cmd, errmsg); sqlite3_free(errmsg); // 释放错误信息内存 sqlite3_close(db); return 1; } // 3. 关闭数据释放资源 sqlite3_close(db); return 0; }6.4 编译方式# 需要链接 sqlite3 库-lsqlite3 gcc xxx.c -o xxx -lsqlite3七、总结速查表

相关新闻

P2并联混动仿真模型:探索未来汽车的动力与经济性

P2并联混动仿真模型:探索未来汽车的动力与经济性

基于cruise的混动仿真,P2并联混动仿真模型可实现并联混动汽车动力性经济性仿真 1.模型通过cruise/simulink联合仿真,策略通过MATLAB/Simulink搭建逻辑门限控制策略。 模式包括纯电,发动机直驱,行车充电,混合驱动&#…

2026/7/4 8:35:36 阅读更多 →
2026日照抖音代运营排行

2026日照抖音代运营排行

在 2026 年的日照,抖音代运营市场竞争愈发激烈。众多企业都在寻求专业的抖音代运营团队来提升自身在抖音平台上的影响力和业务量。而云策(山东)信息技术有限公司在这片竞争的浪潮中,展现出了独特的优势。云策(山东&…

2026/5/17 11:04:35 阅读更多 →
加分二叉树(信息学奥赛一本通- P1580)(洛谷-P1040)

加分二叉树(信息学奥赛一本通- P1580)(洛谷-P1040)

一、 题目分析在信息学奥赛的早期真题中,NOIP 2003 的《加分二叉树》是一道具有代表性的好题。题面看似是在考查二叉树的构建与遍历,但它却给出了一个很致命、也是破局核心的条件: “二叉树的中序遍历为 (1, 2, 3, ..., n)”在数据结构中&…

2026/5/17 11:04:35 阅读更多 →

最新新闻

AI冲击下数据岗位重构:国际人才策略与能力原子化实践

AI冲击下数据岗位重构:国际人才策略与能力原子化实践

1. 项目概述:这不是一份“就业报告”,而是一份人才迁徙路线图“2025年美国数据岗位市场”——光看标题,你可能以为这又是一份堆砌招聘平台统计数字、罗列热门职位名称的常规行业简报。但实际不是。我连续三年深度参与硅谷、纽约、奥斯汀三地的…

2026/7/4 16:36:50 阅读更多 →
STM32与MC6470 IMU的硬件协同与运动控制优化

STM32与MC6470 IMU的硬件协同与运动控制优化

1. MC6470与STM32L4S5ZI的硬件协同架构解析MC6470作为一款六轴惯性测量单元(IMU),其核心价值在于将三轴加速度计和三轴陀螺仪集成在单芯片方案中。在实际项目中,我测量到其加速度计量程可达16g,角速度测量范围达到2000dps,这对于大…

2026/7/4 16:34:49 阅读更多 →
XWiki路径遍历漏洞CVE-2025-55747复现与深度解析

XWiki路径遍历漏洞CVE-2025-55747复现与深度解析

1. 项目概述与漏洞背景 最近在梳理一些开源项目的安全公告时,XWiki的一个路径遍历漏洞(CVE-2025-55747)引起了我的注意。这个漏洞编号看着新鲜,但本质上又是一个经典的“输入验证不严”导致的安全问题。简单来说,攻击者…

2026/7/4 16:30:48 阅读更多 →
SpringBoot+Vue家政平台毕设实战:从工程化思维到生产级实现

SpringBoot+Vue家政平台毕设实战:从工程化思维到生产级实现

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 你有没有过这样的经历:毕业设计选题时,面对“家政服务平台”这类看似普通的题目,感觉无从下手&a…

2026/7/4 16:30:48 阅读更多 →
PC微信小程序V1MMWX加密包逆向解析:AES+XOR双重加密原理与Python解密实战

PC微信小程序V1MMWX加密包逆向解析:AES+XOR双重加密原理与Python解密实战

1. 项目概述:为什么我们需要关注PC微信小程序的加密包?如果你是一名前端开发者、安全研究员,或者单纯对微信小程序的技术实现感到好奇,那么你很可能已经发现,直接从PC端微信获取到的小程序包(.wxapkg文件&a…

2026/7/4 16:30:48 阅读更多 →
基于改进YOLOv3的实时口罩佩戴检测系统实现

基于改进YOLOv3的实时口罩佩戴检测系统实现

1. 项目概述:基于YOLOv3的口罩佩戴检测系统 这个毕业设计项目实现了一个基于深度学习的口罩佩戴检测系统,采用改进的YOLOv3算法作为核心检测模型。系统能够实时检测图像或视频中的人脸,并准确判断是否佩戴口罩、未佩戴口罩或佩戴不规范三种状…

2026/7/4 16:28:46 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻