一、SQLITE_MASTER的简介
SQLite数据库中有一个内置表,名为SQLITE_MASTER,此表中存储着当前数据库中所有表的相关信息,比如表的名称、用于创建此表的sql语句、索引、索引所属的表、创建索引的sql语句等。每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表, 它定义数据库的模式。
二、SQLITE_MASTER的表结构
CREATE TABLE sqlite_master (
type TEXT,
name TEXT,
tbl_name TEXT,
rootpage INTEGER,
sql TEXT );
三、基本操作
1、查询表信息
如果要查询表的信息,则type字段为“table”,name字段为表的名称,返回结果中返回的sql字段,为创建此表的sql语句。
select *
from sqlite_master
where type = ’table’ and name = ‘表名’;
2、查询索引信息
select *
from sqlite_master
where type = ’index’ and name = ‘索引名’;
3、应用场景
不管是表还是索引,sql 字段是原先用 CREATE TABLE 或 CREATE INDEX 语句创建它们时的命令文本。对于自动创建的索引(用来实现 PRIMARY KEY 或 UNIQUE 约束),sql字段为NULL。
SQLITE_MASTER 表是只读的。不能对它使用 UPDATE、INSERT 或 DELETE。 它会被 CREATE TABLE、CREATE INDEX、DROP TABLE 和 DROP INDEX 命令自动更新。
4、临时表
临时表不会出现在 SQLITE_MASTER 表中。临时表及其索引和触发器存放在另外一个叫 SQLITE_TEMP_MASTER 的表中。SQLITE_TEMP_MASTER 跟 SQLITE_MASTER 差不多, 但它只是对于创建那些临时表的应用可见。如果要获得所有表的列表, 不管是永久的还是临时的,可以使用类似下面的命令:
SELECT name
FROM (SELECT *
FROM sqlite_master
UNION ALL
SELECT *
FROM sqlite_temp_master)
WHERE type = ’table’
ORDER BY name