SQLITE DB如何将多个表的数据保存在一个文件中?

How does SQLITE DB saves data of multiple tables in a single file?

我正在从事一个创建 SQLite 数据库简化版本的项目。当我试图弄清楚它是如何设法将具有不同模式的多个表的数据存储在一个文件中时,我陷入了困境。我想它应该是使用一些索引来映射不同表的数据。有人可以更清楚地了解它是如何完成的吗?谢谢。

编辑:我想文档中已经有解释,但正在寻找更简单的方法来更好更快地理解它。

模式是所有实体(tables、视图等)(整个数据库)的列表,而不是基于每个实体存在许多模式的数据库。

数据本身存储在页面中,每个页面都由一个实体拥有。就是这些块被保存了。

  • 默认页面大小为 4k。您会注意到文件大小始终是 4K 的倍数。您还可以通过实验创建一个包含一些 table 的数据库,记下它的大小,然后添加一些数据,如果添加的数据不需要另一页,请查看文件的大小是否相同。这展示了它是如何与页面而不是 linear/contiguos 数据流相关的。

它,即模式,保存在名为 sqlite_master 的 table 中。这个 table 有列 :-

  • 类型(类型例如 table 等),
  • name(赋予实体的名称),
  • tbl_name(实体适用的故事)
  • 根页面(映射到第一页)
  • sql(用于生成实体的 SQL,如果有的话)

    • 请注意,如果存在临时 table,另一个架构 sqlite_temp_master 也可能存在。

例如:-

使用 SELECT * FROM sqlite_master; 可能会导致类似 :-

2.6. Storage Of The SQL Database Schema