SQLite 命令
SQLite 命令大全(2025 最新版)
SQLite 命令分为 两大类:
- SQL 命令(标准 SQL,操作数据)
- 点命令(Dot Commands)(SQLite 特有,操作数据库环境)
一、点命令(.help 查看全部)
在 sqlite> 提示符下输入 .help 可查看完整列表。
| 命令 | 说明 | 示例 |
|---|---|---|
.help | 显示所有点命令帮助 | .help |
.quit / .exit | 退出 SQLite | .quit |
.databases | 显示当前数据库文件 | .databases |
.tables | 列出所有表 | .tables |
.schema [表名] | 查看建表语句 | .schema users |
.indexes [表名] | 查看索引 | .indexes users |
.headers on/off | 显示/隐藏列标题 | .headers on |
.mode column/list | 设置输出格式 | .mode column |
.width num1 num2 | 设置列宽 | .width 10 20 |
.separator "x" | 设置分隔符 | .separator "," |
.output 文件名 | 输出结果到文件 | .output result.txt |
.read 文件名 | 执行 SQL 文件 | .read init.sql |
.dump [表名] | 导出数据库为 SQL | .dump |
.backup 文件名 | 备份数据库 | .backup backup.db |
.restore 文件名 | 恢复数据库 | .restore backup.db |
.timer on/off | 开启查询计时 | .timer on |
.changes on/off | 显示影响行数 | .changes on |
二、常用点命令组合(推荐配置)
.headers on -- 显示列名
.mode column -- 表格格式
.width auto -- 自动列宽(3.25+)
.nullvalue NULL -- NULL 显示为 NULL
保存为
~/.sqliterc(Linux/macOS)或%APPDATA%\sqlite\sqliterc(Windows)
三、SQL 命令(核心操作)
| 操作 | 命令 | 示例 |
|---|---|---|
| 创建数据库 | 自动创建(连接时) | sqlite3 mydb.db |
| 创建表 | CREATE TABLE | CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT); |
| 插入数据 | INSERT INTO | INSERT INTO users(name) VALUES('张三'); |
| 查询数据 | SELECT | SELECT * FROM users WHERE age > 20; |
| 更新数据 | UPDATE | UPDATE users SET age = 25 WHERE id = 1; |
| 删除数据 | DELETE | DELETE FROM users WHERE id = 1; |
| 删除表 | DROP TABLE | DROP TABLE users; |
| 创建索引 | CREATE INDEX | CREATE INDEX idx_name ON users(name); |
| 事务 | BEGIN; COMMIT; ROLLBACK; | BEGIN; INSERT ...; COMMIT; |
四、实用命令速查表
1. 数据库信息
.databases -- 列出所有数据库
.tables -- 列出所有表
.schema users -- 查看 users 表结构
.indexes users -- 查看 users 表索引
2. 导入导出
-- 导出整个数据库为 SQL
.dump > backup.sql
-- 导出单表
.dump users > users.sql
-- 执行 SQL 文件
.read init.sql
-- CSV 导入
.mode csv
.import data.csv mytable
3. 性能分析
.timer on -- 开启计时
EXPLAIN QUERY PLAN SELECT * FROM users WHERE email = 'a@example.com';
4. 备份恢复
.backup mybackup.db
.restore mybackup.db
五、命令行一键操作(无需进入 sqlite>)
# 查看版本
sqlite3 --version
# 执行 SQL 并退出
sqlite3 mydb.db "SELECT * FROM users;"
# 执行 SQL 文件
sqlite3 mydb.db < init.sql
# 以 CSV 模式执行
sqlite3 -csv mydb.db "SELECT * FROM users;" > output.csv
# 批量模式(无交互)
sqlite3 -batch mydb.db "PRAGMA foreign_keys = ON;"
# 交互模式 + 美化
sqlite3 mydb.db -header -column
六、PRAGMA 命令(数据库配置)
| PRAGMA | 说明 | 示例 |
|---|---|---|
foreign_keys = ON | 开启外键 | PRAGMA foreign_keys = ON; |
journal_mode = WAL | 启用 WAL 模式(高并发) | PRAGMA journal_mode = WAL; |
cache_size = 10000 | 设置缓存页数 | PRAGMA cache_size = 10000; |
synchronous = NORMAL | 性能优化 | PRAGMA synchronous = NORMAL; |
temp_store = MEMORY | 临时表放内存 | PRAGMA temp_store = MEMORY; |
生产环境推荐:
PRAGMA foreign_keys = ON; PRAGMA journal_mode = WAL; PRAGMA synchronous = NORMAL;
七、完整示例:从零开始
# 1. 创建数据库
sqlite3 school.db
# 2. 在 sqlite> 中执行
sqlite> .headers on
sqlite> .mode column
sqlite> CREATE TABLE students (
...> id INTEGER PRIMARY KEY,
...> name TEXT NOT NULL,
...> class TEXT
...> );
sqlite> INSERT INTO students (name, class) VALUES ('张三', '高一1班');
sqlite> SELECT * FROM students;
id name class
---------- ---------- ----------
1 张三 高一1班
sqlite> .quit
八、命令速记卡(贴在桌边)
.databases .tables .schema
.headers on .mode column .width auto
.quit .dump .backup x.db
.read file.sql .import csv .output file
PRAGMA foreign_keys = ON;
PRAGMA journal_mode = WAL;
九、学习建议
- 背熟 10 个点命令:
.tables、.schema、.dump、.quit等 - 用
.sqliterc美化输出 - 掌握
PRAGMA优化性能 - 用
.timer on分析慢查询
下一步? 回复:
创建表→ 详细建表语法导入导出→ CSV、JSON、SQL 文件操作Python 命令→ 用 Python 调用 SQLiteGUI 命令→ DB Browser 快捷键
现在试试:
sqlite3 test.db ".tables"
看看有没有表!