📌 基础操作

连接数据库

# 打开/创建数据库
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 测量性能,然后根据需要进行优化。