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

功能:关闭数据库连接

相关推荐
老王爱玩车1 小时前
汉诺塔 + 青蛙跳台阶问题
学习
笑梦无境1 小时前
nginx安装(5)
linux·运维·nginx
xx~t1 小时前
嵌入式——Linux软件编程——数据库
linux·c语言·数据库·oracle·sqlite
ACP广源盛139246256731 小时前
M6/M5 Pro Mac mini 端侧 AI 爆发@ACP#YLB3118 存储扩展芯片在本地 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
流浪0011 小时前
Linux系统篇26——通信(三)补:共享内存访问真的不进内核?
linux·运维·服务器
不会就选b1 小时前
Linux之socket编程(七)----序列化与反序列化(1)
java·linux·服务器
隔窗听雨眠1 小时前
关系型数据库长期可维护性完全指南:设计、索引、运维、安全的系统性实践
数据库
是隼人1 小时前
buuctf-pwn PWN4(双引号的转义缺陷)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
蒸蒸yyyyzwd1 小时前
CPP选手秋招准备学习笔记day25
笔记·学习