sqlite3 是一款轻量级嵌入式关系型数据库,不需要单独搭建数据库服务端,整个数据库就是一个独立文件,支持命令行操作,也可以被 Python C Java 等各类编程语言调用,日常用来做本地数据存储 小项目数据管理非常方便,核心使用流程就是安装 sqlite3 工具,创建数据库文件,建表,插入查询更新删除数据,导出备份数据,新手最容易混淆的点是它和 mysql 这类数据库不一样,mysql 需要启动数据库服务,sqlite3 不需要守护进程,打开文件就可以读写,所有数据全部保存在后缀为 db 的单文件里面,拷贝这个 db 文件就等于完整迁移数据库,适合单机本地应用,不适合高并发多用户大型业务场景,掌握基础 SQL 语句之后,sqlite3 命令行操作逻辑和标准 SQL 语法高度兼容,学会之后也可以快速迁移到其他数据库。
基础核心概念表格
| 项目 | 说明 |
|---|---|
| 数据库类型 | 嵌入式文件型数据库,无独立服务进程 |
| 文件后缀 | 一般使用 db sqlite sqlite3 作为后缀 |
| 支持语法 | 兼容标准 SQL,支持事务 索引 视图 |
| 适用场景 | 本地软件缓存 小型项目 测试数据库 单机工具 |
| 不适用场景 | 高并发多客户端同时写入 超大数据量业务 |
命令行使用操作步骤
第一步 安装 sqlite3 工具,windows 可以官网下载预编译包,把 sqlite3.exe 加入系统环境变量,mac 和 linux 一般系统自带,打开终端直接输入 sqlite3 即可启动。
第二步 创建或者打开数据库,终端输入 sqlite3 test.db,如果这个文件不存在就自动新建数据库,如果已经存在就直接打开这个数据库。
第三步 创建数据表,执行建表 SQL,比如 create table user id integer primary key autoincrement name text age integer,主键自增是 sqlite3 常用写法。
第四步 插入数据,使用 insert into user name age values 张三 18,执行之后数据写入数据表。
第五步 查询数据,使用 select from user,查询全部记录,也可以加 where 条件做筛选查询。
第六步 更新数据,update user set age 20 where id 1,修改指定行的数据。
第七步 删除数据,delete from user where id 1,删除符合条件记录。
第八步 退出命令行,输入 quit 或者 exit,关闭数据库连接,修改的数据会自动保存在 db 文件里面。
进阶常用操作清单
1 事务操作,begin 开启事务,commit 提交,rollback 回滚,批量修改的时候使用事务可以大幅提升写入速度
2 创建索引,create index idx_name on user name,加快查询速度
3 备份数据库,使用命令 .backup backup.db 完成数据库备份
4 导出 sql 脚本,使用 .dump 可以把整个数据库表结构和数据导出成 sql 文本文件
5 查看表结构,输入 .schema user 查看建表语句
6 查看所有数据表,输入 .tables 列出当前数据库全部表
编程语言调用简要说明
Python 内置 sqlite3 模块,不需要额外安装 dll,直接 import sqlite3,建立连接,创建游标,执行 SQL 语句,提交事务关闭连接,C 语言项目则需要引入 sqlite3.h 头文件和 sqlite3.dll 动态库,调用对应的 API 完成数据库读写。
综合来看,sqlite3 上手门槛很低,核心就是掌握标准 SQL 加上它独有的点命令,点命令是 sqlite3 命令行自带的辅助指令,和普通 SQL 语句区分开,日常开发优先使用事务优化批量写入,记住它是单机文件数据库,并发写入能力有限,不要把它当成大型线上数据库使用。
【常见问题】
问题 1 sqlite3 使用的时候需要启动数据库服务吗
回答 1 sqlite3 使用的时候不需要启动独立数据库服务,它是嵌入式文件数据库,直接打开 db 文件就可以读写,这也是 sqlite3 和 mysql 最大区别。
问题 2 sqlite3 使用报错提示 dll 丢失怎么办
回答 1 sqlite3 使用出现 dll 丢失,一般是 C 语言调用场景缺少 sqlite3.dll,需要把对应位数的 sqlite3.dll 放到程序目录或者系统目录,Python 内置模块调用 sqlite3 一般不会出现这个报错。
问题 3 sqlite3 使用支持多用户同时访问吗
回答 1 sqlite3 使用支持多客户端读取,但是写入是文件锁机制,同一时间只允许一个写入操作,高并发写入场景不推荐使用 sqlite3。
【免责申明】
本内容基于 sqlite3 公开官方文档整理,不同版本 sqlite3 命令和语法细节存在小幅差异,内容仅供学习参考,正式项目使用请查阅官方手册,本教程不保证所有特殊业务场景都完全适用。


