嵌入式Linux学习 - 数据库开发

目录

一. 在终端的使用

1. 下载

2. 操作

3. 相关函数

1.增

2. 删

3. 改

4. 查

5. 补充函数

二. 在软件的使用

1. 下载

2. 操作

三. 在编程的使用

1. 下载

2. 相关函数

1. 打开

2. 读写执行sql语句

3. 关闭


一. 在终端的使用

1. 下载

sudo apt-get install sqlite3

关系型数据库 - 管理数据 - 管理表

2. 操作

sqlite3进入软件

一般命令:.help.databases.quit.exit

操作:sql 语句(structure query language)

3. 相关函数

菜鸟网站学习www.runoob.com

1.增

1. create table
  • 原型:

CREATE TABLE 表名(

        column1 datatype         PRIMARY KEY(one or more columns),

        column2 datatype         constraint,

        ...

  • 功能:

         创建了一张表

  • 使用:

        create table stu(name, sex, age, score);

sqlite3命令检查:

        .tables ? TABLE?                命令查看表的名字

        .schema ? PATTERN?        命令查看表的字段

2. insert into
  • 原型:INSERT INTO table_name VALUES (value1,value2,value3,...);
  • 功能:

        插入列的值

  • 使用:

        insert into stu values("Tom", "man", 18, 90);              //  插入列的所有值

        insert into stu (name, sex) values("jack", "male");        //  插入列的部分值

插入列的所有值:

插入列的部分值

2. 删

1. delete

功能:删除符合条件的一行

使用:delete from 表名 where 条件

2. drop

功能:删除整个表

使用:drop table 表名

3. 改

1. alter add

功能:添加字段(一列)

使用:alter table 表名 add 列名;

                                                                                                                              语句注意添加分号

2. update
  • 功能:

        修改字段

  • 使用:

        undate 表名 set 列1 = 值1 [, 列2 = 值2, ...] [匹配条件];

                    修改多个值时用,隔开

  • 条件语句:

        where 字句

        where 列名 操作符 列值

        where age > 10

多列:

3. sqlite3暂不支持删除字段

4. 查

1. select
  • 原型:select column1, column2,...
  • 功能:

        查询表中内容

  • 使用:

        select 列名1, 列名2, ... from 表名 [匹配条件];

        select * from 表名;                                                查看表中所有列信息

sqlite3    命令:

        .headers on | off                            打开 | 关闭表头

        .mode                                             设置显示的模式

                                                                模式:  csv以,分割                column以行列分割

         模式:

2. 查询匹配条件
1. 部分字段

2. in语句 

                 select * from 表名 where 列名 in(值1,值2, ...);
                 select 列名1[,列名2.,..] from 表名 where 列名 in(列值1,列值 2, ...);

3. and语句

                select * from 表名 where 列1=值1 [ and 列2=值2 and ...];
                select 列名1 [,列名2 ,...] from 表名 where 列1=值1 [ and 列2=值2 and...];

4. or语句

        select * from 表名 where 列1=值1 [ o r列2=值2 or ...];
        select 列名1 [ 列名2 ...] from 表名 列1=值1 [ or 列2=值2 or ...];

5. beteeen ... and ... 范围

        select * from 表名 where 列名 between A and B;
        select 列名1 [ 列名2 ...] from 表名 where 列名 between A and B;

6. like语句

7. order by  +  limit

        排序:年龄大于等于16的行以年龄排序,显示3个

5. 补充函数

1. 插入时间列

2. 自动增长列
  • 原型:create table 表名 (id INTEGER PRIMARY KEY ASC, name char, age int);
  • 参数:

        INTEGER                          int写成 INTEGER 才能实现自动增长

        PRIMARY KEY                 主键,编号作为主键

        ASC                                  自动增长的顺序,ASC        升序

                                                                              DESC      降序

二. 在软件的使用

1. 下载

        通过 sqlitebrowser 软件使用

        sudo apt-get install sqlitebrowser

2. 操作

        sqlitebrowser 进入软件

        可以执行sqlite3相关操作和指令

三. 在编程的使用

1. 下载

sqlit3是第三方提供的功能

sudo api-get install libaqlite3-dev下载相关库文件

2. 相关函数

1. 打开

  • 原型:intsqlite3_open(char_name,sqlite3**db);
  • 功能:

        打开数据库。

  • 参数:

        db_name        数据库文件名

                               若文件名包含ASCII码表范围的之外的字符,则其必需是(UTF-8)编码。
        db                   数据库标识,此结构体为数据库操作句柄。
                               通过此句柄可对数据库文件进行相应操作。

  • 返回值:

        成功返回SQLITE_OK,失败返回非SQLITE_OK。

注:添加头文件#include <sqlite3.h>

       编译时需要连接库 -lsqlite3

2. 读写执行sql语句

1. 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

回调函数指针: exechandler_t callback;

                          实现select

  • 参数类型: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        指针数组的地址,其存放一行信息中各个列值对应列名的首地址。

  • 返回值:

        若为非零值,通知 sqlite3_exec 终止回调

2. 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. 对比

1. 都可以执行sql语句

2. 区别

    select:exec                创建回调函数,每查到一条记录就回调一次

                 get_table         不需要回调函数,在堆区保存查询的结果,数据量有限适合小规模查询

                                         需要释放堆区空间

3. 关闭

  • 原型:int sqlite3_close(sqlite3 *db);
  • 功能:

        关闭数据库、释放打开数据库时申请的资源。

  • 参数:

        db        数据库的标识。

  • 返回值:

        成功返回SQLITE_OK,失败返回非SQLITE_OK

通过终端操作sqlite3,将单词表放入到表中:(sqlite3_exec)

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

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

相关文章

产品运营必备的职场通用能力有哪些?如何一步步提升?

在流量红利消退的存量竞争时代&#xff0c;产品运营岗位正经历价值重构。单纯的活动策划与用户维护已无法满足发展需求&#xff0c;数据驱动的精细化运营成为行业分水岭。面对这场变革&#xff0c;复合能力建设与前瞻工具掌握是运营人突破天花板的密钥。推荐考取CDA数据分析师&…

ESPTimer vs GPTimer:ESP32 定时器系统深度解析

第十五章和第十六章分别学习了​​ESPTimer​​ 和 ​​GPTimer​​ &#xff0c;那这两种定时器有什么区别&#xff0c;如何使用呢&#xff0c;下面探讨下。1. 两种定时器对比介绍1.1 两种定时器设计在 ESP32 开发中&#xff0c;​​ESPTimer​​ 和 ​​GPTimer​​ 是两种完…

【70页PPT】WMS助力企业数字化转型(附下载方式)

篇幅所限&#xff0c;本文只提供部分资料内容&#xff0c;完整资料请看下面链接 https://download.csdn.net/download/2501_92808811/91806268 资料解读&#xff1a;【70页PPT】WMS助力企业数字化转型 详细资料请看本解读文章的最后内容。仓储管理在企业运营中占据关键地位&a…

[光学原理与应用-337]:ZEMAX - 自带的用于学习的样例设计

ZEMAX&#xff08;OpticStudio&#xff09;内置了大量样例设计文件&#xff0c;这些文件覆盖了从基础光学原理到复杂系统设计的全场景&#xff0c;是学习光学设计、掌握软件操作、理解像差理论的绝佳资源。以下是ZEMAX自带样例设计的详细分类、使用方法及学习价值分析&#xff…

下一波红利:用 #AI编程 闯入小游戏赛道,#看广告变现 模式正在崛起!

文章标题(可选,均包含核心关键词) 【主推标题】 #AI编程制作小游戏 的终极 #变现 指南:如何通过 #看广告变现 轻松赚钱 【疑问式标题】 #AI制作小游戏 真的能赚钱吗?揭秘 #AI编程赚钱 的四大核心路径与广告变现策略 【趋势型标题】 下一波红利:用 #AI编程 闯入小游戏赛道…

【git】add后不想commit怎么实现pull

本地有改动已 git add 到暂存区(stage)&#xff0c;但是还没 commit&#xff0c;同时远端有 28 个新提交需要拉取。 直接 git pull 会冲突或被拒绝&#xff0c;因为你本地有 staged 修改。 处理步骤有几种方案&#xff0c;我给你推荐最稳妥的几种&#xff1a;✅ 方法 1&#xf…

Unable to establish SSL connection. curl静态编译

博主有个老RHEL系统&#xff0c;内核2.6.18&#xff1b;ssl不管用了&#xff0c;最简单的wget也不行&#xff0c;下面编个静态编译的新版 curl 用用&#xff08;不影响yum源&#xff0c;不然的话系统自带的旧版 OpenSSL 受影响得得不偿失&#xff09;&#xff0c;来最优化解决下…

Redis-08 SpringBoot集成Redis常见问题

SpringBoot集成Redis的教程网上很多&#xff0c;总体来说就是三个步骤&#xff1a;添加依赖、修改配置文件、自定义Redis配置类&#xff08;自定义序列化器&#xff09;&#xff0c;具体步骤可自行搜索&#xff0c;本文主要解惑集成中的常见疑问。 1&#xff0c;选择什么依赖&…

数据结构:选择排序 (Selection Sort)

目录 从学生排队开始 算法的初始状态和核心操作 代码的逐步完善 第一阶段&#xff1a;定义函数框架和外层循环 第二阶段&#xff1a;实现“寻找最小元素”的逻辑&#xff08;内层循环&#xff09; 第三阶段&#xff1a;完成“交换”操作 复杂度与特性分析 时间复杂度 (…

Django Admin 管理工具

一、简介Django Admin 是 Django 框架最受欢迎和强大的特性之一。它是一个自动生成的管理后台&#xff0c;允许开发者无需或仅需编写少量代码&#xff0c;就能对网站的数据模型&#xff08;数据库中的表&#xff09;进行直观的增、删、改、查&#xff08;CRUD&#xff09;操作。…

园区智慧水电管理系统:让能源管理从“成本黑洞”变“利润引擎”

园区智慧水电管理系统&#xff0c;是一套专为产业园区、科技园、企业总部等大型空间设计的集智能计量、远程管控、自动计费、能耗分析于一体的数字化能源解决方案。它用技术手段解决水电管理中的“抄表难、收费乱、浪费多、数据缺”四大顽疾&#xff0c;真正实现降本、提效、控…

DeepSeek应用技巧-通过MCP打造数据分析助手

本文章将通过MCP服务来打造一个数据分析助手&#xff0c;可以直接读取本地的excel或csv的文件&#xff0c;然后生成可视化的报告并保存在本地&#xff0c;十分有应用和实践的价值&#xff0c;话不多说&#xff0c;我们开始手把手搭建。一、知识应用&#xff08;1&#xff09;Fu…

React Hooks 完全指南:从基础到高级的实战技巧

概述 React Hooks 是 React 16.8 引入的新特性&#xff0c;允许在函数组件中使用状态和其他 React 特性。根据数据的使用场景和更新机制&#xff0c;可以将 Hooks 分为三大类&#xff1a; 1. 保存只读数据 useMemo 用途&#xff1a; 缓存计算结果&#xff0c;避免重复计算 …

PCIe 6.0 vs 5.0:带宽翻倍背后的技术革命

PCIe 6.0 vs 5.0&#xff1a;带宽翻倍背后的技术革命在数据中心、AI计算和高速存储需求爆炸式增长的今天&#xff0c;传统接口带宽已成为系统性能提升的瓶颈。PCIe 6.0的推出正是为了解决这一挑战&#xff0c;它通过革命性的技术创新&#xff0c;在保持向后兼容的同时实现了带宽…

突破传统企业组网瓶颈:某科技公司智能组网服务项目深度解析

在现代企业的数字化转型过程中&#xff0c;稳定、高效、安全的网络基础设施已成为业务发展的关键。然而&#xff0c;传统组网方案往往面临诸多挑战&#xff0c;如网络性能不足、组网复杂度高、扩展性不佳、以及安全防护薄弱等问题。为了解决这些痛点&#xff0c;某科技公司通过…

ubuntu单机实现10000个连接同时在线测试

连接前 成功连接后 前端测试连接脚本: c_5k.sh !/bin/bash ulimit -n 100000 # client_simulator.sh SERVER_IP="192.168.0.106" SERVER_PORT=8080 MAX_CLIENTS=5000 BATCH_SIZE=100echo "Starting $MAX_CLIENTS clients to $SERVER_IP:$SERVER_PORT"…

防护墙技术(一):NAT

###源NAT基本原理 NAT&#xff08;Network Address Translation&#xff09;网络地址转换技术 源NAT技术对IP报文的源地址进行转换&#xff0c;将私有IP地址转换为公网IP地址&#xff0c;使大量私网用户可以利用少量公网IP地址访问internet&#xff0c;大大减少对公网IP的消耗 …

动态规划2(c++)

酒鬼#include <bits/stdc.h> using namespace std; int main() {int n;cin>>n;int a[10010];for(int i 1;i<n;i){cin>>a[i];}int dp[1010][5] {0};dp[0][0] 0;dp[1][0] 0;dp[1][1] a[1];dp[1][2] 0;dp[2][0] a[1];dp[2][1] a[2];dp[2][2] a[1]a[…

「LangChain 学习笔记」LangChain大模型应用开发:代理 (Agent)

「LangChain大模型应用开发」 系列文章目录&#xff1a; LangChain大模型应用开发&#xff1a;模型&#xff0c;提示和输出解释器 LangChain大模型应用开发&#xff1a;储存(Memory) LangChain大模型应用开发&#xff1a;模型链&#xff08;Chains&#xff09; LangChain大模…

python pyqt5开发DoIP上位机【介绍】

目录文章合集一、核心功能概述二、主要模块解析1. 导入的库2. 辅助函数3. DOIP协议处理&#xff08;DOIPProtocol类&#xff09;4. 网络工具&#xff08;NetworkUtils类&#xff09;5. 通信线程&#xff08;DOIPCommunicationThread类&#xff09;6. UDS命令输入组件&#xff0…