MySQL 描述表

2025 年 8 月 18 日 | 阅读 7 分钟

DESCRIBE 的意思是详细地显示信息。由于我们在 MySQL 中有表,因此我们将使用 DESCRIBE 命令来显示表的结构,例如列名、列上的约束等。DESC 命令是 DESCRIBE 命令的简写。DESCRIBE 和 DESC 命令都是等效的,并且区分大小写。

如何在 MySQL 中描述表?

MySQL 中一个有用的 数据定义语言 (DDL) 命令是 DESCRIBE TABLE。它非常适合检查表的结构。用户可以看到有关 约束数据类型、列和其他特征的信息。它提供了表结构的总体概述。我们需要学习数据类型、索引的类型和的类型来理解 MySQL 中的 DESCRIBE TABLE。

语法

以下是显示表结构的语法

我们可以使用以下步骤显示表的所有列:

步骤 1:登录到 MySQL 数据库服务器。

步骤 2:切换到特定数据库。

步骤 3:执行 DESCRIBE 语句。

让我们通过一个示例来理解如何显示所选数据库中表的列。

登录到 MySQL 数据库

第一步是使用用户名密码登录到数据库服务器。我们应该看到如下图像的输出


MySQL DESCRIBE TABLE

切换到特定数据库

下一步是打开一个特定的数据库,您想从中显示表信息,使用以下查询。查询执行后,我们应该看到以下输出


MySQL DESCRIBE TABLE

执行 DESCRIBE 语句

这是显示表信息的最后一步。在执行 DESCRIBE 语句之前,我们可以使用 SHOW TABLES 语句选择性地显示我们所选数据库中存储的所有表


MySQL DESCRIBE TABLE

例如,如果我们想显示 customer 表的结构,请执行以下语句。成功执行后,它将给出如下图像的输出


MySQL DESCRIBE TABLE

说明

以下是输出的简要说明

  • cust_id:int 列 cust_id 不能为 NULL (NO)。作为主键 (PRI),它保证每条记录都有一个唯一的客户 ID。除非提供,否则 NULL 是默认值。
  • name:最多可存储 35 个字符的 varchar(35)。接受 NULL 值 (YES)。
  • occupation:一个可以容纳最多 25 个字符的列,varchar(25)。它接受 NULL。
  • age:此 int 列可以存储数字年龄值,也接受 NULL。

我们也可以使用 DESC 语句进行练习,它是 DESCRIBE 命令的简写。请看下面的输出

MySQL DESCRIBE TABLE

如何在 MySQL Workbench 中显示表信息?

要在 MySQL Workbench 中显示表的列信息,我们首先需要启动 Workbench 工具,并使用用户名和密码登录到 MySQL 数据库服务器。我们将看到以下屏幕

MySQL DESCRIBE TABLE

现在执行以下步骤来显示表信息

1. 转到导航选项卡并单击模式菜单。在这里,我们可以看到所有已创建的数据库。从模式菜单下选择任何数据库,例如mysqltestdb。它将弹出可以在下图所示的多个选项。

MySQL DESCRIBE TABLE

2. 接下来,单击“”,它会显示 mysqltestdb 数据库中存储的所有表。选择一个您想显示其列信息的表。然后,将鼠标悬停在该表上,它将显示三个图标。请看下图

MySQL DESCRIBE TABLE

现在,单击红色矩形框中显示的图标 (i)。它将显示以下图像

MySQL DESCRIBE TABLE

最后,单击“”菜单以显示表结构。

MySQL DESCRIBE TABLE

MySQL SHOW COLUMNS 命令

MySQL 还允许使用 SHOW COLUMNS 命令显示表结构。这是获取表列信息的更灵活的方式。

语法

以下是 SHOW COLUMNS 命令的语法

例如,如果我们执行以下查询,我们将获得特定数据库中表的全部列信息


MySQL DESCRIBE TABLE

虽然它们以不同的方式完成,但“Describe Customer”和“Show Columns from Customer”都提供有关“Customers”表的信息。“Show Columns from Customer”选项以表格形式显示信息。它显示字段名、键、默认值、数据类型(如果为空)等。作为替代,“Describe Customer”提供一个简单的列表。此列表无法显示像“Show Columns”那样重要的信息。因此,用户必须在详细表和基本列表之间进行选择。然而,这两个命令通常会产生可比的结果。

如果我们想显示来自另一个数据库的表的列信息,或者当前数据库中不存在的表,我们可以使用以下查询

在下图,我们可以看到我们使用了 mysqltestdb 数据库。但是我们显示了来自另一个数据库的表的列信息,而无需切换到当前数据库。

MySQL DESCRIBE TABLE

