SQLite 使用文档
SQLite 是一个轻量级、嵌入式、零配置的 SQL 数据库引擎,广泛应用于桌面软件、移动应用、Web 服务以及物联网设备。
常用命令速查表
| 功能 | 命令 | 
|---|---|
| 打开数据库 | sqlite3 mydb.db | 
| 查看所有表 | .tables | 
| 查看表结构 | .schema table_name | 
| 导出 SQL | .dump > backup.sql | 
| 导出 CSV | .mode csv+.output file.csv | 
| 备份数据库 | .backup backup.db | 
| 恢复数据库 | .restore backup.db | 
| 退出命令行 | .quit | 
一、简介
SQLite 是一个自包含的数据库引擎,不依赖服务器,也无需安装独立的数据库服务进程。数据库内容保存在单个文件中。  
它支持大多数 SQL92 标准功能,包括事务、触发器、视图和索引。
二、安装与初始化
2.1 安装
Linux:
sudo apt-get install sqlite3 libsqlite3-devmacOS:
brew install sqliteWindows:  
从 https://sqlite.org/download.html 下载预编译二进制包并解压,将 sqlite3.exe 添加到系统 PATH。
2.2 创建数据库
sqlite3 mydatabase.db以上命令将在当前目录下创建一个名为 mydatabase.db 的数据库文件,并进入交互模式。退出 SQLite:
.quit三、基本操作
3.1 创建表
CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT UNIQUE,
    age INTEGER,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);3.2 插入数据
INSERT INTO users (name, email, age) VALUES ('Alice', 'alice@example.com', 25);
INSERT INTO users (name, email, age) VALUES ('Bob', 'bob@example.com', 30);3.3 查询数据
SELECT * FROM users;
SELECT name, age FROM users WHERE age > 25 ORDER BY age DESC;3.4 更新数据
UPDATE users SET age = 28 WHERE name = 'Alice';3.5 删除数据
DELETE FROM users WHERE id = 1;四、数据库管理
4.1 查看所有表
.tables4.2 查看表结构
.schema users4.3 导出与导入数据
导出为 SQL 文件:
sqlite3 mydatabase.db .dump > backup.sql导入数据:
sqlite3 newdb.db < backup.sql导出为 CSV 文件:
sqlite3 mydatabase.db
.mode csv
.output users.csv
SELECT * FROM users;
.output stdout五、事务与约束
5.1 启动事务
BEGIN TRANSACTION;
UPDATE users SET age = age + 1;
COMMIT;5.2 回滚事务
ROLLBACK;5.3 常见约束
- PRIMARY KEY:主键唯一。
- UNIQUE:字段值不能重复。
- NOT NULL:不能为空。
- CHECK:自定义条件验证。
- FOREIGN KEY:外键约束。
六、索引与优化
6.1 创建索引
CREATE INDEX idx_users_email ON users(email);6.2 删除索引
DROP INDEX idx_users_email;6.3 性能建议
- 为常用查询条件添加索引。
- 尽量使用整数类型作为主键。
- 使用 EXPLAIN QUERY PLAN分析查询。
七、备份与恢复
7.1 命令行备份
sqlite3 mydatabase.db ".backup backup.db"7.2 恢复数据库
sqlite3 new.db ".restore backup.db"八、SQLite 与编程语言集成
8.1 Python 示例
import sqlite3
conn = sqlite3.connect("mydatabase.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)
conn.close()8.2 Node.js 示例
import sqlite3 from 'sqlite3';
const db = new sqlite3.Database('mydatabase.db');
db.serialize(() => {
  db.each("SELECT id, name FROM users", (err, row) => {
    console.log(row.id + ": " + row.name);
  });
});
db.close();九、参考资料
本文档适用于 SQLite 3.x 版本,适合开发、测试及嵌入式数据库场景使用。