📌 基础操作
连接数据库
# 打开/创建数据库
sqlite3 database.db
# 打开后立即执行SQL并退出
sqlite3 database.db "SELECT * FROM users;"
# 以只读方式打开
sqlite3 database.db -readonly
退出数据库
.exit -- 或
.quit
📋 查看命令(最常用)
查看基本信息
-- 查看所有表
.tables
-- 查看表结构
.schema table_name
-- 查看所有表的创建语句
.schema
-- 查看数据库信息
.database
-- 查看当前连接的数据库文件
.databases
查看索引和触发器
-- 查看索引
.indexes table_name
-- 查看所有索引
.indexes
-- 查看触发器
.schema -- 会显示所有触发器定义
📊 查询数据优化
设置显示格式
-- 以表格形式显示(推荐)
.mode table
-- 以列对齐方式显示
.mode column
-- CSV格式导出
.mode csv
-- JSON格式输出
.mode json
-- 显示表头
.headers on
-- 显示行号
.nullvalue NULL -- 将NULL显示为NULL
常用组合设置
-- 生产环境推荐配置
.headers on
.mode column
.nullvalue NULL
-- 导出数据推荐配置
.mode csv
.headers on
.output output.csv
🔧 数据导入导出
导出数据
-- 导出到CSV文件
.output result.csv
SELECT * FROM table_name;
.output stdout -- 恢复输出到屏幕
-- 导出为SQL文件(备份)
.output backup.sql
.dump
.output stdout
-- 只导出特定表
.output table_backup.sql
.dump table_name
.output stdout
导入数据
-- 从CSV导入
.mode csv
.import data.csv table_name
-- 从SQL文件导入
.read backup.sql
-- 在命令行中直接导入
sqlite3 database.db < data.sql
🔍 调试与性能
-- 显示当前设置
.show
-- 开启SQL执行计时
.timer on
-- 查看查询执行计划
.explain
EXPLAIN QUERY PLAN SELECT * FROM table_name;
-- 查看最近执行的SQL语句
.history
📁 数据库维护
备份和恢复
-- 备份整个数据库
.backup backup.db
-- 备份到文件
.backup main backup.db
-- 恢复备份
.restore main backup.db
数据库优化
-- 分析表,更新统计信息
ANALYZE;
-- 整理数据库,回收空间
VACUUM;
-- 检查数据库完整性
PRAGMA integrity_check;
-- 查看数据库大小
PRAGMA page_count;
PRAGMA page_size;
-- 计算数据库大小(字节)
SELECT page_count * page_size FROM pragma_page_count(), pragma_page_size();
🎯 实用脚本示例
1. 快速查询脚本
#!/bin/bash
# 快速查询某个表的行数
sqlite3 database.db "SELECT COUNT(*) FROM table_name;"
2. 批量执行SQL文件
# 执行SQL文件并输出结果到文件
sqlite3 database.db < query.sql > result.txt
3. 交互式查询优化
-- 开启这些设置,查询体验最佳
.headers on
.mode column
.timer on
.echo on -- 显示执行的SQL
-- 执行长查询时开启
.timer on
.explain
SELECT * FROM large_table WHERE condition;
💡 常用操作组合
快速查看表结构
-- 查看所有表
.tables
-- 查看特定表详情
.schema table_name
-- 预览数据(前10行)
SELECT * FROM table_name LIMIT 10;
导出特定表为CSV
.mode csv
.headers on
.output output.csv
SELECT * FROM table_name WHERE condition;
.output stdout
.mode table -- 恢复默认
数据库迁移
-- 导出整个数据库
.output full_backup.sql
.dump
.output stdout
-- 只导出表结构
.output schema_only.sql
.schema
.output stdout
⚡ 快速参考卡片
| 命令 | 用途 |
|---|---|
.tables | 列出所有表 |
.schema | 查看表结构 |
.database | 查看数据库信息 |
.mode [csv|column|table|json] | 设置输出格式 |
.headers on|off | 显示/隐藏表头 |
.output filename | 重定向输出到文件 |
.import file.csv table | 导入CSV |
.dump | 导出SQL备份 |
.backup file.db | 创建完整备份 |
.timer on | 显示执行时间 |
.exit | 退出 |
这些命令基本覆盖了日常开发中90%的SQLite使用场景。遇到复杂查询时,先用 .explain 分析查询计划,用 .timer on 测量性能,然后根据需要进行优化。