如果我们想显示更多列信息,我们需要在 SHOW TABLES 语句中添加 FULL 关键字,如下所示

例如,以下 SQL 查询列出了mystudentdb 数据库student_info 表的所有列

执行后,我们可以看到此命令将collation、privileges、defaultcomment 列添加到结果集中。

MySQL DESCRIBE TABLE

MySQL EXPLAIN

EXPLAIN 关键字是 DESCRIBE 语句的同义词,它用于获取有关 MySQL 如何执行查询的信息。它可以与 INSERTSELECTDELETEUPDATEREPLACE 查询一起使用。从MySQL 8.0.19 及更高版本开始,它还可以与 TABLE 语句一起使用。当我们在此类查询中使用此关键字时,它将处理该语句并提供有关表如何连接、表的顺序、估计的分区和行数的信息。

为了查看表的结构,包括列名、数据类型、键和默认值,请使用 MySQL 的 DESCRIBE 命令。另一方面,EXPLAIN 命令检查 MySQL 如何运行查询,并显示连接类型、索引和执行策略。性能分析和查询优化是 EXPLAIN 的主要用途,而 DESCRIBE 则侧重于模式详细信息。

示例

如果我们想显示SELECT 语句的执行计划,我们可以使用如下查询

输出

此查询产生以下信息

MySQL DESCRIBE TABLE

说明

上述命令显示了 MySQL 打算如何执行该查询。由于 id 为 1,因此在此实例中它是一个单独的查询块。select_type 为 SIMPLE 表明没有 UNION 操作或子查询。table 列表示查询可以访问 customer 表。type 值 ALL 的使用导致全表扫描,这是最低效的方法,因为每一行都被读取。如 possible_keys 和 key 为 NULL 所证明的,未考虑或使用 索引。如果 filtered 值是 100.00,MySQL 预测它将扫描七个文件,然后每一行都满足查询的要求。由于 Extra 列为 NULL,因此没有使用特殊操作,如 WHERE 或索引。

DESCRIBE 的缺点

  • 信息有限:只显示基本信息,如列名、数据类型、可空性、键和默认值。
  • 无外键详细信息:它不显示表之间的引用约束或外键
  • 信息不完整:显示主键,但未提供索引及其属性的完整详细信息。
  • 表级属性缺失:存储引擎字符集、排序规则和分区信息不可见。
  • 无触发器或高级元数据:DESCRIBE 不提供事件触发器或复杂的约束信息。

总结

MySQL 的 DESCRIBE 或 DESC 命令是一种获取表结构信息(包括列名、数据类型和约束)的有用方法。在登录到 MySQL 服务器并选择数据库后,必须使用您想要描述的表名来执行 DESCRIBE 命令。DESCRIBE 命令的输出包括每个表列的名称、类型和可空性列。为了获取表结构信息,您可以将 DESCRIBE 命令与 SHOW COLUMNS 命令结合使用,后者会产生更全面的输出以及其他详细信息。MySQL Workbench 提供了一个方便的图形用户界面 (GUI) 来显示表信息,包括列及其详细信息。

常见问题

1. MySQL 使用 DESCRIBE 语句的原因是什么?

MySQL 的 DESCRIBE 语句允许您通过提供有关其列名、数据类型、默认值以及是否允许 NULL 值的信息来快速查看表结构。在不查看整个表创建脚本的情况下,它可以帮助数据库管理员和开发人员了解数据是如何组织的。使用未知数据库或解决不当数据处理引起的问题尤其需要这一点。

2. SHOW COLUMNS 与 DESCRIBE 有何区别?

尽管 DESCRIBE 和 SHOW COLUMNS 只是实现相同目标的两种方法,但它们都产生有关表结构的类似信息。一些开发人员出于兼容性原因使用 SHOW COLUMNS,而另一些开发人员则更喜欢 DESCRIBE,因为它输入更短。它们具有相同的功能,并提供有关表列和约束的相同信息。

3. DESCRIBE 有助于优化查询吗?

虽然 DESCRIBE 不能直接优化查询,但它对于查询规划至关重要。通过了解每列的精确数据类型、索引和约束,您可以编写更有效的查询,避免不必要的转换,并确保正确的连接。如果您对模式布局有先验了解,就可以做出间接提高查询性能的设计选择。

4. phpMyAdmin 和其他图形工具是否支持 DESCRIBE?

Dbeaver、MySQL Workbench 和 phpMyAdmin 等图形数据库工具提供了与 DESCRIBE 类似的功能。无需输入任何命令,您就可以在 phpMyAdmin 中通过打开数据库、单击表并选择“结构”选项卡来查看相同的数据。这简化了那些更喜欢使用图形用户界面而不是命令行界面的用户。


下一主题MySQL 删除表