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


当前回答

查看所有表格:

.tables

要查看一个特定的表:

.schema [tablename]

其他回答

SQLite命令行实用工具有一个.schema TABLENAME命令,它向您显示创建语句。

查看所有表格:

.tables

要查看一个特定的表:

.schema [tablename]

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

右键单击record/table_name,单击copy create statement,你就有了它。

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

您正在寻找用于生成表的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可以比PRAGMA显示更多的表细节,包括表约束。

下面的命令显示所有表的详细信息:

.schema

下面的命令以良好的格式显示了所有表的详细信息:

.schema --indent

下面的命令显示了一个表的详细信息:

.schema <table_name>

下面这些命令以一种格式良好的方式显示一个表的详细信息:

.schema --indent <table_name>

Or:

.schema <table_name> --indent

此外,下面这些命令显示了关于".schema"的详细信息:

.help .schema

Or:

.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_"