Syntax:
{EXPLAIN | DESCRIBE | DESC}
    tbl_name [col_name | wild]

{EXPLAIN | DESCRIBE | DESC}
    [explain_type] explainable_stmt

explain_type:
    EXTENDED
  | PARTITIONS
  | FORMAT = format_name

format_name:
    TRADITIONAL
  | JSON

explainable_stmt:
      SELECT statement
    | DELETE statement
    | INSERT statement
    | REPLACE statement
    | UPDATE statement

The DESCRIBE and EXPLAIN statements are synonyms. In practice, the
DESCRIBE keyword is more often used to obtain information about table
structure, whereas EXPLAIN is used to obtain a query execution plan
(that is, an explanation of how MySQL would execute a query). The
following discussion uses the DESCRIBE and EXPLAIN keywords in
accordance with those uses, but the MySQL parser treats them as
completely synonymous.

Obtaining Table Structure Information

DESCRIBE provides information about the columns in a table. It is a
shortcut for SHOW COLUMNS FROM. These statements also display
information for views. (See [HELP SHOW COLUMNS].)

col_name can be a column name, or a string containing the SQL "%" and
"_" wildcard characters to obtain output only for the columns with
names matching the string. There is no need to enclose the string
within quotation marks unless it contains spaces or other special
characters.

mysql> DESCRIBE City;
+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| Id         | int(11)  | NO   | PRI | NULL    | auto_increment |
| Name       | char(35) | NO   |     |         |                |
| Country    | char(3)  | NO   | UNI |         |                |
| District   | char(20) | YES  | MUL |         |                |
| Population | int(11)  | NO   |     | 0       |                |
+------------+----------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

The description for SHOW COLUMNS provides more information about the
output columns (see [HELP SHOW COLUMNS]).

If the data types differ from what you expect them to be based on a
CREATE TABLE statement, note that MySQL sometimes changes data types
when you create or alter a table. The conditions under which this
occurs are described in
http://dev.mysql.com/doc/refman/5.6/en/silent-column-changes.html.

The DESCRIBE statement is provided for compatibility with Oracle.

The SHOW CREATE TABLE, SHOW TABLE STATUS, and SHOW INDEX statements
also provide information about tables. See [HELP SHOW].

Obtaining Query Execution Plan Information

The EXPLAIN statement provides a way to obtain information about how
MySQL executes a statement:

o When you precede a statement with the keyword EXPLAIN, MySQL displays
  information from the optimizer about the statement execution plan.
  That is, MySQL explains how it would process the statement, including
  information about how tables are joined and in which order. EXPLAIN
  EXTENDED can be used to obtain additional information.

  As of MySQL 5.6.3, EXPLAIN provides information about SELECT, DELETE,
  INSERT, REPLACE, and UPDATE statements. Before MySQL 5.6.3, EXPLAIN
  provides information only about SELECT statements.

  For information about using EXPLAIN and EXPLAIN EXTENDED to obtain
  query execution plan information, see
  http://dev.mysql.com/doc/refman/5.6/en/using-explain.html.

o EXPLAIN PARTITIONS is useful only when examining queries involving
  partitioned tables. For details, see
  http://dev.mysql.com/doc/refman/5.6/en/partitioning-info.html.

o As of MySQL 5.6.5, the FORMAT option can be used to select the output
  format. TRADITIONAL presents the output in tabular format. This is
  the default if no FORMAT option is present. JSON format displays the
  information in JSON format. With FORMAT = JSON, the output includes
  extended and partition information.

URL: http://dev.mysql.com/doc/refman/5.6/en/explain.html

