“describe table”查询结果的最清晰排序方法是什么?

16

我正在处理“描述表”输出,以显示字段及其类型的列表,我希望我的主键能够在列表顶部。 我认为没有办法使用SQL(例如'order by')对描述结果进行排序,而只能在PHP中进行排序。

你们觉得呢? 谢谢


如果您感兴趣的话,我在这个答案中编写了一个描述所有表。您可以通过退出他们的cmd并进入这种灵活的方式来更改order by - Drew
3个回答

22

当你使用 SHOW COLUMNS 或者 DESCRIBE TABLE 命令时,实际上是在使用内置的特殊数据库 INFORMATION_SCHEMA 来获取一个指定表格的信息。有趣的是,它似乎无法将返回的信息以表格的形式呈现,因此这些函数返回的数据不能像表格一样进行排序、子查询等操作。

幸运的是,你可以设置自己的查询来执行与 SHOWDESCRIBE 相同的查找:

select
    COLUMN_NAME as "Field",
    COLUMN_TYPE as "Type",
    IS_NULLABLE as "Null",
    COLUMN_KEY as "Key",
    COLUMN_DEFAULT as "Default",
    EXTRA as "Extra"
from
    INFORMATION_SCHEMA.COLUMNS
where
    TABLE_NAME = 'my table' and
    TABLE_SCHEMA = 'my database'

-- add ordering --
order by COLUMN_TYPE;

2
提醒一下运行此程序的人:请确保将“'table'”替换为您想要描述的表的名称,“'database'”替换为它所在的数据库的名称。 - jesseplymale

3

你说得没错。MySQL 总是按照它们在表数据中实际存储的顺序输出列。

你可以在表内移动列,以便主键首先出现,但这将需要 MySQL 锁定表并以新顺序重写整个数据。这几乎永远不值得。

如果你只是想呈现漂亮的输出,而不管表的实际结构如何,你确实可以在 PHP 中对列进行排序,可以使用简单的usort()调用。


-3

不要使用描述,而是使用大多数数据库管理系统提供的模式信息表。然后,您可以使用简单的选择语句来获取您的信息。


1
这基本上是在说“在谷歌上搜索模式信息表”。提供一个链接、代码或任何与MySQL相关的具体内容会更有帮助。 - Tyler Collier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接