我刚开始学习SQLite,希望能够像MySQL的DESCRIBE [table]
一样查看表的详细信息。但是PRAGMA table_info [table]
并不够好,因为它只提供基本信息(例如,它不显示列是否是某种字段)。SQLite有没有类似的方法呢?
SQLite命令行工具 提供了一个 .schema TABLENAME
命令,可以显示创建表的语句。
PRAGMA table_info([tablename]);
.schema tablename
。 - tybro0103PRAGMA table_info [table]
不够好,因为它只有基本信息(例如,它不显示列是否是某种字段)。” - Matthew你是否在寻找用于生成表格的SQL语句?如果是,你可以查询 sqlite_schema表:
sqlite> CREATE TABLE foo (bar INT, quux TEXT);
sqlite> SELECT * FROM sqlite_schema;
table|foo|foo|2|CREATE TABLE foo (bar INT, quux TEXT)
sqlite> SELECT sql FROM sqlite_schema WHERE name = 'foo';
CREATE TABLE foo (bar INT, quux TEXT)
替代名称
模式表总是可以使用名称
sqlite_schema
进行引用,特别是当被模式名称如main.sqlite_schema
或者temp.sqlite_schema
修饰时。但是出于历史兼容性的考虑,也会识别一些替代名称,包括:
sqlite_master
sqlite_temp_schema
sqlite_temp_master
替代方案(2)和(3)仅适用于与每个数据库连接关联的 TEMP 数据库,但替代方案(1)可在任何地方使用。
.schema foo
和这个有什么不同吗? - Matthew.schema
只能在命令行中使用;而上述命令可以通过库(例如 Python、C#)作为查询来运行。 - Mark Rushakoff.tables
查看特定的表:
.schema [tablename]
.schema TABLENAME
。 - Payel Senapatitablename
是一个可选参数。 - luckman212为了防止其他答案的评论误导人们:
.schema
或从sqlite_master查询
没有任何输出,则表示不存在tablename
,例如这也可能是由于;
在.schema
,。表格
结尾,...或仅因为表格确实不存在。那么.schema
无法正常工作就不太可能,此时应向sqlite项目提交错误报告。... .schema只能从命令行使用;上述命令可以通过库(Python,C#等)运行为查询。-Mark Rushakoff Jul 25 '10 at 21:09
sqlite
,更有可能得到支持,而不是语言提供每个程序的wrapper
/ library
(由于存在大量的程序,这种方法不仅容易出现不完整性,而且还违反了单一来源原则,增加了维护的难度,进一步混乱了全球数据)。 .schema
.schema --indent
.schema <table_name>
.schema --indent <table_name>
.schema <table_name> --indent
.help .schema
或者:
.help schema
那么,它看起来是这样的:
sqlite> .help .schema
.schema ?PATTERN? Show the CREATE statements matching PATTERN
Options:
--indent Try to pretty-print the schema
--nosys Omit objects whose names start with "sqlite_"