1. SQLite数据库基础与Linux环境集成
SQLite作为轻量级关系型数据库,在嵌入式系统和Linux环境中有着广泛应用。它不需要单独的服务器进程,直接将数据库存储在单一磁盘文件中,这种特性使其成为系统编程和本地数据存储的理想选择。
1.1 SQLite核心特性解析
SQLite具有ACID事务特性,支持大多数SQL92标准,同时保持极小的体积(完整配置约700KB)。与其他数据库系统相比,它的独特之处在于:
- 零配置:无需安装或管理,只需包含头文件和链接库
- 无服务器架构:应用程序直接读写磁盘上的数据库文件
- 单一磁盘文件:整个数据库存储在单个跨平台文件中
- 稳定可靠:被广泛应用于各种关键场景,如浏览器存储、移动应用等
在Linux环境下,SQLite特别适合以下场景:
- 系统工具和服务的配置存储
- 应用程序本地数据缓存
- 中小规模数据处理的临时存储
- 需要事务支持的嵌入式应用
1.2 Linux环境下的SQLite安装
大多数Linux发行版都预装了SQLite,如需手动安装:
bash复制# Debian/Ubuntu系
sudo apt-get install sqlite3 libsqlite3-dev
# RHEL/CentOS系
sudo yum install sqlite sqlite-devel
验证安装:
bash复制sqlite3 --version
开发时需要链接SQLite库,gcc编译时添加-lsqlite3参数:
bash复制gcc demo.c -o demo -lsqlite3
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. SQLite命令行操作详解
2.1 数据库基础操作
创建/连接数据库
bash复制sqlite3 test.db
此命令会创建或打开test.db文件。SQLite数据库文件通常以.db或.sqlite为扩展名。
常用元命令
sql复制.help -- 查看帮助
.tables -- 列出所有表
.schema [表名] -- 查看表结构
.headers on -- 显示列名
.mode column -- 列式显示
.quit -- 退出
数据库文件管理
sql复制-- 查看关联的数据库文件
.databases
-- 附加另一个数据库
ATTACH DATABASE 'another.db' AS another;
-- 备份数据库
.backup 'backup.db'
2.2 表操作实战
创建表
sql复制CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER CHECK(age > 0),
email TEXT UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
SQLite支持的数据类型包括:
NULL:空值INTEGER:带符号整数REAL:浮点数TEXT:文本字符串BLOB:二进制数据
表结构修改
sql复制-- 添加列
ALTER TABLE users ADD COLUMN address TEXT;
-- 重命名表
ALTER TABLE users RENAME TO customers;
-- 删除表
DROP TABLE IF EXISTS users;
注意:SQLite不支持直接删除列,需要创建新表并迁移数据
2.3 数据CRUD操作
插入数据
sql复制-- 完整插入
INSERT INTO users VALUES (NULL, '张三', 25, 'zhang@example.com', datetime('now'));
-- 指定列插入
INSERT INTO users (name, age) VALUES ('李四', 30);
-- 批量插入
INSERT INTO users (name, age)
VALUES ('王五', 28),
('赵六', 35),
('钱七', 40);
查询数据
sql复制-- 基础查询
SELECT * FROM users;
SELECT name, email FROM users;
-- 条件查询
SELECT * FROM users WHERE age > 25;
SELECT * FROM users WHERE name LIKE '张%';
-- 排序和限制
SELECT * FROM users ORDER BY age DESC LIMIT 5;
-- 分组统计
SELECT age, COUNT(*) FROM users GROUP BY age;
更新数据
sql复制UPDATE users SET age = 26 WHERE name = '张三';
UPDATE users SET email = 'new@example.com' WHERE email IS NULL;
删除数据
sql复制DELETE FROM users WHERE age > 40;
DELETE FROM users; -- 清空表
2.4 高级查询技巧
多表连接
sql复制-- 创建订单表
CREAT
