SQLite 分离数据库学习笔记

什么是分离数据库

SQLite 是一种轻量级的嵌入式关系型数据库管理系统,通常以单独的文件形式存在于应用程序中。然而,当我们处理大量数据时,会发现 SQLite 数据库文件变得越来越大,不便于备份和维护。

这时就可以考虑将 SQLite 数据库分离成多个文件,每个文件只包含部分表或索引,这样能够更好地管理和维护数据库。

如何创建分离数据库

在 SQLite 中创建分离数据库需要用到 SQL 命令 ATTACHDETACH

首先,我们需要创建一个主数据库文件,然后再创建多个子数据库文件。我们可以使用以下命令将子数据库文件附加到主数据库文件中:

Copy Code
ATTACH DATABASE '子数据库文件路径' AS '子数据库名称';

例如,我们有一个主数据库文件 main.db,还有两个要附加的子数据库文件 sub1.dbsub2.db,可以使用以下命令进行附加:

Copy Code
ATTACH DATABASE 'sub1.db' AS sub1; ATTACH DATABASE 'sub2.db' AS sub2;

使用 DETACH 命令可以将已附加的子数据库文件从主数据库中分离出来:

Copy Code
DETACH DATABASE '子数据库名称';

分离数据库的使用举例

假设我们有一个包含两个表的数据库,一个是 Students 表,另一个是 Courses 表。我们可以将这两个表分别存储在不同的文件中。

首先,创建主数据库文件 main.db,并在其中创建 Students 表:

Copy Code
CREATE TABLE Students ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER, gender TEXT );

接着,创建两个子数据库文件 students.dbcourses.db,并在 students.db 中创建 Students 表,在 courses.db 中创建 Courses 表:

Copy Code
-- 创建 students.db 文件 sqlite3 students.db -- 在 students.db 中创建 Students 表 ATTACH DATABASE 'students.db' AS students; CREATE TABLE students.Students ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER, gender TEXT ); -- 创建 courses.db 文件 sqlite3 courses.db -- 在 courses.db 中创建 Courses 表 ATTACH DATABASE 'courses.db' AS courses; CREATE TABLE courses.Courses ( id INTEGER PRIMARY KEY, name TEXT, credit INTEGER );

现在,我们可以在主数据库中使用以下 SQL 语句操作 Students 表和 Courses 表:

Copy Code
-- 添加学生信息到主数据库中的 Students 表 INSERT INTO Students (id, name, age, gender) VALUES (1, '张三', 20, '男'); INSERT INTO Students (id, name, age, gender) VALUES (2, '李四', 21, '女'); -- 从主数据库中的 Students 表中获取学生信息 SELECT * FROM Students; -- 在 courses.db 中添加一门新课程 ATTACH DATABASE 'courses.db' AS courses; INSERT INTO courses.Courses (id, name, credit) VALUES (1, '计算机网络', 3); -- 从 courses.db 中获取课程信息 SELECT * FROM courses.Courses;

通过分离数据库,我们可以更好地管理和维护数据,同时也可以更灵活地进行数据备份和恢复。