嵌入式学习———sqlite数据表

一、数据库基础

数据库:能够对大批量数据进行增删改查管理的软件。

数据库分类

  1. 关系型数据库
  • 数据存放在文件中
  • 代表产品:Oracle、MySQL、SQLite
  1. 非关系型数据库
  • 数据存放在内存中,内存数据库
  • 代表产品:Redis、Nosql

二、SQLite安装

Ubuntu 安装命令:

复制代码
sudo apt-get install sqlite3

三、SQLite交互式点命令

命令 功能
.tables 查看表名称
.databases 列出附加数据库的名称和文件
.headers on/off 开启/关闭列名称显示
.mode 设置数据显示的形式
.schema ?TABLE? 查看表创建的信息
.width 设置显示的宽度

四、SQL语句

1. SQLite 支持数据类型

  1. INTEGER:整型
  2. REAL:浮点型
  3. TEXT:文本字符串
  4. BLOB:二进制大对象

2. create table 创建表

语法:

复制代码
create table 表名 (列名称1 数据类型1, 列名称2 数据类型2, ...);

示例:

复制代码
create table student (id integer, name text, sex text, age integer, score integer);

3. insert into 插入数据

语法:

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

示例:

复制代码
insert into student values (1, "张三", "男", 18, 90);
insert into student values (3, "王二", NULL, NULL, NULL);
insert into student (id, name, sex) values (4, "赵五", "男");

4. select 查询语句

语法:

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

示例:

复制代码
select * from student;

5. where 条件子句

用于匹配过滤条件。

条件运算符

运算符 含义
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式

示例:

复制代码
select name,score from student where name like "赵%";
select name from student where score >= 90;
select name,score from student where name like "赵%" and score >95;

6. update 更新语句

语法:

复制代码
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

示例:

复制代码
update student set score=91 where name="赵五";

7. delete 删除语句

语法:

复制代码
delete from 表名称 where 列名称 = 值;

示例:

复制代码
delete from student where name = "王二";

8. order by 排序

  • asc:升序
  • desc:降序

示例:

复制代码
select name,score from student where sex="男" order by score desc;

9. drop table 删除表

语法:

复制代码
drop table 表名称;

示例:

复制代码
drop table student;

10. 多表联合查询 joins

  • cross join:交叉连接
  • inner join:内连接
  • outer join:外连接
cross join 交叉连接
复制代码
select 学生信息.姓名 as 姓名, 课程信息.名称 as 课程, 课程信息.学分 as 学分 from 
学生信息 cross join 课程信息;
inner join 内连接
复制代码
select 学生信息.姓名 as 姓名, 成绩信息.成绩 as 成绩 from 
学生信息 inner join 成绩信息 on 学生信息.ID = 成绩信息.学生ID;
select 学生信息.姓名 as 姓名, 课程信息.名称 as 课程, 成绩信息.成绩 as 成绩 from
学生信息 inner join 成绩信息 on 学生信息.ID = 成绩信息.学生ID
inner join 课程信息 on 成绩信息.课程ID = 课程信息.ID;
outer join 外连接
复制代码
select 学生信息.姓名 as 姓名,成绩信息.成绩 as 成绩 from 
学生信息 left outer join 成绩信息 on 学生信息.ID = 成绩信息.学生ID;

五、SQLite C语言函数接口

1. sqlite3_open

复制代码
int sqlite3_open(
    const char *filename,  /* Database filename (UTF‑8) */
    sqlite3 **ppDb         /* OUT: SQLite db handle */
);

功能 :打开数据库文件 参数

  • filename:数据库文件名
  • ppDb:存放数据库句柄空间的首地址 返回值 :成功返回SQLITE_OK

2. sqlite3_exec

复制代码
int sqlite3_exec(
    sqlite3*,                                  /* An open database */
    const char *sql,                           /* SQL to be evaluated */
    int (*callback)(void*,int,char**,char**),  /* Callback function */
    void *,                                    /* 1st argument to callback */
    char **errmsg                              /* Error msg written here */
);

功能 :执行一条SQL语句 参数

  • sqlite3*:数据库句柄
  • sql:要加载的SQL语句空间首地址
  • callback:select语句时使用的回调函数,处理查询到的数据
  • void*:传递给回调函数的参数
  • errmsg:错误信息存放空间首地址

返回值

  • 成功返回SQLITE_OK
  • 失败返回错误码

3. sqlite3_close

复制代码
int sqlite3_close(sqlite3*);

功能:关闭数据库连接

相关推荐
starrocks_stella3 小时前
EMR Serverless StarRocks Object Table:用 SQL 连接 OSS 文件与多模态 AI
数据库
这个DBA有点耶3 小时前
以为自增ID只是有空洞?聊聊双主架构下无声的“数据覆盖”
数据库·mysql·dba
星恒随风3 小时前
Linux网络编程:彻底理解IO多路复用select!从fd_set位图、读写就绪到手写TCP多客户端字典服务器
linux·服务器·网络
陈布衣4 小时前
MySQL(1)_MySQL 5.7.21 Linux 安装笔记
linux·笔记·mysql
钱栈up4 小时前
内网全断,怎么核实高炉和烧结系统的数据库对接信息
数据库
weavecodes4 小时前
双层缓存与权限实时生效:织码在线教育系统的 Caffeine + Redis 设计
数据库
bksczm5 小时前
InnoDB 页结构详解:页类型、页头页尾、数据行与页目录
数据库·mysql
bksczm5 小时前
InnoDB 行格式详解:DYNAMIC / COMPACT / COMPRESSED / REDUNDANT
java·开发语言·数据库
Oiiouui6 小时前
linux服务器部署Logto后端与对应前端的实现
linux·服务器·前端·后端
字节跳动开源6 小时前
OpenViking连接业务系统,LLM Wiki一键编译
数据库·开源