如果你忘记数据库或表的名字,或给定的表的结构是什么(例如,它的列叫什么),怎么办?MySQL通过提供数据库及其支持的表的信息的几个语句解决这个问题。
你已经见到了SHOW DATABASES,它列出由服务器管理的数据库。为了找出当前选择了哪个数据库,使用DATABASE( )函数:
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| menagerie |
+------------+
如果你还没选择任何数据库,结果是NULL。
为了找出当前的数据库包含什么表(例如,当你不能确定一个表的名字),使用这个命令:
mysql> SHOW TABLES;
+---------------------+
| Tables_in_menagerie |
+---------------------+
| event |
| pet |
+---------------------+
这个语句产生的结果中的列名通常是Tables_in_db_name,db_name是数据库的名字。 更多信息请查看 Section 13.7.5.38, “SHOW TABLES Syntax”。
如果你想要知道一个表的结构,可以使用DESCRIBE命令;它显示表中每个列的信息:
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显示列名,Type表示列的类型,NULL表示这个列是否包含NULL值,Key表示这列是否作为索引,Default指定了这列的默认值。Extra显示关于这列的特殊信息:如果某一列创建的时候附加了AUTO_INCREMENT选项,那么它的值就会auto_increment而不是空。
DESC是DESCRIBE的简写形式。更多内容请查看 Section 13.8.1, “DESCRIBE Syntax”.
为了创建一个已经存在的表,使用SHOW CREATE TABLE 语句可以得到 它的CREATE TABLE语句。 请查看 Section 13.7.5.12, “SHOW CREATE TABLE Syntax”.
如果表有索引,SHOW INDEX FROM tbl_name生成有关索引的信息. 更多内容查看 Section 13.7.5.23, “SHOW INDEX Syntax”.