为了向后兼容的目的,我想知道我的数据库的布局,即哪些表包含在我的数据库中,每个表包含哪些列等等。
sqlite_master
表仅包含表信息。从理论上讲,我可以通过SQLite API访问此元数据信息,例如sqlite3_column_database_name
,sqlite3_column_table_name
,sqlite3_column_origin_name
。
我是否可以直接 SQL查询来接收此数据,或者将其存储在内部?
答案 0 :(得分:3)
嗯,严格来说不是SQL,但是在我知道的所有sqlite实现中它都可以作为 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
答案 1 :(得分:0)
我想收到“有关表格的描述”
我很确定你的意思。
您可以使用.schema
获取重新创建架构所需的SQL语句。
sqlite> .schema
CREATE TABLE a (n integer);
CREATE TABLE b (n integer);
此外,.dump
将为您提供相同的SQL语句,并且它将添加INSERT语句以重现数据。
如果您想要的部分只是一个表格列表,那么.tables
将为您做到这一点。
Documentation(向下滚动到“特殊命令...”)