【linux应用软件编程】数据库sqlite3

文章目录

  • 数据库
    • 一、常用数据库
    • 二、嵌入式数据库
    • 三、sqlite3提供的相关命令
    • 四、sqlite3提供的SQL语句
      • [4.1 创建数据库中的表](#4.1 创建数据库中的表)
      • [4.2 插入数据库数据](#4.2 插入数据库数据)
      • [4.3 查找数据库](#4.3 查找数据库)
      • [4.4 删除数据库数据](#4.4 删除数据库数据)
      • [4.5 修改数据库数据](#4.5 修改数据库数据)
      • [4.6 删除表](#4.6 删除表)
      • [4.7 主键值自动增长列](#4.7 主键值自动增长列)
      • [4.8 数据库的可视化工具](#4.8 数据库的可视化工具)
    • [五、sqlite3提供的c/c++ API接口](#五、sqlite3提供的c/c++ API接口)
      • [5.1 sqlite3_open](#5.1 sqlite3_open)
      • [5.2 sqlite3_errmsg](#5.2 sqlite3_errmsg)
      • [5.3 sqlite3_exec](#5.3 sqlite3_exec)
    • 六、使用数据库的注意事项

数据库

数据库:专业的数据管理方式

一、常用数据库

  • 关系型数据库:
    将复杂的数据结构简化为二维表格形式
    大型:Oracle、DB2
    中型:MySql、SQLServer
    小型:Sqlite
  • 非关系型数据库:
    以键值对存储,且结构不稳定
    //JSON
    Redis
    MongoDB

二、嵌入式数据库

sqlite3的特点

  1. 开源免费,c语言开发

  2. 代码量少,一万行左右,总大小10M以内

  3. 文件型数据库,可以移动

  4. 数据容量最大2T

Linux系统中安装sqline3终端指令:

sudo apt-get install sqlite3安装数据库

sudo apt-get install libsqlite3-dev安装数据库依赖的一些文件

sqlite3 name.db创建一个数据库文件(后缀为db),检查是否安装成功

sqlite3提供的相关命令

sqlite3提供的SQL语句

sqlite3提供的c/c++API接口

三、sqlite3提供的相关命令

查看手册.help

创建数据库:sqlite3 xxx.db(后缀必须为db)

查看数据库中的表:.tables 表名

打开/关闭表头:.headers on/off

设置表左对齐:.mode column

退出数据库:.quit

四、sqlite3提供的SQL语句

不区分大小写:

sqlite数据类型:

  • NULL : 空类型
  • INTEGER: 整数类型
  • REAL :浮点型
  • TEXT :字符串类型(文本)
  • BLOB:根据输入确定

4.1 创建数据库中的表

c 复制代码
create table 表名(列名1 数据类型1, 列名2 数据类型2, 列名3 数据类型3);
CREATE TABLE 表名(列名1 数据类型1, 列名2 数据类型2, 列名3 数据类型3);

create table class1(id INTEGER, name TEXT, score REAL);

4.2 插入数据库数据

c 复制代码
insert into 表名 values(值1, 值2, 值3);

insert into class1 values(1, "zhangsan", 88.5);
TEXT类型的数据,插入时需要用"", ''引起来。

4.3 查找数据库

查找数据库中的所有数据:

c 复制代码
select * from 表名;

查找指定列数据:

c 复制代码
select 列名1, 列名2 from 表名;

条件查找:

c 复制代码
select * from where 列 关系运算符 值;
select * from where id=1;

= > >= <= < !=

连接多个条件:

and or

模糊查找:

% :模糊匹配若干个字符

_ : 模糊匹配一个字符

c 复制代码
select * from class1 where name like "马%";
select * from class1 where name like "马__";
马冬梅

有序查找:

c 复制代码
select * from 表名 order by 列名 ASC;  //升序显示
select * from 表名 order by 列名 DESC; //降序显示

4.4 删除数据库数据

c 复制代码
delete from 表名 where 条件;

4.5 修改数据库数据

c 复制代码
update 表名 set 列=新值 where 条件;

4.6 删除表

c 复制代码
drop table 表名;

4.7 主键值自动增长列

c 复制代码
create table 表名(列名 INTEGER PRIMARY KEY AUTOINCREMENT, 列名 数据类型);

4.8 数据库的可视化工具

c 复制代码
sudo apt-get install sqlitebrowser
打开数据库:
sqlitebrowser xxx.db

NavicatSqlite3  -》Windows数据库可视化工具

五、sqlite3提供的c/c++ API接口

5.1 sqlite3_open

  • 函数原型:

    c 复制代码
    	int sqlite3_open(
    	  const char *filename,   /* Database filename (UTF-8) */
    	  sqlite3 **ppDb          /* OUT: SQLite db handle */
    	);
  • 功能: 打开一个数据库文件。

  • 参数: filename :数据库名称;

    ppDb :保存数据库句柄的指针 sqlite3 *

  • 返回值:
    成功:SQLITE_OK
    失败:错误码。

5.2 sqlite3_errmsg

  • 函数原型:

    c 复制代码
    const char *sqlite3_errmsg(sqlite3* pdb);
  • 功能: 获取当前数据库错误码对应的错误信息

  • 参数: pdb :数据库句柄

  • 返回值: 错误信息字符串。

5.3 sqlite3_exec

  • 函数原型:

    c 复制代码
    int sqlite3_exec(
      sqlite3* pdb,                                  /* An open database */
      const char *sql,                           /* SQL to be evaluated */
      int (*callback)(void*,int,char**,char**),  /* Callback function */
      void *arg,                                    /* 1st argument to callback */
      char **errmsg                              /* Error msg written here */
    );
  • 功能: 执行SQL语句

  • 参数: pdb:数据库句柄

    sql :要执行的SQL语句

    callback :回调函数,当select查询时,若查询到数据,会触发回调函数执行

    arg :传递给callback的参数(实参)

    errmsg :保存出错信息

  • 返回值: 成功:SQLITE_OK

    失败:错误码

  • 回调函数:

    • 函数原型:

      c 复制代码
      int (*callback)(void *arg,int n,char**value,char**name);
    • 功能: select:查询到数据时执行的回调函数

      参数:

      arg :由sqlite3_exec的第4个参数传递的参数值(形参)

      n :select查询到的数据的列数

      value:查找到的数据的每一列的值 char *value\[\];

      name : 查找到的数据列的表头 char *name\[\];

    • 返回值: 成功:0

      失败:!0

六、使用数据库的注意事项

  1. callback必须要有返回值,返回0,表示正常;
  2. 当select查询数据时,每找到一条数据,callback就会被触发一次;
  3. 数据库中的数据,通过select查询出时,统一按照字符串处理;
相关推荐
SelectDB1 小时前
Apache Doris + Lance:让多模态数据真正进入智能驾驶与具身智能的分析闭环
数据库
GeW1 小时前
RHCE的评分潜规则:这样做实验,每题多拿20%分数
linux
运维全栈笔记1 小时前
Windows 安装 WSL2 并运行 Ubuntu 24.04 指南
linux·网络·windows·ubuntu
互联网叫兽1 小时前
redis深入学习二
数据库·redis·学习
FlightYe2 小时前
音视频修炼之基础理论(五):AAC格式与解析
android·linux·c++·音视频·aac
疯狂打码的少年2 小时前
【数据库技术】复习日:关系代数 + SQL + 规范化(整理对比表)
jvm·数据库·笔记·sql
先吃饱再说2 小时前
从零开发到工程查询:SQLite 嵌入式数据库与高级 SQL 实战
数据库
米糕闯编程2 小时前
鱼香ros2(一)在ubuntu中安装ros2
linux·运维·ubuntu·机器学习
Huangjin007_2 小时前
【Linux 系统篇(十八)】进程(六) :环境变量
linux·运维·服务器