對於我想知道我的數據庫,即哪些表在我的數據庫結合,對於被包括列的每個表等我怎樣才能接收SQLite數據庫佈局?
的sqlite_master
表僅包含表信息的佈局的向後兼容性的目的。理論上,我可以通過SQLite API訪問這些元數據信息,如sqlite3_column_database_name
,sqlite3_column_table_name
,sqlite3_column_origin_name
。
我能有直接SQL查詢接收這個數據,或者在內部存儲?
對於我想知道我的數據庫,即哪些表在我的數據庫結合,對於被包括列的每個表等我怎樣才能接收SQLite數據庫佈局?
的sqlite_master
表僅包含表信息的佈局的向後兼容性的目的。理論上,我可以通過SQLite API訪問這些元數據信息,如sqlite3_column_database_name
,sqlite3_column_table_name
,sqlite3_column_origin_name
。
我能有直接SQL查詢接收這個數據,或者在內部存儲?
那麼它不是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
我想收到「有什麼表格的描述」
我很確定你的意思是什麼。
您可以通過.schema
獲取重新創建架構所需的SQL語句。
sqlite> .schema
CREATE TABLE a (n integer);
CREATE TABLE b (n integer);
此外,.dump
會給你那些相同的SQL語句,這將增加INSERT statments再現數據。
如果你想要的部分只是表的列表,那麼.tables
將爲你做。
Documentation(向下滾動到「特殊命令。」)
_.schema_和_.tables_只是'SELECT sql FROM sqlite_master;'和'SELECT name FROM sqlite_master WHERE type ='的快捷方式表';'相應地(當然實際使用的語句更復雜 - 檢查你的[參考](http://www.sqlite.org/sqlite.html) – Ilia
的SQLITE_MASTER表包含哪些表有說明。它沒有列出你實際使用的表或列; SQLite根本不理解。 –
我可以不清楚地解釋:我不想知道「我實際使用的是哪些表格或列」,我希望得到「有哪些表格的描述」以及哪些**列表包含在這些列表中表。 – Ilia