3.4 Getting Information About Databases and Tables
如果你忘记了数据库和表是什么名字,或指定的table是什么结构(例如,列的名字叫什么)? MySQL通过几条提供语句来提供数据库和表信息来定位这样的问题。
你在之前看到了SHOW DATABASES, 可以列出由server管理的数据库。来找出当前选择了哪个数据库,使用DATABASE()函数:
mysql> select database();
+------------+
| database() |
+------------+
| menagerie |
+------------+
如果你还没有选择任何的数据库,那么返回的结果是NULL
找出默认的数据库包含哪些表(例如,当你不确定表名时),使用下面的语句:
mysql> show tables;
+---------------------+
| Tables_in_menagerie |
+---------------------+
| event |
| pet |
+---------------------+
此语句产生的输出列的名字总是Tables_in_db_name,db_name是数据库的名字。查看13.7.5.37章,获取更多的信息。
如果你想找出表的结构,DESCRIBE语句是很有用的;他展示了表中每列的信息
mysql> desc 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.01 sec)
Field表示列的名字,Type是列的类型,NULL表示此列能否包含NULL值,Key表示此列是否是索引,Default指定了列的默认值。Extra展示了此列的特殊信息:如果创建时具有AUTO_INCREMENT选项,那么此列的值将会是auto_increment而不是空的。
DESC是DESCRIBLE的简写形式。查看Section 13.8.1 "DESCRIBE Syntax",来获取更详细的信息。
你必要时可以获取创建表的信息通过使用CREATE TABLE语句。查阅 13.7.5.10 "SHOW CREATE TABLE Syntax".
如果在表上有索引,SHOW INDEX FROM tb1_name产生关于索引的信息。查看Section 13.7.5.22 "SHOW INDEX Syntax",获取更多关于此语句的信息。