当前位置: 首页 > news >正文

嵌入式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.xdnf.cn/news/1396621.html

相关文章:

  • 系统集成项目管理工程师第十二章:执行过程组全解析
  • 操作系统上的Docker安装指南:解锁容器化新世界
  • 进制转换问题
  • Tomcat 企业级运维实战系列(五):Tomcat 优化和安全加固
  • 简易TCP网络程序
  • 250830-Docker从Rootless到Rootful的Gitlab镜像迁移
  • 【Linux】网络安全管理:Netfilter、nftables 与 Firewalld | Redhat
  • Pmp项目管理方法介绍|权威详解与实战指南
  • 【超全汇总】MySQL服务启动命令手册(Linux+Windows+macOS)(上)
  • MYSQL速通(3/5)
  • Linux 830 shell:expect,ss -ant ,while IFS=read -r line,
  • 构建AI智能体:十八、解密LangChain中的RAG架构:让AI模型突破局限学会“翻书”答题
  • Python自定义函数形式参中的*args、**kwargs、*和/
  • STM32G474 IAP 双bank升级的坑
  • WebStorm无法识别@下的文件,但是可以正常使用
  • 【后端数据库】MySQL 索引生效/失效规则 + 核心原理
  • 腾讯云OpenCloudOS 9系统部署OpenTenBase数据库详细教程
  • 【云原生】Docker 搭建Kafka服务两种方式实战操作详解
  • php连接rabbitmq例子
  • 【序列晋升】21 Spring Cloud Gateway 云原生网关演进之路
  • 卷积神经网络项目:基于CNN实现心律失常(ECG)的小颗粒度分类系统
  • HAProxy 负载均衡全解析:从基础部署、负载策略到会话保持及性能优化指南
  • docker命令(二)
  • 现状摸底:如何快速诊断企业的“数字化健康度”?
  • PCIe 6.0 TLP深度解析:从结构设计到错误处理的全链路机制
  • 算法题(194):字典树
  • 从0到1玩转 Google SEO
  • Suno-API - OpenI
  • “FAQ + AI”智能助手全栈实现方案
  • Python从入门到高手9.4节-基于字典树的敏感词识别算法