SQLite
和 MySQL
都是 关系型数据库(Relational Database),都支持 SQL 查询语言,但它们的定位、使用场景和功能有很大不同。
✅ 一、什么是 SQLite?
SQLite 是一个轻量级的嵌入式数据库引擎,它不需要独立的服务器进程或配置文件,所有数据都存储在一个本地文件中。
📌 特点:
特性 | 描述 |
---|
轻量 | 占用内存小,适合移动设备、小型应用 |
文件型数据库 | 所有数据保存在单一文件中 |
无需安装 | 不需要像 MySQL 那样启动服务 |
支持 SQL | 支持大部分 SQL92 标准 |
只读模式 | 可以挂载为只读数据库 |
线程安全 | 在 Python、Java 等语言中可用作缓存或本地存储 |
🧩 示例使用场景:
- 移动 App 数据库
- 桌面软件的本地存储(如浏览器历史记录)
- 开发原型时快速搭建数据库
- 测试环境模拟数据库行为
✅ 二、什么是 MySQL?
MySQL 是一个功能齐全的客户端-服务器关系型数据库系统,广泛用于 Web 应用、企业系统等大规模数据处理场景。
📌 特点:
特性 | 描述 |
---|
客户端/服务器架构 | 需要单独启动 MySQL 服务 |
多用户并发 | 支持高并发访问,适合网站、API 后端 |
功能丰富 | 支持事务、视图、触发器、外键、分区等高级特性 |
用户权限管理 | 支持细粒度的权限控制 |
主从复制、集群 | 支持主从同步、分库分表等企业级部署方式 |
🧩 示例使用场景:
- 网站后端数据库
- 电商平台、社交平台
- ERP、CRM 系统
- 微服务架构中的核心数据库
✅ 三、SQLite vs MySQL:相同点
相同点 | 描述 |
---|
✅ 都是关系型数据库 | 使用 SQL 语句进行查询和操作 |
✅ 都支持事务 | 提供基本的 ACID 支持(SQLite 默认开启) |
✅ 支持索引、触发器、视图 | 基本结构一致 |
✅ 支持多种编程语言 | Python、Java、C++、Go、Node.js 等都支持 |
✅ 都可以用于开发中小型项目 | SQLite 更适合本地开发,MySQL 更适合多人协作和部署 |
✅ 四、SQLite vs MySQL:主要区别
区别项 | SQLite | MySQL |
---|
架构 | 嵌入式(无服务器) | 客户端-服务器模型 |
并发性能 | 适合单线程、低并发 | 支持多用户、高并发 |
存储方式 | 单个 .db 文件 | 多文件 + 表空间 |
安装与配置 | 无需安装,直接使用 | 需要安装、配置服务 |
用户权限管理 | 无用户权限系统 | 支持多用户、权限控制 |
外部连接 | 不支持网络访问 | 支持远程访问(通过 TCP/IP) |
事务支持 | 强大,但写操作串行化 | 完整的事务支持,可并行执行 |
锁机制 | 写操作锁整个数据库 | 支持行级锁、表级锁 |
性能 | 小规模数据快 | 大数据、高并发下表现更好 |
数据类型 | 动态类型(类似 JSON) | 强类型(int, varchar, datetime 等) |
免费程度 | 完全开源免费 | 社区版免费,企业版收费 |
🧠 五、举个类比帮助理解
类比 | 描述 |
---|
SQLite | 像是“本地记事本” | 你一个人写东西,速度快、简单 |
MySQL | 像是“共享在线文档” | 多人协作、并发编辑、版本控制 |
🤝 六、如何选择?看你的需求!
场景 | 推荐数据库 |
---|
快速原型开发 | ✅ SQLite |
移动 App 本地缓存 | ✅ SQLite |
Web 后端 / API 服务 | ✅ MySQL |
多用户并发访问 | ✅ MySQL |
简单桌面工具 | ✅ SQLite |
需要远程访问 | ✅ MySQL |
企业级部署 | ✅ MySQL |
没有 DBA 维护能力 | ✅ SQLite |
高可用、主从、备份 | ✅ MySQL |
需要全文检索、JSON 支持 | ✅ MySQL |
仅需本地测试或学习 | ✅ SQLite |
✅ 七、SQL 语法差异(常见对比)
功能 | SQLite | MySQL |
---|
自增主键 | AUTOINCREMENT 关键字 | AUTO_INCREMENT |
字符串类型 | TEXT | VARCHAR(n), CHAR(n) |
布尔类型 | INTEGER(0 或 1) | BOOLEAN(底层是 TINYINT) |
分页查询 | LIMIT offset, count | LIMIT offset, count |
外键约束 | 支持,但默认不启用 | 默认支持外键 |
时间戳字段 | 需手动设置 | 支持 TIMESTAMP 自动更新 |
JSON 类型 | 支持(较新版本) | 支持(MySQL 5.7+) |
📌 八、总结对比表
对比项 | SQLite | MySQL |
---|
是否需要服务器 | ❌ 不需要 | ✅ 需要 |
是否支持并发写入 | ⚠️ 弱,写操作串行 | ✅ 强,支持多线程写入 |
是否支持远程访问 | ❌ 不支持 | ✅ 支持 |
数据库存储位置 | 单文件(.db) | 多文件 + 表空间 |
用户权限管理 | ❌ 无 | ✅ 支持 |
事务支持 | ✅ 支持 | ✅ 支持 |
外键支持 | ✅ 支持(需手动启用) | ✅ 默认支持 |
是否适合生产环境 | ❌ 不适合 | ✅ 适合 |
是否容易部署 | ✅ 极简 | ❌ 需要配置 |