2026年SQLite完全入门指南:你每天都在用的数据库,99%的人却说不清它是什么

2026年SQLite完全入门指南:你每天都在用的数据库,99%的人却说不清它是什么

摘要: 地球上部署量最大的数据库引擎不是 MySQL,也不是 PostgreSQL,而是一个你可能从来没用过「安装」命令的轻量级数据库——SQLite。本文从零开始,用生活化比喻讲清 SQLite 是什么、为什么这么设计、怎么上手、以及什么时候该选它。读完你会明白:数据库不一定是庞然大物,它可以安静地藏在你的手机里、浏览器里,甚至一个文件里。


一、你可能每天都在用 SQLite,只是不知道而已

打开你的手机相册——每一张照片的元数据、每一个相册的分类信息,都存在 SQLite 里。

打开你的微信——聊天记录、好友列表、收藏夹,底层全是 SQLite 在干活。

打开 Chrome 浏览器——书签、历史记录、自动填充密码,也是 SQLite。

SQLite 是全球部署量最大的数据库引擎。 根据 SQLite 官方估计,全球活跃的 SQLite 数据库数量超过 1 万亿(1 trillion)个。地球上几乎每一部智能手机里都有几十甚至上百个 SQLite 数据库文件在默默运行。

但讽刺的是,绝大多数人——包括很多写了多年代码的程序员——从来没真正了解过它。

这篇文章就是为你写的。读完它,你会搞清楚三件事:

  1. SQLite 到底是什么,和 MySQL 有什么区别?
  2. 怎么在 5 分钟内上手 SQLite?
  3. 什么场景用它最合适,什么场景千万别碰它?

二、SQLite 是什么?一个文件就是一个数据库

一个震撼新手的概念

想象一下:MySQL 或 PostgreSQL 就像一家餐厅——有一个专门的厨房(服务器),服务员(数据库进程)在门口等着,你(客户端)走进来点菜(发 SQL 查询),服务员去厨房做好,再端给你。厨房和服务员必须一直在线。

SQLite 不是这种模式。 SQLite 就像一个随身携带的瑞士军刀——你不需要厨房,不需要服务员,打开就能切东西。数据库就是一个文件,你用程序直接读写这个文件,没有中间人。

来对比一下:

特性SQLiteMySQL / PostgreSQL
架构模式嵌入式(库文件)客户端-服务器(独立进程)
数据库形态单个 .db 文件一个数据库服务实例
部署方式零配置,无需安装需要安装配置服务端
启动耗时即时(毫秒级)需要启动服务(秒级)
并发写入单写者(串行写入)多写者并发
网络访问❌ 不支持✅ 支持
数据量级MB ~ GB 级别(理论上限 281TB)TB 级别
是否需要运维不需要需要 DBA 管理

一句话理解:SQLite 就是把你熟悉的 Word 文档和 Excel 表格的功能,用一个二进制文件高效地实现了。 你打开一个 .db 文件,里面可以有几十张「表」,每张表里可以存几百万行数据——所有这些,都在一个文件里。


三、SQLite 为什么这么设计?嵌入式、零配置、无服务器的哲学

SQLite 的作者 D. Richard Hipp 在 2000 年开发它的时候,动机很简单:他当时在用 HP 的 Informix 数据库做项目,但 Informix 每次宕机都要等管理员重启。他就想:数据库能不能不要管理员?能不能像一个函数库一样,程序调用它就能直接读写数据?

于是 SQLite 诞生了。它的核心设计哲学可以用三个词概括:

🔧 嵌入式(Embedded)

SQLite 不是独立程序,它是一个 C 语言写的库文件(不到 1MB)。你的程序把这个库编译进去,就能直接操作数据库。这就像把计算器功能做成了一个函数 add(a, b),而不是开一个计算器 App——轻、快、无感。

⚡ 零配置(Zero-Configuration)

不用 apt install mysql-server,不用配 my.cnf,不用创用户密码。你创建一个 .db 文件的那一秒,数据库就已经就绪了。 这就是为什么它能在嵌入式设备、手机 App、浏览器里遍地开花——这些东西没法安装一个数据库服务。

🪶 无服务器(Serverless)

