是否有一个与MySQL的DESCRIBE [表]等效的SQLite?

天大地大妈咪最大 提交于 2020-02-26 12:51:30

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


#1楼

为了防止人们对其他答案的某些评论造成误导:

  1. 如果.schemaquery from sqlite_master未提供任何输出,则表明tablename不存在,例如,这也可能是由;引起的; .schema.tables ,...或末尾的分号。或者仅仅是因为该表确实不存在。 .schema根本不起作用,这不太可能,然后应在sqlite项目中提交错误报告。

.... schema只能从命令行使用; 上面的命令>可以作为查询通过库(Python,C#等)运行。 – Mark Rushakoff 10年7月25日在21:09

  1. “只能从命令行使用”可能会误导人们。 几乎所有(可能是每一种?)编程语言都可以调用其他程序/命令。 因此,引用的注释很不幸,因为调用另一个程序(在这种情况下为sqlite比该语言为每个程序提供一个wrapper / library (它不仅容易由于整体性质而易于残缺)更受支持。程序,但也有反作用single-source principle ,使maintenance复杂化,进一步加剧了世界上的数据混乱)。

#2楼

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


#3楼

要查看所有表:

.tables

要查看特定表:

.schema [tablename]

#4楼

您是否正在寻找用于生成表的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)

#5楼

如果您使用的是图形工具。 它在表名旁边显示了架构。 如果使用DB Browser for Sqlite ,则单击以打开数据库(右上角),浏览并打开数据库,您将在下表中看到填充的信息。

右键单击record / table_name,单击copy create语句 ,然后就可以了。

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!