SQLite的基本操作
1. SQLite 简介
核心特性:
- 零配置:无需安装服务端,直接通过库文件操作数据库文件(如
.db
或.sqlite
)。 - 轻量级:整个数据库引擎封装在一个动态库中,体积小,易于集成到各类应用(嵌入式设备、桌面程序、Web 后端等)。
- 跨平台:支持 Windows、Linux、macOS 等多平台,数据库文件可在不同平台间迁移。
- 事务支持:遵循 ACID(原子性、一致性、隔离性、持久性)原则,保证数据操作的可靠性。
- 零配置:无需安装服务端,直接通过库文件操作数据库文件(如
适用场景:
- 小型应用或原型开发(无需复杂数据库部署)。
- 嵌入式设备(如 IoT 设备、智能硬件)。
- 本地数据存储(如桌面软件的配置、历史记录)。
- 测试环境(快速搭建数据库,无需依赖外部服务)
2. 数据类型 (Data Types)
SQLite 采用动态类型系统(Type Affinity),列的 “类型” 更像是 “推荐存储类型”,实际存储值的类型由值本身决定,但创建表时定义类型仍有意义(明确数据语义、辅助验证)。常用类型及特性
3. 基本 SQL 操作 (CRUD)
a. 创建表 (CREATE TABLE)
- 约束说明:
PRIMARY KEY
:主键,唯一标识一行数据,通常配合AUTOINCREMENT
(SQLite 中 INTEGER PRIMARY KEY 会自动自增,若需严格自增可显式加AUTOINCREMENT
,但会有性能开销)。NOT NULL
:列值不允许为NULL
。UNIQUE
:列值在表中必须唯一。CHECK
:自定义检查约束(如age INTEGER CHECK(age > 0)
确保年龄为正)。DEFAULT
:列的默认值(如created_at TEXT DEFAULT CURRENT_TIMESTAMP
记录创建时间)。
b. 插入数据 (INSERT)
- 多行插入:SQLite 支持一次插入多条记录
- 插入时忽略冲突:若表有唯一约束,使用
INSERT OR IGNORE
可忽略冲突记录,继续插入后续数据。
c. 查询数据 (SELECT)
- 条件组合(AND/OR)
- 模糊查询(LIKE):
%
匹配任意长度字符(包括 0 个)。_
匹配单个字符。
d. 更新数据 (UPDATE)
多表关联更新:SQLite 支持在 UPDATE
中关联其他表(需用子查询或 JOIN
逻辑)
限制更新行数:结合 ORDER BY
和 LIMIT
,控制更新的行数
e. 删除数据 (DELETE)
- 多表关联删除:类似更新,可通过子查询关联其他表进行删除。
- 删除所有数据(保留表结构):
TRUNCATE TABLE
在 SQLite 中不直接支持,可通过DELETE FROM table_name;
或DELETE FROM table_name WHERE 1;
实现(若表有自增主键,自增计数不会重置;若需重置,需删除并重建表)。