有没有一个SQLite等价于MySQL的DESCRIBE [table]?

gk7wooem  于 2023-02-09  发布在  SQLite
关注(0)|答案(7)|浏览(167)

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

gxwragnw

gxwragnw1#

SQLite command line utility有一个.schema TABLENAME命令,用于显示创建语句。

7fhtutme

7fhtutme2#

PRAGMA table_info([tablename]);
s4chpxco

s4chpxco3#

您是否正在寻找用于生成表的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_schematemp.sqlite_schema)限定的情况下。但为了历史兼容性,也可以识别一些替代名称,包括:

  1. sqlite_master
  2. sqlite_temp_schema
  3. sqlite_temp_master
    备选方案(2)和(3)仅适用于与每个数据库连接相关联的TEMP数据库,但备选方案(1)适用于任何地方。
wkftcu5l

wkftcu5l4#

要查看所有表格:

.tables

要查看特定表格:

.schema [tablename]
im9ewurl

im9ewurl5#

为了防止人们被对其他答案的一些评论所误导:
1.如果.schemaquery from sqlite_master没有给出任何输出,则表明tablename不存在,例如,这也可能是由于.schema.tables末尾的;分号引起的。...或者只是因为表实际上不存在。.schema不t工作是非常不可能的,然后一个错误报告应该提交在sqlite项目。
....schema只能从命令行使用;以上命令〉可以作为库(Python、C#等)查询来运行。- Mark Rushakoff 10年7月25日21:09
1.“只能从命令行使用”可能会误导人们。几乎所有(可能每种?)编程语言都可以调用其他程序/命令。因此,带引号的注解调用另一个程序是不吉利的,在本例中为sqlite,比语言为每个程序提供wrapper/library更可能得到支持(这不仅由于大量程序的本质而容易不完整,而且还在对抗X1 M10 N1 X,使X1 M11 N1 X复杂化,进一步加剧世界上数据的混乱)。

carvr3hs

carvr3hs6#

  • ". schema"可以显示*"PRAGMA"更多的表详细信息,包括 * 表约束*。

以下命令显示所有表格的详细信息

.schema

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

.schema --indent

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

.schema <table_name>

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

.schema --indent <table_name>

或者:

.schema <table_name> --indent

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

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

Buy me a coffee!!

hxzsmxv2

hxzsmxv27#

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

右键单击记录/表名,单击复制创建语句,就可以创建了。
希望它能帮助一些未能使用命令行的初学者。

相关问题