minerk 2019-11-09
如果你忘记了数据库或表的名称,或者给定表的结构是什么(例如,它的列被称为什么),该怎么办?MySQL通过几个语句来解决这个问题,这些语句提供有关它支持的数据库和表的信息。
你之前已经看过SHOW DATABASES
,它列出了服务器管理的数据库,要找出当前选择的数据库,请使用DATABASE()
函数:
mysql> SELECT DATABASE(); +------------+ | DATABASE() | +------------+ | menagerie | +------------+
如果尚未选择任何数据库,则结果为NULL
。
要找出默认数据库包含的表(例如,当你不确定表的名称时),请使用以下语句:
mysql> SHOW TABLES; +---------------------+ | Tables_in_menagerie | +---------------------+ | event | | pet | +---------------------+
此语句生成的输出中的列名称始终为Tables_in_db_name
,其中db_name
是数据库的名称。
如果要了解表的结构,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
的简短形式。
你可以使用SHOW CREATE TABLE
语句获取创建现有表所需的CREATE TABLE
语句。
如果表上有索引,则SHOW INDEX FROM tbl_name
会生成有关它们的信息。