SQLite 是一款嵌入式关系型数据库,本技能围绕 sqlite3 命令行工具整理常用命令、SQL 查询写法与嵌入式数据库模式。
【用途】当用户提到 sqlite、sqlite3、embedded database、local database 等关键词时可使用本技能,用于快速编写、运行与调试 SQLite 命令和语句。
【主要能力】
- sqlite3 CLI 基础:打开或创建数据库(sqlite3 myapp.db)、内存数据库(sqlite3 :memory:)、一次性命令、从文件执行 SQL,以及 .tables、.schema、.headers、.mode、.width、.databases、.indexes 等 dot-command。
- 表与数据操作:CREATE TABLE IF NOT EXISTS、主键与自增、外键约束、UNIQUE、默认值;INSERT、批量 INSERT、UPDATE、DELETE;RETURNING 子句需 3.35.0+,可用 sqlite3 --version 检查版本。
- 查询:JOIN、LEFT JOIN、子查询、IN、GROUP BY 与 HAVING、COALESCE;CTE(WITH)与窗口函数(LAG、ROW_NUMBER、SUM OVER 等)。
- 输出模式与导入导出:命令行 -header -csv、-json、-header -column;shell 内 .mode csv/json/column/table/line、.separator;导出 CSV、导入 CSV 并在大批量导入时用事务提速。
- 索引与查询计划:CREATE INDEX、CREATE UNIQUE INDEX、复合索引;EXPLAIN QUERY PLAN 输出中的 SCAN TABLE、SEARCH TABLE USING INDEX、USING COVERING INDEX、USE TEMP B-TREE 等含义说明。
- WAL 与并发:PRAGMA journal_mode=WAL、PRAGMA busy_timeout;说明单写多读、生成 -wal 与 -shm 文件、强制 checkpoint 与持久化设置。
- 备份与维护:.backup 在线备份、.dump 全库或单表转储、从 dump 恢复;VACUUM 与 VACUUM INTO 回收空间。
- JSON 支持:SQLite 3.38+ 内置或 JSON1 扩展;json_extract、->> 操作符、json_each 遍历数组、json_set 修改、json_object 与 json_group_array 构建 JSON。
- FTS5 全文检索:创建虚拟表、从已有表填充、MATCH 布尔检索与 rank 排序、highlight 高亮、用触发器保持同步。
- 日期与时间:datetime('now')、date('now','-7 days')、strftime、julianday 及日期运算;说明 SQLite 以 TEXT、REAL 或 INTEGER 存储日期。
- 多数据库附加:ATTACH DATABASE、跨库查询与数据迁移、DETACH DATABASE。
- 常用 PRAGMA:性能类(journal_mode、synchronous、cache_size、mmap_size、temp_store)、完整性类(foreign_keys、integrity_check)、信息类(table_info、index_list、compile_options)。
- 常见模式:配置键值存储、带过期时间的本地缓存、CLI 工具历史记录存储、测试夹具(含内存数据库)。
【使用方式】通过 sqlite3 命令行直接执行 SQL 或 dot-command;可在脚本或 shell 中以 heredoc 方式批量执行;在 Python 中用 sqlite3.connect(":memory:")、在 Node 中用 new Database(":memory:") 等语言绑定操作内存数据库。
【适用场景】本地开发、命令行脚本、轻量级应用内嵌数据存储、配置与缓存、测试夹具、本地全文检索等。
【限制】部分特性有版本要求,如 RETURNING 需 3.35.0+、.mode table 需 3.36+、VACUUM INTO 需 3.27+、JSON 需 3.38+ 或 JSON1 扩展;WAL 模式一次仅允许一个写者;外键默认关闭需显式 PRAGMA foreign_keys=ON。具体安装方式、支持平台与收费信息暂未提供。