目录
一、SQLite 核心定位(一句话总结)
它是无服务器、零配置、单文件存储的嵌入式关系型数据库,轻量到无需安装服务端,无需账号密码,直接操作 .db 文件即可,适合小型应用、嵌入式设备、本地缓存等场景(比如手机App、桌面软件、简单爬虫存储),不适合高并发、大数据量的生产服务端场景。它将整个数据库存储在一个单一文件中,是世界上使用最广泛的数据库引擎。
二、和你之前操作的 PostgreSQL 核心区别(关键差异)
- 无需部署:SQLite 没有服务进程,直接通过库文件操作本地
.db文件,PostgreSQL 是客户端/服务端架构,需要启动服务。 - 语法简化:SQLite 支持标准 SQL,但省略了部分复杂语法(比如
BIGSERIAL不存在,自增用INTEGER PRIMARY KEY AUTOINCREMENT;无CHECK约束的强校验;外键默认关闭,需手动开启)。 - 无用户权限:没有 PostgreSQL 那样的用户、角色、权限管理,单文件的权限依赖操作系统文件权限。
三、你之前建表语句适配 SQLite 的核心示例(以围栏人员关联表为例)
-- 围栏与人员关联表(SQLite 版本)
CREATE TABLE sys_fence_people_association (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- 替代 PostgreSQL 的 BIGSERIAL
fence_id INTEGER,
people_id INTEGER,
create_by TEXT DEFAULT '', -- 用 TEXT 替代 VARCHAR(SQLite 中 VARCHAR 兼容但推荐 TEXT)
create_time DATETIME, -- 用 DATETIME 替代 timestamp
update_by TEXT DEFAULT '',
update_time DATETIME
);
-- 开启外键(SQLite 外键默认关闭,必须手动执行)
PRAGMA foreign_keys = ON;
-- 若需添加外键(适配 SQLite 语法)
ALTER TABLE sys_fence_people_association
ADD CONSTRAINT fk_fence_people_fence FOREIGN KEY (fence_id) REFERENCES sys_fence_alarm(id);
四、有主见的使用建议
- 小型本地项目(比如桌面工具、单机小程序)优先选 SQLite,开发效率拉满,无需折腾部署。
- 若涉及多用户并发写入、大数据量存储、复杂权限控制,直接放弃 SQLite,选 PostgreSQL/Mysql 更稳妥。
- 操作 SQLite 时,记得先执行
PRAGMA foreign_keys = ON;开启外键约束,否则外键配置会形同虚设。
总结
- SQLite 是轻量嵌入式数据库,核心优势是零配置、单文件、易上手。
- 与 PostgreSQL 核心差异在部署架构和语法细节,适用场景截然不同。
- 小型本地项目首选 SQLite,高并发场景不适用,且使用时需手动开启外键约束。
浙公网安备 33010602011771号