This MySQL statement displays status information on a set of tables from a database.


Below is the syntax for this command. Text within square brackets (i.e, [ and ] ) are optional. Choices are separated by bars (i.e, | ). Ellipses preceded by a comma indicates a repeating pattern. Ellipses before or after syntax are used to highlight a relevant except from the larger syntax. Text displayed in italic letters represent text that should be replaced with the specific names related to the database (e.g., column with the name of the column).

SHOW TABLE STATUS [FROM database] [LIKE 'pattern']


This MySQL statement displays status information on a set of tables from a database. To obtain the status of tables from a database in MySQL other than the current default one, use the FROM clause. The results include information on all of the MySQL tables of the database unless the LIKE clause is used to limit the tables displayed by a naming pattern.


SHOW TABLE STATUS FROM human_resources 
LIKE 'employees' G

*************************** 1. row ***************************
           Name: employees
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 122
 Avg_row_length: 16384
    Data_length: 1094812
Max_data_length: 281474976710655
   Index_length: 2048
      Data_free: 0
 Auto_increment: 1145
    Create_time: 2006-08-14 21:31:36
    Update_time: 2007-03-30 07:02:17
     Check_time: 2006-08-14 21:31:36
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: max_rows=1000
        Comment: InnoDB free: 4096 kB

In this example, the number of MySQL tables is limited to one, because a specific table name is given in the LIKE clause without the % wildcard. You can change some of these variables or table options using the ALTER TABLE statement. See the page, ALTER TABLE - Table options of our MySQL documentation.

In the results of this statement, the name of the MySQL table is shown first, followed by a description of the table: The Engine field lists the type of storage engine used. The Version field gives the version number from the table's .frm file. Row_format can be Compact, Compressed, Dynamic, Fixed, or Redundant, unless it's an InnoDB table. In which case, the possibilities are Compact or Redundant. The field Rows shows the number of rows of data contained in the table. Except for MyISAM tables, this number isn't usually accurate. The Avg_row_length field gives the average length of the rows in bytes. The Data_length field gives the size of the data file in bytes. This is the same size shown at the filesystem level for the .MYD file. Max_data_length gives the maximum size allowed for the data file of the table. Index_length is the size of the index file, the .MYI file. Data_free is the space that have been allocated for the data file that is not in use at the moment. This is typically 0. The value of Auto_increment field is the value of the column that uses the AUTO_INCREMENT for the next row to be created. Create_time is the date and time the table was created; Update_time shows the time the table was last updated; and Check_time is the last date and time that the table was checked. This isn't always accurate. Collation names the collation used for sorting the table's data. Checksum provides the checksum value if there is one. NULL if not. The Create_options field lists any options and the Comment field shows any comments that were given when the table was created or altered. For InnoDB tables, the free space is given under Comment.

From the command-line, the utility mysqlshow with the --keys option can be used to show the indexes of a table:

mysqlshow --user=user --password --status database table