1. 程式人生 > >sqlite系統表介紹(查詢資料庫中所有的表 查詢表中的所有欄位)

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  table_info(student)

注意 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);