返回主页 学习路径
SQLite
单文件 · 零配置 · 全球部署量最大
SQLite 由 D. Richard Hipp 于 2000 年创建,是全球部署量最大的数据库系统。SQLite 是一个自包含的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它只有一个文件(.db 或 .sqlite),不需要服务器进程,不需要安装,不需要管理员。SQLite 是 Android、iOS、Chrome、Firefox、几乎所有现代浏览器和操作系统的内置数据库。据估计,全球有超过 1 万亿个 SQLite 数据库在运行。
嵌入式之王 · 零配置
📅 诞生时间2000年 · D. Richard Hipp
🧩 类型嵌入式 · 关系型
📊 语言SQL(结构化查询语言)
⚡性能
7/10
📦生态
10/10
🧠易用
9/10
🚀扩展性
3/10

📑 本文目录

📌 第一部分:SQLite 概览与定位

1.1 定义与全称

SQLite 是一个自包含的、无服务器的、零配置的、事务性的 SQL 数据库引擎,由 D. Richard Hipp 于 2000 年创建。SQLite 是全球 部署量最大的数据库系统——据估计有超过 1 万亿个 SQLite 数据库正在运行。

1.2 核心定位

SQLite 的核心定位是 嵌入式关系数据库。它提供了:

1.3 主要应用领域

1.4 知名案例


📜 第二部分:SQLite 的历史与发展演进

2.1 诞生背景(2000年)

SQLite 由 D. Richard Hipp 于 2000 年创建,最初是作为美国海军项目的数据库引擎。Hipp 的目标是创建一个 轻量级、自包含、不需要服务器的数据库,让应用可以方便地存储结构化数据。

2.2 关键版本里程碑

2.3 设计哲学


⚙️ 第三部分:核心语法与特性

3.1 创建数据库

# 创建数据库(自动创建文件)
sqlite3 mydb.db

# 查看数据库
.database

# 查看表
.tables

# 查看表结构
.schema table_name

# 退出
.exit

3.2 基本 SQL 操作

-- 创建表
CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT UNIQUE,
    age INTEGER,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入数据
INSERT INTO users (name, email, age) VALUES
    ('Alice', 'alice@example.com', 25),
    ('Bob', 'bob@example.com', 30),
    ('Charlie', 'charlie@example.com', 35);

-- 查询
SELECT * FROM users;
SELECT * FROM users WHERE age > 25;
SELECT * FROM users ORDER BY age DESC;

-- 更新
UPDATE users SET age = 26 WHERE name = 'Alice';

-- 删除
DELETE FROM users WHERE name = 'Charlie';

-- 事务
BEGIN TRANSACTION;
UPDATE users SET age = age + 1;
COMMIT;

3.3 高级特性

-- 全文搜索(FTS5)
CREATE VIRTUAL TABLE articles USING fts5(title, content);

INSERT INTO articles (title, content) VALUES
    ('SQLite Tutorial', 'SQLite is a great database'),
    ('Python Programming', 'Python is easy to learn');

SELECT * FROM articles WHERE articles MATCH 'great';

-- 窗口函数
SELECT name, age,
    RANK() OVER (ORDER BY age DESC) AS age_rank
FROM users;

-- JSON 支持
CREATE TABLE data (id INTEGER, json_data TEXT);

INSERT INTO data VALUES (1, '{"name": "Alice", "age": 25}');

SELECT json_extract(json_data, '$.name') FROM data;

-- UPSERT(插入或更新)
INSERT INTO users (name, email, age) VALUES ('Alice', 'alice@example.com', 26)
ON CONFLICT(name) DO UPDATE SET age = excluded.age;

-- RETURNING(返回操作后的数据)
INSERT INTO users (name, email, age) VALUES ('David', 'david@example.com', 28)
RETURNING *;

3.4 索引优化

-- 创建索引
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_age ON users(age);

-- 复合索引
CREATE INDEX idx_users_name_age ON users(name, age);

-- 部分索引
CREATE INDEX idx_users_adult ON users(age) WHERE age >= 18;

-- 查看查询计划
EXPLAIN QUERY PLAN SELECT * FROM users WHERE email = 'alice@example.com';

3.5 扩展功能


⚖️ 第四部分:SQLite 与其他数据库对比

4.1 SQLite vs MySQL

4.2 SQLite vs PostgreSQL

4.3 SQLite vs Redis

4.4 SQLite vs SQL Server


🧠 第五部分:学习建议

1
基础入门

SQLite 安装、命令行使用、基本 SQL(CRUD)

2
核心进阶

索引优化、事务、WAL 模式、全文搜索

3
高级特性

JSON 支持、窗口函数、UPSERT、RECURSIVE CTE

4
集成实战

Python(sqlite3)、Android(SQLiteOpenHelper)、iOS(CoreData/SQLite)

推荐学习资源


🎯 总结升华

SQLite 是全球部署量最大的数据库。

它可能不是最强大的数据库,但它是最 无处不在 的数据库。从你的手机到浏览器,从汽车到电视,SQLite 默默支撑着数十亿设备的运行。

对于移动应用、桌面应用、嵌入式系统,SQLite 是无可替代的选择。如果你从事移动端开发、桌面开发或物联网开发,SQLite 是必须掌握的技能。

"SQLite 是数据库世界里的隐身英雄。" 📱

—— 技术社区评价

🔖 相关标签
#嵌入式数据库 #零配置 #单文件 #移动端 #Android #iOS #浏览器
📄 本文档为 SQLite 完整白皮书 · 最后更新于 2026年06月28日