MySQL 5.1 Reference Manual  /  Tutorial  /  Getting Information About Databases and Tables

3.4 Getting Information About Databases and Tables

What if you forget the name of a database or table, or what the structure of a given table is (for example, what its columns are called)? MySQL addresses this problem through several statements that provide information about the databases and tables it supports.

You have previously seen SHOW DATABASES, which lists the databases managed by the server. To find out which database is currently selected, use the DATABASE() function:

| menagerie  |

If you have not yet selected any database, the result is NULL.

To find out what tables the default database contains (for example, when you are not sure about the name of a table), use this statement:

| Tables_in_menagerie |
| event               |
| pet                 |

The name of the column in the output produced by this statement is always Tables_in_db_name, where db_name is the name of the database. See Section, “SHOW TABLES Syntax”, for more information.

If you want to find out about the structure of a table, the DESCRIBE statement is useful; it displays information about each of a table's columns:

mysql> DESCRIBE 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    |       |

Field indicates the column name, Type is the data type for the column, NULL indicates whether the column can contain NULL values, Key indicates whether the column is indexed, and Default specifies the column's default value. Extra displays special information about columns: If a column was created with the AUTO_INCREMENT option, the value will be auto_increment rather than empty.

DESC is a short form of DESCRIBE. See Section 13.8.1, “DESCRIBE Syntax”, for more information.

You can obtain the CREATE TABLE statement necessary to create an existing table using the SHOW CREATE TABLE statement. See Section, “SHOW CREATE TABLE Syntax”.

If you have indexes on a table, SHOW INDEX FROM tbl_name produces information about them. See Section, “SHOW INDEX Syntax”, for more about this statement.

Download this Manual
User Comments
  Posted by David Macfarlane on August 12, 2011
For getting information about tables in your database, the command line program mysqlshow is very helpful.

I regularly use "mysqlshow --count database_name" to quickly inventory a database; the command returns a line for every table in the named database with the number of columns and the number of rows in each table. There's no way to get all that in one command in MySQL client. Handy, eh?
Sign Up Login You must be logged in to post a comment.