这里「Serverless」不是云函数那个时髦概念,而是字面意思:没有服务器进程。 你的程序和数据库文件直接对话。这带来了最大的好处(简单)和最大的限制(不能并发写),后面会讲。

可引用金句 ①:SQLite 的设计不是「能跑就行」,而是「把复杂度藏在库文件里,让使用者感受不到数据库的存在」。


四、核心概念:用生活化比喻理解数据库

如果你是数据库小白,先别被术语吓到。我们用 3 个生活化比喻 搞定所有核心概念:

📦 比喻 1:数据库文件 = 一个 Excel 文件

一个 SQLite 数据库文件(.db),就是你电脑上一个 Excel 文件(.xlsx)。

  • Excel 文件里可以有多个 Sheet(工作表) → 对应 SQLite 里的 表(Table)
  • 每个 Sheet 有 列头(姓名、年龄、工资)→ 对应 字段/列(Column)
  • 每一行填的数据 → 对应 记录/行(Row)
  • 筛选、排序、汇总 → 对应 SQL 查询

唯一的区别:Excel 适合几百行数据,SQLite 轻松处理 几百万行,而且查询速度秒杀 Excel。

🗄️ 比喻 2:SQL 语句 = 给管家下指令

SQL 就是你和数据库「说话」的语言。你可以把数据库想象成一个超级管家:

-- 管家!把我备忘录里名字叫「张三」的所有记录找出来
SELECT * FROM 备忘录 WHERE 名字 = '张三';

-- 管家!帮我记一条新东西
INSERT INTO 备忘录 (名字, 事项) VALUES ('李四', '明早9点开会');

-- 管家!把那条记录改一下
UPDATE 备忘录 SET 事项 = '明早10点开会' WHERE 名字 = '李四';

-- 管家!删了它
DELETE FROM 备忘录 WHERE 名字 = '李四';

增删改查(CRUD)就是你作为「老板」对数据库这个「管家」的四条基本命令。 SQL 翻译成人话就是这个意思。

📱 比喻 3:SQLite vs MySQL = 记事本 vs 银行柜台

  • SQLite = 你口袋里的记事本: 随时掏出来写、改、查,只有你一个人能同时写(别人想写?排队!)。不需要电力、网络、管理员。丢了?恢复难。
  • MySQL = 银行柜台: 有一个专门的办事大厅(服务器),多个柜员(连接线程)可以同时为不同客户服务。有监控(日志)、有复核(事务)、有灾备方案。但需要装修、需要雇人(运维)。

这也就是选择 SQLite 还是 MySQL 的底层逻辑:你的需求是「一个记事本」还是「一个银行大厅」?


五、实战动手:5 分钟上手 SQLite

不需要「安装」

大多数操作系统自带 sqlite3 命令。打开终端试试:

# 检查是否已安装(macOS/Linux 通常已自带)
sqlite3 --version
# 输出类似:3.43.0 2023-08-24 ...

# Windows 用户:去 https://sqlite.org/download.html 下载 sqlite-tools,
# 解压后把 sqlite3.exe 放到 PATH 里即可。

第一步:创建你的第一个数据库

# 创建一个数据库文件 my_first.db,并进入交互模式
sqlite3 my_first.db

就这一行命令!你刚刚创建了一个全新的数据库文件。你会看到一个 sqlite> 提示符,现在已经「进入」数据库了。

第二步:建一张表

-- 创建一个「学生信息」表
-- 表里有学号、姓名、年龄、分数四个字段
CREATE TABLE students (
    id      INTEGER PRIMARY KEY,  -- 学号,主键(唯一标识)
    name    TEXT    NOT NULL,      -- 姓名,不能为空
    age     INTEGER,               -- 年龄
    score   REAL                   -- 分数(浮点数)
);

第三步:插入数据(增)

-- 插入几条学生记录
INSERT INTO students (id, name, age, score) VALUES (1, '张三', 20, 88.5);
INSERT INTO students (id, name, age, score) VALUES (2, '李四', 22, 92.0);
INSERT INTO students (id, name, age, score) VALUES (3, '王五', 21, 76.5);
INSERT INTO students (id, name, age, score) VALUES (4, '赵六', 23, 95.0);
INSERT INTO students (id, name, age, score) VALUES (5, '孙七', 19, 81.0);

