SQLite数据库架构的存储

SQLite数据库架构的存储

SELECT*FROM sqlite_master;
SELECT*FROM sqlite_temp_master;

数据库文件的第1页是表b-树的根页,它包含一个特殊的表,名为“sqite_master”(如果是temp数据库,则是“sqite_temp_master”),该表存储了完整的数据库模式。sqite_master表的结构似乎是使用以下SQL创建的:

CREATE TABLE sqlite_master(
  type text,
  name text,
  tbl_name text,
  rootpage integer,
  sql text
);

sqite_master表包含数据库模式中每一个表、索引、视图和触发器(统称为“对象”)的一行,除非sqite_master表本身没有条目。sqite_主表包含内部模式对象除了应用程序和程序员定义的对象之外。

sqlit.type列将是以下文本字符串之一:“表”、“索引”、“视图”或“触发器”(根据定义的对象类型)。“表”字符串用于普通和虚拟表.

sqlit.name列将保存对象的名称。独树一帜和主键表上的约束导致SQLite创建内部指标使用表单“sqite_autoindex_table_N”的名称,其中的表被包含约束的表的名称替换,N是以1开头的整数,在表定义中看到的每个约束都是递增的。在.没有ROWID表中,主键没有sqite_master条目,但是“sqlitt_autoindex_table_N”名称保留在主键中,就好像sqite_master条目确实存在一样。这将影响随后唯一约束的编号。“sqite_autoindex_table_N”名称从未分配给整数主键,无论是在ROWID表中还是在没有ROWID表中。

sqlit.tbl_name列保存与对象关联的表或视图的名称。对于表或视图,tbl_name列是name列的副本。对于索引,tbl_name是索引表的名称。对于触发器,tbl_name列存储导致触发器触发的表或视图的名称。

sqlit.rootpage列存储表和索引的根b树页的页码。对于定义视图、触发器和虚拟表的行,rootpage列为0或NULL。

sql列存储描述对象的SQL文本。此sql文本是创建表, 创建虚拟表, 创建索引, 创建视图,或创建触发器语句,如果在数据库文件是数据库连接会重新创造物体。文本通常是用于创建对象的原始语句的副本,但应用了规范化,以使文本符合以下规则:

  • 语句开头的CREATE、TABLE、VIEW、触发器和INDEX关键字被转换为所有大写字母。
  • 如果临时或临时关键字发生在初始CREATE关键字之后,则删除该关键字。
  • 在创建对象名称之前发生的任何数据库名称限定符都将被删除。
  • 前导空间被移除。
  • 前两个关键字后面的所有空格都转换为单个空格。

sqite_master.sql列中的文本是创建对象的原始CREATE语句文本的副本,除了如上所述并经后续修改的规范化文本外变更表陈述。sql为空。内部指标自动创建的独树一帜或主键制约因素。

你可能感兴趣的:(数据库)