2011-08-02 36 views
1

對於我想知道我的數據庫,即哪些表在我的數據庫結合,對於被包括列的每個表等我怎樣才能接收SQLite數據庫佈局?

sqlite_master表僅包含表信息的佈局的向後兼容性的目的。理論上,我可以通過SQLite API訪問這些元數據信息,如sqlite3_column_database_name,sqlite3_column_table_name,sqlite3_column_origin_name

我能有直接SQL查詢接收這個數據,或者在內部存儲?

+0

的SQLITE_MASTER表包含哪些表有說明。它沒有列出你實際使用的表或列; SQLite根本不理解。 –

+0

我可以不清楚地解釋:我不想知道「我實際使用的是哪些表格或列」,我希望得到「有哪些表格的描述」以及哪些**列表包含在這些列表中表。 – Ilia

回答

3

那麼它不是stricly講SQL,可被訪問 SQL中的所有源碼實現我所知道的:

http://www.sqlite.org/pragma.html#pragma_table_info

一個例子:

sqlite> .headers on 
sqlite> .mode column 
sqlite> CREATE TABLE foo (id INTEGER PRIMARY KEY AUTOINCREMENT, text1 TEXT NOT NULL, text2 TEXT, boolean1 BOOLEAN NOT NULL); 
sqlite> pragma table_info('foo'); 
cid   name  type  notnull  dflt_value pk   
---------- ---------- ---------- ---------- ---------- ---------- 
0   id   INTEGER  0      1   
1   text1  TEXT  1      0   
2   text2  TEXT  0      0   
3   boolean1 BOOLEAN  1      0   
+0

非常感謝。這是我正在尋找的,這種方法的工作原理! – Ilia

+0

感謝.mode列正是我正在尋找使選擇結果易於閱讀 – zhihong

0

我想收到「有什麼表格的描述」

我很確定你的意思是什麼。

您可以通過.schema獲取重新創建架構所需的SQL語句。

sqlite> .schema 
CREATE TABLE a (n integer); 
CREATE TABLE b (n integer); 

此外,.dump會給你那些相同的SQL語句,這將增加INSERT statments再現數據。

如果你想要的部分只是表的列表,那麼.tables將爲你做。

Documentation(向下滾動到「特殊命令。」)

+0

_.schema_和_.tables_只是'SELECT sql FROM sqlite_master;'和'SELECT name FROM sqlite_master WHERE type ='的快捷方式表';'相應地(當然實際使用的語句更復雜 - 檢查你的[參考](http://www.sqlite.org/sqlite.html) – Ilia

相關問題