目录
[二、SQLite 概述](#二、SQLite 概述)
[三、SQLite 的安装与编译](#三、SQLite 的安装与编译)
[1.安装(Linux 系统)](#1.安装(Linux 系统))
[2.编译(C 语言程序)](#2.编译(C 语言程序))
[四、SQLite 操作指令与 SQL 语句](#四、SQLite 操作指令与 SQL 语句)
[1.SQLite 终端指令](#1.SQLite 终端指令)
[2.常用 SQL 语句](#2.常用 SQL 语句)
[2.1 表结构操作](#2.1 表结构操作)
[2.2 数据操作](#2.2 数据操作)
[五、C 语言操作 SQLite](#五、C 语言操作 SQLite)
数据库是用于集中存储、高效统计及规范化管理数据(包含新增、查询、修改、删除等操作)的系统,其核心价值在于解决数据分散存储、管理效率低、一致性差的问题,不仅适用于服务器级别的业务系统,也能部署在智能手环、智能家居等嵌入式设备中,实现本地数据的轻量化管理。
一、数据库的核心概念
数据库的层级逻辑结构可分为:库→表→记录→字段,各层级的含义如下:
- 库:一个独立的数据库容器,可包含多个表;
- 表:数据库中存储数据的基本单元,对应一类业务对象(如 "用户表""订单表");
- 记录:表中的一行数据,对应一个具体的业务实体(如某一个用户的信息);
- 字段:表中的一列数据,对应业务实体的一个属性(如用户的 "ID""姓名""年龄")。
按部署规模与场景,常用数据库可分为三类:
- 大型数据库:以 ORACLE 为代表,适用于高并发、大容量的企业级业务系统;
- 中型数据库:以 MySQL、MSSQL 为代表,是互联网应用、中小企业系统的常用选择;
- 小型数据库:以 SQLite、DBII 为代表,主打轻量、嵌入式场景。
此外,数据库领域的常见术语包括:
- DB:数据库(即数据存储的容器);
- DBMS:数据库管理系统(用于操作和管理数据库的软件工具);
- MIS:管理信息系统(基于数据库构建的业务管理平台);
- OA:办公自动化(依托数据库实现流程、文档等办公数据的管理)。
二、SQLite 概述
SQLite 是一款轻量级嵌入式数据库,凭借其极简、灵活的特性,成为嵌入式场景与小型应用的主流选择,核心特性及应用场景如下:
1.核心特性
- 开源免费,基于 C 语言开发,跨平台兼容性强;
- 体积极致轻量化:代码量仅约 1 万行,编译后整体体积小于 10M;
- 无依赖部署:属于绿色软件,无需安装,仅需单个动态库或静态库即可运行;
- 文件型存储:整个数据库对应一个物理文件,可直接复制、移动,便于数据迁移;
- 存储容量充足:单库最大支持 2T 数据存储,满足多数小型场景需求。
2.典型应用场景
- 移动端应用:Android、iOS App 的本地数据存储(如聊天记录、缓存信息);
- 嵌入式设备:智能家居、工业控制器中的配置数据、运行日志存储;
- 小型工具:本地笔记、轻量管理工具的离线数据管理。
三、SQLite 的安装与编译
1.安装(Linux 系统)
执行以下命令完成安装:
bash
sudo apt-get install sqlite3 # 安装SQLite工具
sudo apt-get install libsqlite3-dev # 安装开发依赖库
2.编译(C 语言程序)
编写 C 语言代码后,通过以下命令编译(以 sqli.c 为例):
bash
gcc test.c -lsqlite3 # 链接libsqlite3库,生成可执行文件
四、SQLite 操作指令与 SQL 语句
1.SQLite 终端指令
打开终端,执行sqlite3 数据库名.db(如sqlite3 user.db)即可进入 SQLite 交互环境,常用指令及作用如下:
- .database:查看当前连接的数据库对应的物理文件路径;
- .table:列出当前数据库中已创建的所有表;
- .schema 表名:查看指定表的创建语句(若不指定表名,则显示所有表的结构);
- .q/.quit/.exit:退出 SQLite 交互环境;
- .header on:开启查询结果的表头显示(便于查看字段对应关系)。
2.常用 SQL 语句
SQL 语句是操作数据库的标准语言,在 SQLite 中需以分号结尾,核心操作及示例如下:
2.1 表结构操作
- 创建表:定义表的字段及数据类型
sql
create table user(id int, name char, age int);
-- 创建user表,包含id(整数)、name(字符)、age(整数)字段
- **删除表:**删除指定表(需谨慎操作,数据将被清空)
sql
drop table user;
-- 删除user表
2.2 数据操作
- 插入数据:向表中添加一条记录
sql
insert into user values(3,"wang",11);
-- 向user表插入一条记录:id=3、name=wang、age=11
-
查询数据 :从表中筛选指定数据
- 基础查询:
sqlselect * from user where age>20 or age<50; -- 查询user表中年龄>20或<50的所有记录(*代表所有字段)- 模糊查询(使用LIKE操作符):
- 通过通配符匹配字符串,常用通配符包括:
- _:代表一个任意字符;
- %:代表任意多个任意字符;
- 通过通配符匹配字符串,常用通配符包括:
sqlselect * from user where name like 'zhang_'; -- 匹配name以zhang开头、后接1个任意字符的记录(如zhang1、zhangA) select * from user where name like 'zhang%'; -- 匹配name以zhang开头、后接任意字符的记录(如zhang、zhangsan、zhang123) -
**修改数据:**更新表中已有的记录
sql
update user set id = 1 where name = 'li';
-- 将user表中name为li的记录,id修改为1
- 删除数据:删除表中指定记录
sql
delete from user where id = 1 or id = 2;
-- 删除user表中id为1或2的记录
五、C 语言操作 SQLite
通过 C 语言操作 SQLite 的核心流程为:
- 打开数据库(sqlite3_open)
- 执行 SQL 语句(sqlite3_exec)
- 关闭数据库(sqlite3_close)
示例代码如下(向 user 表插入数据):
cpp
#include <stdio.h>
#include <sqlite3.h>
int main(int argc, char** argv)
{
sqlite3* db = NULL;
// 1. 打开数据库
int ret = sqlite3_open("123.db", &db);
if (ret != SQLITE_OK)
{
fprintf(stderr, "sqlite3_open: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
char* errmsg = NULL;
// 2. 执行SQL语句
char sql_cmd[512] = "insert into user values(6,'zhangsan',21);";
ret = sqlite3_exec(db, sql_cmd, NULL, NULL, &errmsg);
if (ret != SQLITE_OK)
{
fprintf(stderr, "sqlite3_exec: %s\n", errmsg);
sqlite3_free(errmsg);
sqlite3_close(db);
return 1;
}
// 3. 关闭数据库
sqlite3_close(db);
return 0;
}