我刚刚开始学习SQLite.能够看到像MySQL这样的表的详细信息会很高兴DESCRIBE [table]
.PRAGMA table_info [table]
不够好,因为它只有基本信息(例如,它不显示列是否是某种类型的字段).SQLite有办法做到这一点吗?
Ned*_*der 548
在SQLite的命令行实用程序有一个.schema TABLENAME
显示你的创建语句命令.
小智 280
PRAGMA table_info([tablename]);
Run Code Online (Sandbox Code Playgroud)
Mar*_*off 113
您在寻找用于生成表的SQL吗?为此,您可以查询sqlite_master
表:
sqlite> CREATE TABLE foo (bar INT, quux TEXT);
sqlite> SELECT * FROM sqlite_master;
table|foo|foo|2|CREATE TABLE foo (bar INT, quux TEXT)
sqlite> SELECT sql FROM sqlite_master WHERE name = 'foo';
CREATE TABLE foo (bar INT, quux TEXT)
Run Code Online (Sandbox Code Playgroud)
Ros*_*der 52
要查看所有表格:
.tables
Run Code Online (Sandbox Code Playgroud)
要查看特定表格:
.schema [tablename]
Run Code Online (Sandbox Code Playgroud)
为了防止人们被其他答案的一些评论误导:
.schema
还是query from sqlite_master
没有提供任何输出,则表示不存在的tablename
,比如,这也可以由引起;
分号结束了.schema
, .tables
......或者仅仅因为表真的不存在.这.schema
不起作用是不太可能的,然后应该在sqlite项目中提交错误报告.... .schema只能在命令行中使用; 上面的命令>可以通过库(Python,C#等)作为查询运行. - Mark Rushakoff 2010年7月25日21:09
sqlite
,比语言为每个程序提供一个wrapper
/ 更有可能得到支持library
(这不仅因为那里的大量程序的性质而容易出现不完整性,但也是反作用single-source principle
,复杂化maintenance
,进一步加剧了世界数据的混乱).(作为答案,未作出评论但尚未发表评论.)
小智 5
“.schema”可以比“PRAGMA”显示更多表的详细信息,包括表约束。
下面的命令显示所有表的详细信息:
.schema
Run Code Online (Sandbox Code Playgroud)
下面的命令以格式良好的方式显示所有表的详细信息:
.schema --indent
Run Code Online (Sandbox Code Playgroud)
下面的命令显示一张表的详细信息:
.schema <table_name>
Run Code Online (Sandbox Code Playgroud)
下面的这些命令以格式良好的方式显示一个表的详细信息:
.schema --indent <table_name>
Run Code Online (Sandbox Code Playgroud)
或者:
.schema <table_name> --indent
Run Code Online (Sandbox Code Playgroud)
此外,下面的这些命令显示了有关“.schema”的详细信息:
.help .schema
Run Code Online (Sandbox Code Playgroud)
或者:
.help schema
Run Code Online (Sandbox Code Playgroud)
然后,如下所示:
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_"
Run Code Online (Sandbox Code Playgroud)