sqlite系統表介紹(查詢資料庫中所有的表 查詢表中的所有欄位)
每一個 SQLite 資料庫都有一個叫 SQLITE_MASTER 的表, 裡面儲存著資料庫的資料結構(表結構、檢視結構、索引結構等),只可以對他使用查詢語句
SQLITE_MASTER 表DDL資訊如下:
CREATE TABLE sqlite_master (type TEXT,name TEXT,tbl_name TEXT,rootpage INTEGER,sql TEXT);
type 型別 (如表、檢視、索引等) name 名稱 tbl_name 所屬表名稱 SQL (表、檢視、索引)的DDL語句
對於表來說,type 欄位永遠是 ‘table’,name 欄位永遠是表的名字。所以,要獲得資料庫中所有表的列表, 使用下列SELECT語句:
SELECT name FROM sqlite_master WHERE type=’table’ ORDER BY name;
對於索引來說,type 等於 ‘index’, name 則是索引的名字,tbl_name 是該索引所屬的表的名字, 使用下列SELECT語句:
SELECT name FROM sqlite_master WHERE type=’index’ ORDER BY name;
對於檢視來說,type 等於 ‘view’, name 則是檢視的名字,tbl_name 是該檢視所屬的表的名字, 使用下列SELECT語句:SELECT name FROM sqlite_master WHERE type=’view’ ORDER BY name;
不管是表或檢視還是索引,sql 欄位是原先用 CREATE TABLE 、CREATE VIEW 或 CREATE INDEX 語句建立它們時的命令文字。對於自動建立的索引(用來實現 PRIMARY KEY 或 UNIQUE 約束),sql欄位為NULL。
SQLITE_MASTER 表是隻讀的。不能對它使用 UPDATE、INSERT 或 DELETE。 它會被 CREATE TABLE、CREATE INDEX、DROP TABLE 和 DROP INDEX 命令自動更新。
通過以下語句可查詢出某個表的所有欄位資訊
PRAGMA table_info([tablename])
例如
注意 PRAGMA 必須大寫
當然欄位資訊也可以從sql欄位中獲取每一個 SQLite 資料庫都有一個叫SQLITE_TEMP_MASTER的表儲存著臨時表及其索引和觸發器 臨時表不會出現在 SQLITE_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;
查詢檢視或索引只需把table修改成view或index即可
每一個 SQLite 資料庫都有一個叫ANDROID_METADATA的表 儲存著語言和地域資訊,雖然簡單但必不可少。如被其不小心刪除,可以手工建立一個ANDROID_METADATA
ANDROID_METADATA表DDL資訊如下
CREATE TABLE android_metadata(locale text);
建立完表後需插入一行資料
insertinto android_metadata(locale) values("zh_CN");
每一個 SQLite 資料庫都有一個叫SQLITE_SEQUENCE的表 裡面儲存著使用者表中的自動增長欄位的資訊
SQLITE_SEQUENCE表DDL資訊如下
CREATE TABLE SQLITE_SEQUENCE(name TEXT,seq INTEGER);