简介:本文详细介绍SQLite数据库的核心特性、安装配置、基础操作、高级功能及最佳实践,帮助开发者快速掌握SQLite的实用技巧。
SQLite是一款开源的嵌入式关系型数据库,以其零配置、无服务器、单文件存储的特性,成为移动应用、桌面程序及小型Web服务的首选数据库。其核心优势包括:
典型应用场景包括:移动应用本地数据存储(如Flutter/React Native)、桌面工具数据管理(如Firefox浏览器配置)、物联网设备数据采集等。
sudo apt install sqlite3或brew install sqlite)。pip install pysqlite3或直接使用内置sqlite3模块。sqlite-jdbc)。sqlite3.c源文件。启动SQLite命令行界面:
sqlite3 test.db # 创建或打开test.db数据库
常用命令:
.tables:列出所有表。.schema 表名:查看表结构。.exit:退出命令行。.help:显示完整帮助文档。SQLite支持的数据类型包括:
INTEGER:整型(1,2,4,8字节)。REAL:浮点型。TEXT:文本字符串。BLOB:二进制数据。NULL:空值。示例:创建用户表
CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age INTEGER,email TEXT UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
INSERT INTO users (name, age, email)VALUES ('Alice', 25, 'alice@example.com');
批量插入优化:
BEGIN TRANSACTION;INSERT INTO users VALUES (NULL, 'Bob', 30, 'bob@example.com');INSERT INTO users VALUES (NULL, 'Charlie', 28, 'charlie@example.com');COMMIT;
基础查询:
SELECT * FROM users WHERE age > 20 ORDER BY name DESC;
高级查询:
SELECT * FROM users LIMIT 10 OFFSET 20;SELECT COUNT(*), AVG(age) FROM users;
CREATE TABLE orders (id INTEGER PRIMARY KEY,user_id INTEGER,amount REAL,FOREIGN KEY (user_id) REFERENCES users(id));SELECT u.name, o.amount FROM users u JOIN orders o ON u.id = o.user_id;
UPDATE users SET age = 26 WHERE name = 'Alice';DELETE FROM users WHERE id = 3;
SQLite默认启用事务,可通过显式语句控制:
BEGIN TRANSACTION;-- 执行多条SQLINSERT INTO logs VALUES (NULL, 'Operation started');UPDATE accounts SET balance = balance - 100 WHERE id = 1;COMMIT; -- 或 ROLLBACK; 回滚
创建索引加速查询:
CREATE INDEX idx_users_email ON users(email);CREATE INDEX idx_users_age_name ON users(age, name); -- 复合索引
索引使用原则:
CREATE VIRTUAL TABLE实现:
CREATE VIRTUAL TABLE docs USING fts5(title, content);INSERT INTO docs VALUES ('SQLite Guide', 'SQLite is a lightweight database');SELECT * FROM docs WHERE docs MATCH 'lightweight';
SELECT json_extract(config, '$.theme') FROM settings;
sqlite3_open_v2的SQLITE_OPEN_FULLMUTEX标志。
sqlite3_backup_init(dest_db, "main", src_db, "main");sqlite3_backup_step(backup, -1); // -1表示复制全部sqlite3_backup_finish(backup);
sqlite3 mydb.db ".backup backup.db"
PRAGMA journal_mode = WAL; -- 启用WAL模式提升并发PRAGMA cache_size = -2000; -- 设置缓存页数(负值表示KB)PRAGMA synchronous = NORMAL; -- 平衡安全性与性能
EXPLAIN QUERY PLAN SELECT * FROM users WHERE age = 25;
数据库锁定:
外键约束失效:
PRAGMA foreign_keys = ON;
数据类型混淆:
SQLite凭借其轻量级、高性能和易用性,成为嵌入式数据库的首选。掌握其核心功能(事务、索引、扩展)和优化技巧(批量操作、PRAGMA配置),可显著提升开发效率。
推荐资源:
通过本文的实践指导,开发者可快速构建稳定、高效的SQLite应用,满足从移动端到服务端的多样化需求。