第四步:查询数据(查)

-- 查询所有学生
SELECT * FROM students;

-- 查询分数大于 85 的学生
SELECT name, score FROM students WHERE score > 85;

-- 按分数从高到低排序
SELECT name, score FROM students ORDER BY score DESC;

-- 统计有多少学生,平均分是多少
SELECT COUNT(*) AS 学生总数, AVG(score) AS 平均分 FROM students;

第五步:修改和删除(改、删)

-- 把张三的分数改为 90
UPDATE students SET score = 90.0 WHERE name = '张三';

-- 删除分数低于 80 的学生
DELETE FROM students WHERE score < 80;

-- 确认结果
SELECT * FROM students;

退出

-- 退出 sqlite3
.quit

就这么简单!你现在已经完成了数据库的 CRUD(增删改查)全流程。没有安装服务、没有配置端口、没有创建用户密码。

可引用金句 ②:SQLite 让学习数据库的门槛从「先花半天配置环境」降到了「打开终端敲 3 个字母」。


六、SQLite 的「超能力」

🗂️ 文件即数据库

整个数据库就是一个跨平台的二进制文件。你可以把这个 .db 文件复制到 U 盘,插到 Windows/Mac/Linux 上都能用。字节序、对齐方式全都自己处理好了。这意味着你可以把数据库当作文件交换格式来用——比 JSON 更结构化,比 CSV 更强大。

🌍 跨平台,无处不在

SQLite 几乎运行在你能想到的任何平台上:iOS(Core Data 底层)、Android(内置 SQLiteOpenHelper)、Windows、macOS、Linux、嵌入式 Linux、VxWorks、QNX……甚至连 国际空间站上也在用 SQLite。

🏆 万亿级可靠性

SQLite 的测试代码量是产品代码量的 600 倍。它的测试套件包含超过 5 万个独立测试用例、1100 万行测试代码。官方有一个著名的声明:「SQLite 不会在你面前崩溃。它可能在硬件故障时丢失数据,但不会因为软件 bug 而丢失数据。」

🧩 全功能 SQL

别以为「轻量」意味着功能阉割。SQLite 支持:

  • 完整的 SQL 标准(包括 CTE、窗口函数、JSON 函数)
  • 事务(ACID)
  • 触发器(Trigger)
  • 全文搜索(FTS5)
  • 地理空间扩展(R*Tree)

你学到的高级 SQL 技巧,在 SQLite 里几乎都能用。

🧠 内存数据库模式

-- 创建一个只在内存中运行的数据库,速度极快,程序关闭后消失
sqlite3 :memory:

适合做单元测试、临时计算、数据缓存。零磁盘 IO,快到飞起。


七、SQLite 的适用场景

✅ 这些场景 SQLite 是「天选之子」

场景代表产品/案例为什么 SQLite 合适
手机 App微信、抖音、几乎所有 iOS/Android App嵌入式运行,无需后台服务,省电省资源
桌面软件Adobe Photoshop Lightroom、AutoCAD单用户本地数据,启动即用,无需配置
浏览器Chrome、Firefox、Safari存储书签、历史、Cookie,每个用户一个文件
嵌入式设备智能家居、POS 机、无人机资源受限设备上唯一可行的 SQL 方案
小型网站个人博客、内部工具、低流量 API日 PV < 10 万且写入不频繁时完全够用
数据交换格式.db 文件替代 JSON/CSV自带 schema + 索引 + 查询能力
本地缓存任何需要离线的 App网络断开时数据依然可查可改
学习 & 原型开发个人学习 SQL、快速原型零配置,5 秒起步

知名产品中的 SQLite

  • 微信/WeChat:聊天记录存储在 SQLite 中
  • WhatsApp:历史消息存储(早期版本)
  • Skype:联系人、聊天历史
  • Dropbox:本地文件元数据索引
  • Airbus A350:机上娱乐系统数据库
  • Tesla:部分车载数据存储
  • Python 标准库import sqlite3 直接可用

八、SQLite 不适合什么场景?(坦诚说明)

