是否有一个等同于MySQL的DESCRIBE [table]的SQLite?

Is there an SQLite equivalent to MySQL's DESCRIBE [table]?

我刚刚开始学习SQLite。 能够查看表的详细信息会很高兴,比如MySQL的DESCRIBE [table]PRAGMA table_info [table]不够好,因为它只有基本信息(例如,它不显示列是否是某种类型的字段)。 SQLite有办法做到这一点吗?


SQLite命令行实用程序有一个.schema TABLENAME命令,显示create语句。


1
PRAGMA table_info([tablename]);


您在寻找用于生成表的SQL吗?为此,您可以查询sqlite_master表:

1
2
3
4
5
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)


要查看所有表格:

要查看特定表格:

1
.schema [tablename]

为了防止人们被其他答案的一些评论误导:

  • 如果.schemaquery from sqlite_master没有给出任何输出,则表示不存在的tablename,例如这也可能是由.schema.tables结尾的;分号引起的......或者只是因为该表确实不存在。
    .schema不起作用是不太可能的,然后应该在sqlite项目中提交错误报告。
  • ... .schema can only be used from a command line; the above commands > can be run as a query through a library (Python, C#, etc.). – Mark Rushakoff Jul 25 '10 at 21:09

  • '只能在命令行中使用'可能误导人。几乎任何(可能是每种?)编程语言都可以调用其他程序/命令。因此,引用的注释是不吉利的,因为调用另一个程序,在这种情况下是sqlite,比每个程序提供wrapper / library的语言更有可能得到支持(这不仅仅是由于大量程序的本质,但也是反作用single-source principle,使maintenance复杂化,进一步加剧了世界上的数据混乱。

  • 如果您使用的是图形工具。它会显示表名旁边的架构。对于DB Browser For Sqlite,单击打开数据库(右上角),导航并打开数据库,您将看到表中填充的信息,如下所示。

    enter image description here

    right click on the record/table_name, click on copy create statement and there you have it.

    希望它帮助一些未能使用命令行的初学者。