在MySQL中,DESCRIBE 和 EXPLAIN 是同义词。可以使用两者中的任何一个来获取表结构信息或者查询执行计划(查询执行计划:对MySQL执行查询的解释)
事实上,尽管说二者是同义词。但是,DESCRIBE 更多地用于获取表结构信息;而 EXPLAIN 更多用于获取查询执行计划。

语法如下:
    {EXPLAIN | DESCRIBE | DESC}
    tbl_name [col_name | wild]
    {EXPLAIN | DESCRIBE | DESC}
    [explain_type]
    {explainable_stmt | FOR CONNECTION connection_id}
    explain_type: {
    EXTENDED
    | PARTITIONS
    | FORMAT = format_name
    }
    format_name: {
    TRADITIONAL
    | JSON
    }
    explainable_stmt: {
    SELECT statement
    | DELETE statement
    | INSERT statement
    | REPLACE statement
    | UPDATE statement
    }

mysql> DESCRIBE pet; # 列出 pet 表的所有列
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(20) | YES  |     | NULL    |       |
| owner   | varchar(20) | YES  |     | NULL    |       |
| species | varchar(20) | YES  |     | NULL    |       |
| sex     | char(1)     | YES  |     | NULL    |       |
| birth   | date        | YES  |     | NULL    |       |
| death   | date        | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.02 sec)

DESCRIBE 提供了一张表中的列的信息。

DESCRIBE is a shortcut for SHOW COLUMNS. "SHOW COLUMNS" 语法能提供更多的关于输出列的信息。

默认情况下,DESCRIBE 显示表中所有列的信息。

如果指定col_name的话,将只显示指定的列的信息。
mysql> DESCRIBE pet name; # 只显示 name 列的信息
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
1 row in set (0.02 sec)

如果指定wild的话,它应该是一个匹配字符串。可以包含 % (表示任意字符)和 _ (表示单个字符);这种情况下,输出结果将会是匹配到的列的信息。
如果列名里边没有空字符或特殊字符,wild 没有必要使用引号。
mysql> DESCRIBE pet ___; # 输出列名是三个字符的列的信息
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| sex   | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.02 sec)

mysql> DESCRIBE pet "d%"; # 输出列名是以字母d开头的列的信息
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| death | date | YES  |     | NULL    |       |
+-------+------+------+-----+---------+-------+
1 row in set (0.01 sec)
Logo

更多推荐