不夸大,SQLite 确实有自己的硬伤:

❌ 高并发写入

SQLite 的写入是串行的——同一时间只能有一个人写。如果你的应用有 100 个用户同时疯狂提交表单,SQLite 会变成严重瓶颈。这时候该上 MySQL/PostgreSQL。

❌ 超大规模数据

虽然理论上限是 281TB,但实际场景中,当单个数据库超过 几百 GB 时,SQLite 的性能和维护性都会明显下降。TB 级别数据请找专门的数据库方案。

❌ 网络共享 / 多机访问

SQLite 数据库文件不支持通过网络共享文件夹访问(会损坏数据)。你需要的是支持网络连接的数据库:MySQL、PostgreSQL、或者如果你喜欢轻量,试试 rqlite(基于 Raft 的分布式 SQLite)。

❌ 需要精细权限管理

SQLite 没有用户系统、没有角色、没有行级安全策略。数据库文件对操作系统来说就是一个普通文件——有文件读权限的人就能看到全部数据。

一个简单的判断公式:

如果你的应用是「一个用户 + 一个设备 + 本地数据」→ 选 SQLite
如果是「多用户 + 服务器 + 网络访问」→ 选 MySQL/PostgreSQL


九、常见问题 & 避坑指南

🪤 坑 1:SQLite 的类型是「亲和性」不是「强类型」

创建表时你写了 INTEGERTEXT,但 SQLite 可以往整数列里插字符串,不会报错!这是设计选择,不是 bug。实际开发中建议加上约束:

-- 严格模式(推荐!)
CREATE TABLE users (
    id   INTEGER PRIMARY KEY,
    name TEXT    NOT NULL CHECK(typeof(name) = 'text')
);

🪤 坑 2:并发写锁

SQLite 是整个数据库级别的写锁(不是表级或行级),写操作期间整个数据库被锁定。应对策略:

  • 用 WAL 模式(Write-Ahead Logging)提升并发读性能
  • 把写操作集中、快速完成
  • 高并发写入场景直接换数据库
-- 开启 WAL 模式(推荐)
PRAGMA journal_mode=WAL;

🪤 坑 3:不要用网络文件系统

SQLite 依赖文件锁来保证并发安全。NFS、SMB 等网络文件系统的锁实现不可靠,会导致数据损坏。数据库文件必须在本地磁盘上。

🪤 坑 4:不同版本兼容性

从 SQLite 3 开始,文件格式保持向后兼容。理论上 2026 年的 SQLite 能读取 2004 年创建的数据库文件。这个承诺从 2004 年守到了现在,非常靠谱。


十、总结 & 下一步学习路线

📝 一句话总结

SQLite 是世界上部署量最大的嵌入式数据库——它把一整个关系型数据库塞进一个不到 1MB 的库文件里,让每个程序都能「自带数据库」地运行,无需安装、无需配置、无需运维。

🎯 SQLite 应用场景速查表

你的情况结论
做手机 App 本地存储✅ 几乎是唯一选择
做桌面软件数据存储✅ 最佳选择
个人博客/小网站(日 PV < 10 万)✅ 完全够用
公司级 Web 应用(多用户并发)❌ 选 MySQL/PostgreSQL
数据分析(TB 级)❌ 选 ClickHouse/Snowflake
学 SQL 入门✅ 最佳工具
原型/MVP 快速验证✅ 完美

🛤️ 下一步学习路线

  1. 今天:按本文第五节的代码敲一遍,体验 CRUD
  2. 本周:学习 SQL 核心语法——JOIN、GROUP BY、子查询
  3. 两周内:用 Python + SQLite 写一个小项目(比如记账本、书单管理)
  4. 一个月后:了解 WAL 模式、事务隔离级别、性能优化
  5. 之后:当你发现 SQLite 不够用了,自然就准备好学 MySQL/PostgreSQL 了

SQLite 不是 MySQL 的「简化版」,而是另一种设计哲学——简单到极致,反而无处不在。


💬 你是从什么时候开始接触 SQLite 的?是 Android 开发还是浏览器 debug?留言聊聊你的 SQLite 故事。如果你觉得这篇文章对你有帮助,收藏+点赞是对我最大的支持!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值