嵌入式学习———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*);

功能:关闭数据库连接

相关推荐
March.s12 分钟前
Redis 核心知识与高可用架构实践
数据库·redis·架构
大哥您好9 小时前
QEMU 11.1.2 多架构编译指南(x86_64 / aarch64 / riscv64)
linux·服务器
数据库小学妹9 小时前
国产数据库怎么选?兼容、迁移、核心案例与融合架构四道关
数据库·架构·国产数据库·数据库迁移·融合数据库
我是伪码农9 小时前
百蝶杯学习
学习
keyipatience9 小时前
JavaScript学习(1)书写位置,变量、数据类型、运算符
开发语言·前端·javascript·css·学习
IvorySQL10 小时前
PostgreSQL 日报| PgBouncer 修复三个 CVE 漏洞(10 月 15 日)
数据库·postgresql·区块链
饺子大魔王的男人10 小时前
后台表格、查询、流程总在重复写?我用ToolJet把PostgreSQL直接做成可远程访问的业务系统
数据库·postgresql
道满科技10 小时前
Function Calling 参数总出错?只修参数就行
linux·windows·python
Gauss松鼠会10 小时前
高斯数据库(openGauss)的物理存储结构
运维·服务器·数据库·sql·opengauss·经验总结